Skip to content

Commit 2ae7f69

Browse files
committed
add a few api to configure wasi via InstantiationArgs2
1 parent a65e478 commit 2ae7f69

3 files changed

Lines changed: 145 additions & 0 deletions

File tree

core/iwasm/common/wasm_runtime_common.c

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1715,6 +1715,82 @@ wasm_runtime_instantiation_args_set_max_memory_pages(
17151715
p->v1.max_memory_pages = v;
17161716
}
17171717

1718+
void
1719+
wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p,
1720+
char *argv[], int argc)
1721+
{
1722+
WASIArguments *wasi_args = &p->wasi;
1723+
1724+
wasi_args->argv = argv;
1725+
wasi_args->argc = (uint32)argc;
1726+
wasi_args->set_by_user = true;
1727+
}
1728+
1729+
void
1730+
wasm_runtime_instantiation_args_set_wasi_env(struct InstantiationArgs2 *p,
1731+
const char *env[],
1732+
uint32 env_count)
1733+
{
1734+
WASIArguments *wasi_args = &p->wasi;
1735+
1736+
wasi_args->env = env;
1737+
wasi_args->env_count = env_count;
1738+
wasi_args->set_by_user = true;
1739+
}
1740+
1741+
void
1742+
wasm_runtime_instantiation_args_set_wasi_dir(struct InstantiationArgs2 *p,
1743+
const char *dir_list[],
1744+
uint32 dir_count,
1745+
const char *map_dir_list[],
1746+
uint32 map_dir_count)
1747+
{
1748+
WASIArguments *wasi_args = &p->wasi;
1749+
1750+
wasi_args->dir_list = dir_list;
1751+
wasi_args->dir_count = dir_count;
1752+
wasi_args->map_dir_list = map_dir_list;
1753+
wasi_args->map_dir_count = map_dir_count;
1754+
wasi_args->set_by_user = true;
1755+
}
1756+
1757+
void
1758+
wasm_runtime_instantiation_args_set_wasi_stdio(struct InstantiationArgs2 *p,
1759+
int64 stdinfd, int64 stdoutfd,
1760+
int64 stderrfd)
1761+
{
1762+
WASIArguments *wasi_args = &p->wasi;
1763+
1764+
wasi_args->stdio[0] = (os_raw_file_handle)stdinfd;
1765+
wasi_args->stdio[1] = (os_raw_file_handle)stdoutfd;
1766+
wasi_args->stdio[2] = (os_raw_file_handle)stderrfd;
1767+
wasi_args->set_by_user = true;
1768+
}
1769+
1770+
void
1771+
wasm_runtime_instantiation_args_set_wasi_addr_pool(struct InstantiationArgs2 *p,
1772+
const char *addr_pool[],
1773+
uint32 addr_pool_size)
1774+
{
1775+
WASIArguments *wasi_args = &p->wasi;
1776+
1777+
wasi_args->addr_pool = addr_pool;
1778+
wasi_args->addr_count = addr_pool_size;
1779+
wasi_args->set_by_user = true;
1780+
}
1781+
1782+
void
1783+
wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool(
1784+
struct InstantiationArgs2 *p, const char *ns_lookup_pool[],
1785+
uint32 ns_lookup_pool_size)
1786+
{
1787+
WASIArguments *wasi_args = &p->wasi;
1788+
1789+
wasi_args->ns_lookup_pool = ns_lookup_pool;
1790+
wasi_args->ns_lookup_count = ns_lookup_pool_size;
1791+
wasi_args->set_by_user = true;
1792+
}
1793+
17181794
WASMModuleInstanceCommon *
17191795
wasm_runtime_instantiate_ex2(WASMModuleCommon *module,
17201796
const struct InstantiationArgs2 *args,

core/iwasm/common/wasm_runtime_common.h

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,43 @@ void
736736
wasm_runtime_instantiation_args_set_max_memory_pages(
737737
struct InstantiationArgs2 *p, uint32 v);
738738

739+
/* See wasm_export.h for description */
740+
WASM_RUNTIME_API_EXTERN void
741+
wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p,
742+
char *argv[], int argc);
743+
744+
/* See wasm_export.h for description */
745+
WASM_RUNTIME_API_EXTERN void
746+
wasm_runtime_instantiation_args_set_wasi_env(struct InstantiationArgs2 *p,
747+
const char *env[],
748+
uint32 env_count);
749+
750+
/* See wasm_export.h for description */
751+
WASM_RUNTIME_API_EXTERN void
752+
wasm_runtime_instantiation_args_set_wasi_dir(struct InstantiationArgs2 *p,
753+
const char *dir_list[],
754+
uint32 dir_count,
755+
const char *map_dir_list[],
756+
uint32 map_dir_count);
757+
758+
/* See wasm_export.h for description */
759+
WASM_RUNTIME_API_EXTERN void
760+
wasm_runtime_instantiation_args_set_wasi_stdio(struct InstantiationArgs2 *p,
761+
int64 stdinfd, int64 stdoutfd,
762+
int64 stderrfd);
763+
764+
/* See wasm_export.h for description */
765+
WASM_RUNTIME_API_EXTERN void
766+
wasm_runtime_instantiation_args_set_wasi_addr_pool(struct InstantiationArgs2 *p,
767+
const char *addr_pool[],
768+
uint32 addr_pool_size);
769+
770+
/* See wasm_export.h for description */
771+
WASM_RUNTIME_API_EXTERN void
772+
wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool(
773+
struct InstantiationArgs2 *p, const char *ns_lookup_pool[],
774+
uint32 ns_lookup_pool_size);
775+
739776
/* See wasm_export.h for description */
740777
WASM_RUNTIME_API_EXTERN WASMModuleInstanceCommon *
741778
wasm_runtime_instantiate_ex2(WASMModuleCommon *module,

core/iwasm/include/wasm_export.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,38 @@ WASM_RUNTIME_API_EXTERN void
764764
wasm_runtime_instantiation_args_set_max_memory_pages(
765765
struct InstantiationArgs2 *p, uint32_t v);
766766

767+
WASM_RUNTIME_API_EXTERN void
768+
wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p,
769+
char *argv[], int argc);
770+
771+
WASM_RUNTIME_API_EXTERN void
772+
wasm_runtime_instantiation_args_set_wasi_env(struct InstantiationArgs2 *p,
773+
const char *env[],
774+
uint32_t env_count);
775+
776+
WASM_RUNTIME_API_EXTERN void
777+
wasm_runtime_instantiation_args_set_wasi_dir(struct InstantiationArgs2 *p,
778+
const char *dir_list[],
779+
uint32_t dir_count,
780+
const char *map_dir_list[],
781+
uint32_t map_dir_count);
782+
783+
WASM_RUNTIME_API_EXTERN void
784+
wasm_runtime_instantiation_args_set_wasi_stdio(struct InstantiationArgs2 *p,
785+
int64_t stdinfd,
786+
int64_t stdoutfd,
787+
int64_t stderrfd);
788+
789+
WASM_RUNTIME_API_EXTERN void
790+
wasm_runtime_instantiation_args_set_wasi_addr_pool(struct InstantiationArgs2 *p,
791+
const char *addr_pool[],
792+
uint32_t addr_pool_size);
793+
794+
WASM_RUNTIME_API_EXTERN void
795+
wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool(
796+
struct InstantiationArgs2 *p, const char *ns_lookup_pool[],
797+
uint32_t ns_lookup_pool_size);
798+
767799
/**
768800
* Instantiate a WASM module, with specified instantiation arguments
769801
*

0 commit comments

Comments
 (0)