Path: blob/main/crates/c-api/src/sharedmemory.rs
1692 views
use crate::{handle_result, wasm_memorytype_t, wasmtime_error_t};1use std::cell::UnsafeCell;2use wasmtime::SharedMemory;34type wasmtime_sharedmemory_t = SharedMemory;56wasmtime_c_api_macros::declare_own!(wasmtime_sharedmemory_t);78#[unsafe(no_mangle)]9#[cfg(feature = "threads")]10pub extern "C" fn wasmtime_sharedmemory_new(11engine: &crate::wasm_engine_t,12ty: &wasm_memorytype_t,13ret: &mut *mut wasmtime_sharedmemory_t,14) -> Option<Box<wasmtime_error_t>> {15handle_result(16SharedMemory::new(&engine.engine, ty.ty().ty.clone()),17|mem| *ret = Box::<wasmtime_sharedmemory_t>::into_raw(Box::new(mem)),18)19}2021#[unsafe(no_mangle)]22pub extern "C" fn wasmtime_sharedmemory_clone(23mem: &wasmtime_sharedmemory_t,24) -> Box<wasmtime_sharedmemory_t> {25Box::new(mem.clone())26}2728#[unsafe(no_mangle)]29pub extern "C" fn wasmtime_sharedmemory_type(30mem: &wasmtime_sharedmemory_t,31) -> Box<wasm_memorytype_t> {32Box::new(wasm_memorytype_t::new(mem.ty()))33}3435#[unsafe(no_mangle)]36pub extern "C" fn wasmtime_sharedmemory_data(37mem: &wasmtime_sharedmemory_t,38) -> *const UnsafeCell<u8> {39mem.data().as_ptr()40}4142#[unsafe(no_mangle)]43pub extern "C" fn wasmtime_sharedmemory_data_size(mem: &wasmtime_sharedmemory_t) -> usize {44mem.data().len()45}4647#[unsafe(no_mangle)]48pub extern "C" fn wasmtime_sharedmemory_size(mem: &wasmtime_sharedmemory_t) -> u64 {49mem.size()50}5152#[unsafe(no_mangle)]53pub extern "C" fn wasmtime_sharedmemory_grow(54mem: &wasmtime_sharedmemory_t,55delta: u64,56prev_size: &mut u64,57) -> Option<Box<wasmtime_error_t>> {58handle_result(mem.grow(delta), |prev| *prev_size = prev)59}606162