| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- * Copyright (C) 2019 Intel Corporation. All rights reserved.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- */
- #ifndef _WASM_SHARED_MEMORY_H
- #define _WASM_SHARED_MEMORY_H
- #include "bh_common.h"
- #include "../interpreter/wasm_runtime.h"
- #include "wasm_runtime_common.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- extern korp_mutex g_shared_memory_lock;
- bool
- wasm_shared_memory_init(void);
- void
- wasm_shared_memory_destroy(void);
- uint16
- shared_memory_inc_reference(WASMMemoryInstance *memory);
- uint16
- shared_memory_dec_reference(WASMMemoryInstance *memory);
- #define shared_memory_is_shared(memory) memory->is_shared_memory
- #define shared_memory_lock(memory) \
- do { \
- /* \
- * Note: exception logic is currently abusing this lock. \
- * cf. \
- * https://github.com/bytecodealliance/wasm-micro-runtime/issues/2407 \
- */ \
- bh_assert(memory != NULL); \
- if (memory->is_shared_memory) \
- os_mutex_lock(&g_shared_memory_lock); \
- } while (0)
- #define shared_memory_unlock(memory) \
- do { \
- if (memory->is_shared_memory) \
- os_mutex_unlock(&g_shared_memory_lock); \
- } while (0)
- uint32
- wasm_runtime_atomic_wait(WASMModuleInstanceCommon *module, void *address,
- uint64 expect, int64 timeout, bool wait64);
- uint32
- wasm_runtime_atomic_notify(WASMModuleInstanceCommon *module, void *address,
- uint32 count);
- #ifdef __cplusplus
- }
- #endif
- #endif /* end of _WASM_SHARED_MEMORY_H */
|