shared heap: Fix some issues and add basic unit test case (#3801)
Fix some issues and add basic unit test case for shared heap feature. Signed-off-by: wenlingyun1 <wenlingyun1@xiaomi.com>
This commit is contained in:
@ -323,11 +323,9 @@ typedef enum {
|
||||
WASM_LOG_LEVEL_VERBOSE = 4
|
||||
} log_level_t;
|
||||
|
||||
#if WASM_ENABLE_SHARED_HEAP != 0
|
||||
typedef struct SharedHeapInitArgs {
|
||||
uint32 size;
|
||||
uint32_t size;
|
||||
} SharedHeapInitArgs;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Initialize the WASM runtime environment, and also initialize
|
||||
@ -2119,21 +2117,21 @@ wasm_runtime_detect_native_stack_overflow_size(wasm_exec_env_t exec_env,
|
||||
WASM_RUNTIME_API_EXTERN bool
|
||||
wasm_runtime_is_underlying_binary_freeable(const wasm_module_t module);
|
||||
|
||||
#if WASM_ENABLE_SHARED_HEAP != 0
|
||||
/**
|
||||
* Create a shared heap
|
||||
*
|
||||
* @param init_args the initialization arguments
|
||||
* @param error_buf buffer to output the error info if failed
|
||||
* @param error_buf_size the size of the error buffer
|
||||
* @return the shared heap created
|
||||
*/
|
||||
WASM_RUNTIME_API_EXTERN wasm_shared_heap_t
|
||||
wasm_runtime_create_shared_heap(SharedHeapInitArgs *init_args, char *error_buf,
|
||||
uint32 error_buf_size);
|
||||
wasm_runtime_create_shared_heap(SharedHeapInitArgs *init_args);
|
||||
|
||||
/**
|
||||
* Attach a shared heap to a module instance
|
||||
*
|
||||
* @param module_inst the module instance
|
||||
* @param shared_heap the shared heap
|
||||
* @return true if success, false if failed
|
||||
*/
|
||||
WASM_RUNTIME_API_EXTERN bool
|
||||
wasm_runtime_attach_shared_heap(wasm_module_inst_t module_inst,
|
||||
@ -2141,6 +2139,7 @@ wasm_runtime_attach_shared_heap(wasm_module_inst_t module_inst,
|
||||
|
||||
/**
|
||||
* Detach a shared heap from a module instance
|
||||
*
|
||||
* @param module_inst the module instance
|
||||
*/
|
||||
WASM_RUNTIME_API_EXTERN void
|
||||
@ -2148,22 +2147,29 @@ wasm_runtime_detach_shared_heap(wasm_module_inst_t module_inst);
|
||||
|
||||
/**
|
||||
* Allocate memory from a shared heap
|
||||
*
|
||||
* @param module_inst the module instance
|
||||
* @param size required memory size
|
||||
* @param p_native_addr native address of allocated memory
|
||||
*
|
||||
* @return return the allocated memory address, which re-uses part of the wasm
|
||||
* address space and is in the range of [UINT32 - shared_heap_size + 1, UINT32]
|
||||
* (when the wasm memory is 32-bit) or [UINT64 - shared_heap_size + 1, UINT64]
|
||||
* (when the wasm memory is 64-bit). Note that it is not an absolute address.
|
||||
* Return non-zero if success, zero if failed.
|
||||
*/
|
||||
WASM_RUNTIME_API_EXTERN uint64
|
||||
wasm_runtime_shared_heap_malloc(wasm_module_inst_t module_inst, uint64 size,
|
||||
WASM_RUNTIME_API_EXTERN uint64_t
|
||||
wasm_runtime_shared_heap_malloc(wasm_module_inst_t module_inst, uint64_t size,
|
||||
void **p_native_addr);
|
||||
|
||||
/**
|
||||
* Free the memory allocated from shared heap
|
||||
*
|
||||
* @param module_inst the module instance
|
||||
* @param ptr the offset in wasm app
|
||||
*/
|
||||
WASM_RUNTIME_API_EXTERN void
|
||||
wasm_runtime_shared_heap_free(wasm_module_inst_t module_inst, uint64 ptr);
|
||||
#endif
|
||||
wasm_runtime_shared_heap_free(wasm_module_inst_t module_inst, uint64_t ptr);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user