Implement module instance context APIs (#2436)
Introduce module instance context APIs which can set one or more contexts created
by the embedder for a wasm module instance:
```C
wasm_runtime_create_context_key
wasm_runtime_destroy_context_key
wasm_runtime_set_context
wasm_runtime_set_context_spread
wasm_runtime_get_context
```
And make libc-wasi use it and set wasi context as the first context bound to the wasm
module instance.
Also add samples.
Refer to https://github.com/bytecodealliance/wasm-micro-runtime/issues/2460.
This commit is contained in:
@ -68,6 +68,36 @@ bool
|
||||
wasm_native_unregister_natives(const char *module_name,
|
||||
NativeSymbol *native_symbols);
|
||||
|
||||
#if WASM_ENABLE_MODULE_INST_CONTEXT != 0
|
||||
struct WASMModuleInstanceCommon;
|
||||
|
||||
void *
|
||||
wasm_native_create_context_key(
|
||||
void (*dtor)(struct WASMModuleInstanceCommon *inst, void *ctx));
|
||||
|
||||
void
|
||||
wasm_native_destroy_context_key(void *key);
|
||||
|
||||
void
|
||||
wasm_native_set_context(struct WASMModuleInstanceCommon *inst, void *key,
|
||||
void *ctx);
|
||||
void
|
||||
wasm_native_set_context_spread(struct WASMModuleInstanceCommon *inst, void *key,
|
||||
void *ctx);
|
||||
void *
|
||||
wasm_native_get_context(struct WASMModuleInstanceCommon *inst, void *key);
|
||||
|
||||
void
|
||||
wasm_native_call_context_dtors(struct WASMModuleInstanceCommon *inst);
|
||||
|
||||
void
|
||||
wasm_native_inherit_contexts(struct WASMModuleInstanceCommon *child,
|
||||
struct WASMModuleInstanceCommon *parent);
|
||||
#else /* WASM_ENABLE_MODULE_INST_CONTEXT */
|
||||
#define wasm_native_call_context_dtors(inst) (void)(inst)
|
||||
#define wasm_native_inherit_contexts(child, parent) (void)(parent)
|
||||
#endif /* WASM_ENABLE_MODULE_INST_CONTEXT */
|
||||
|
||||
bool
|
||||
wasm_native_init();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user