Create a placeholder for WASI threads implementation (#1783)
This a simpler version of the PR: https://github.com/bytecodealliance/wasm-micro-runtime/pull/1638
This commit is contained in:
@ -161,6 +161,10 @@
|
||||
#define WASM_ENABLE_LIB_PTHREAD_SEMAPHORE 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_LIB_WASI_THREADS
|
||||
#define WASM_ENABLE_LIB_WASI_THREADS 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_BASE_LIB
|
||||
#define WASM_ENABLE_BASE_LIB 0
|
||||
#endif
|
||||
|
||||
@ -53,6 +53,11 @@ uint32
|
||||
get_lib_pthread_export_apis(NativeSymbol **p_lib_pthread_apis);
|
||||
#endif
|
||||
|
||||
#if WASM_ENABLE_LIB_WASI_THREADS != 0
|
||||
uint32
|
||||
get_lib_wasi_threads_export_apis(NativeSymbol **p_lib_wasi_threads_apis);
|
||||
#endif
|
||||
|
||||
uint32
|
||||
get_libc_emcc_export_apis(NativeSymbol **p_libc_emcc_apis);
|
||||
|
||||
@ -383,7 +388,7 @@ wasm_native_init()
|
||||
|| WASM_ENABLE_BASE_LIB != 0 || WASM_ENABLE_LIBC_EMCC != 0 \
|
||||
|| WASM_ENABLE_LIB_RATS != 0 || WASM_ENABLE_WASI_NN != 0 \
|
||||
|| WASM_ENABLE_APP_FRAMEWORK != 0 || WASM_ENABLE_LIBC_WASI != 0 \
|
||||
|| WASM_ENABLE_LIB_PTHREAD != 0
|
||||
|| WASM_ENABLE_LIB_PTHREAD != 0 || WASM_ENABLE_LIB_WASI_THREADS != 0
|
||||
NativeSymbol *native_symbols;
|
||||
uint32 n_native_symbols;
|
||||
#endif
|
||||
@ -438,6 +443,14 @@ wasm_native_init()
|
||||
goto fail;
|
||||
#endif
|
||||
|
||||
#if WASM_ENABLE_LIB_WASI_THREADS != 0
|
||||
n_native_symbols = get_lib_wasi_threads_export_apis(&native_symbols);
|
||||
if (n_native_symbols > 0
|
||||
&& !wasm_native_register_natives("wasi", native_symbols,
|
||||
n_native_symbols))
|
||||
goto fail;
|
||||
#endif
|
||||
|
||||
#if WASM_ENABLE_LIBC_EMCC != 0
|
||||
n_native_symbols = get_libc_emcc_export_apis(&native_symbols);
|
||||
if (n_native_symbols > 0
|
||||
@ -466,7 +479,7 @@ wasm_native_init()
|
||||
|| WASM_ENABLE_BASE_LIB != 0 || WASM_ENABLE_LIBC_EMCC != 0 \
|
||||
|| WASM_ENABLE_LIB_RATS != 0 || WASM_ENABLE_WASI_NN != 0 \
|
||||
|| WASM_ENABLE_APP_FRAMEWORK != 0 || WASM_ENABLE_LIBC_WASI != 0 \
|
||||
|| WASM_ENABLE_LIB_PTHREAD != 0
|
||||
|| WASM_ENABLE_LIB_PTHREAD != 0 || WASM_ENABLE_LIB_WASI_THREADS != 0
|
||||
fail:
|
||||
wasm_native_destroy();
|
||||
return false;
|
||||
|
||||
11
core/iwasm/libraries/lib-wasi-threads/lib_wasi_threads.cmake
Normal file
11
core/iwasm/libraries/lib-wasi-threads/lib_wasi_threads.cmake
Normal file
@ -0,0 +1,11 @@
|
||||
# Copyright (C) 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
|
||||
set (LIB_WASI_THREADS_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
|
||||
add_definitions (-DWASM_ENABLE_LIB_WASI_THREADS=1)
|
||||
|
||||
include_directories(${LIB_WASI_THREADS_DIR})
|
||||
|
||||
set (LIB_WASI_THREADS_SOURCE
|
||||
${LIB_WASI_THREADS_DIR}/lib_wasi_threads_wrapper.c)
|
||||
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright (C) 2022 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
*/
|
||||
|
||||
#include "wasmtime_ssp.h"
|
||||
|
||||
#if WASM_ENABLE_INTERP != 0
|
||||
#include "wasm_runtime.h"
|
||||
#endif
|
||||
|
||||
#if WASM_ENABLE_AOT != 0
|
||||
#include "aot_runtime.h"
|
||||
#endif
|
||||
|
||||
static __wasi_errno_t
|
||||
thread_spawn_wrapper(wasm_exec_env_t exec_env, void *start_arg)
|
||||
{
|
||||
return __WASI_ENOSYS;
|
||||
}
|
||||
|
||||
/* clang-format off */
|
||||
#define REG_NATIVE_FUNC(func_name, signature) \
|
||||
{ #func_name, func_name##_wrapper, signature, NULL }
|
||||
/* clang-format on */
|
||||
|
||||
static NativeSymbol native_symbols_lib_wasi_threads[] = { REG_NATIVE_FUNC(
|
||||
thread_spawn, "(*)i") };
|
||||
|
||||
uint32
|
||||
get_lib_wasi_threads_export_apis(NativeSymbol **p_lib_wasi_threads_apis)
|
||||
{
|
||||
*p_lib_wasi_threads_apis = native_symbols_lib_wasi_threads;
|
||||
return sizeof(native_symbols_lib_wasi_threads) / sizeof(NativeSymbol);
|
||||
}
|
||||
Reference in New Issue
Block a user