| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /*
- * Copyright (C) 2019 Intel Corporation. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
- #ifndef __WAMR_PAL_API_H__
- #define __WAMR_PAL_API_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * WAMR PAL API version number
- */
- #define WAMR_PAL_VERSION 2
- /*
- * @brief Get version of WAMR PAL API
- *
- * @retval If > 0, then success; otherwise, it is an invalid version.
- */
- int
- wamr_pal_get_version(void);
- /*
- * WAMR PAL attributes
- */
- typedef struct wamr_pal_attr {
- // WAMR instance directory.
- //
- // The default value is "."; that is, the current working directory
- const char *instance_dir;
- // Log level.
- //
- // Specifies the log verbose level (0 to 5, default is 2)
- // large level with more log
- //
- const char *log_level;
- } wamr_pal_attr_t;
- /* clang-format off */
- #define WAMR_PAL_ATTR_INITVAL { \
- .instance_dir = ".", \
- .log_level = 2 \
- }
- /* clang-format on */
- /*
- * The struct which consists of file descriptors of standard I/O
- */
- typedef struct wamr_stdio_fds {
- int stdin_fd;
- int stdout_fd;
- int stderr_fd;
- } wamr_stdio_fds_t;
- /*
- * The struct which consists of arguments needed by wamr_pal_create_process
- */
- struct wamr_pal_create_process_args {
- // Path to new process.
- //
- // The path of the command which will be created as a new process.
- //
- // Mandatory field. Must not be NULL.
- const char *path;
- // Arguments array pass to new process.
- //
- // The arguments to the command. By convention, the argv[0] should be the
- // program name. And the last element of the array must be NULL to indicate
- // the length of array.
- //
- // Mandatory field. Must not be NULL.
- const char **argv;
- // Untrusted environment variable array pass to new process.
- //
- // The untrusted env vars to the command. And the last element of the array
- // must be NULL to indicate the end of the array.
- //
- // Optional field.
- const char **env;
- // File descriptors of the redirected standard I/O (i.e., stdin, stdout,
- // stderr)
- //
- // If set to NULL, will use the original standard I/O file descriptors.
- //
- // Optional field.
- const struct wamr_stdio_fds *stdio;
- // Output. Pid of new process in libos.
- //
- // If wamr_pal_create_process returns success, pid of the new process will
- // be updated.
- //
- // Mandatory field. Must not be NULL.
- int *pid;
- };
- /*
- * The struct which consists of arguments needed by wamr_pal_exec
- */
- struct wamr_pal_exec_args {
- // Pid of new process created with wamr_pal_create_process.
- //
- // Mandatory field.
- int pid;
- // Output. The exit status of the command. The semantic of
- // this value follows the one described in wait(2) man
- // page. For example, if the program terminated normally,
- // then WEXITSTATUS(exit_status) gives the value returned
- // from a main function.
- //
- // Mandatory field. Must not be NULL.
- int *exit_value;
- };
- int
- wamr_pal_init(const struct wamr_pal_attr *args);
- int
- wamr_pal_create_process(struct wamr_pal_create_process_args *args);
- int
- wamr_pal_destroy(void);
- int
- wamr_pal_exec(struct wamr_pal_exec_args *args);
- int
- wamr_pal_kill(int pid, int sig);
- int
- pal_get_version(void);
- int
- pal_init(const struct wamr_pal_attr *attr);
- int
- pal_create_process(struct wamr_pal_create_process_args *args);
- int
- pal_exec(struct wamr_pal_exec_args *args);
- int
- pal_kill(int pid, int sig);
- int
- pal_destroy(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __WAMR_PAL_API_H__ */
|