#[cfg(has_virtual_memory)]
pub const WASMTIME_PROT_READ: u32 = 1 << 0;
#[cfg(has_virtual_memory)]
pub const WASMTIME_PROT_WRITE: u32 = 1 << 1;
#[cfg(has_virtual_memory)]
pub const WASMTIME_PROT_EXEC: u32 = 1 << 2;
#[cfg(has_virtual_memory)]
pub use WASMTIME_PROT_EXEC as PROT_EXEC;
#[cfg(has_virtual_memory)]
pub use WASMTIME_PROT_READ as PROT_READ;
#[cfg(has_virtual_memory)]
pub use WASMTIME_PROT_WRITE as PROT_WRITE;
#[cfg(has_native_signals)]
#[expect(non_camel_case_types, reason = "matching C conventions")]
pub type wasmtime_trap_handler_t =
extern "C" fn(ip: usize, fp: usize, has_faulting_addr: bool, faulting_addr: usize);
#[cfg(has_virtual_memory)]
#[expect(non_camel_case_types, reason = "matching C conventions")]
pub enum wasmtime_memory_image {}
unsafe extern "C" {
#[cfg(has_virtual_memory)]
pub fn wasmtime_mmap_new(size: usize, prot_flags: u32, ret: &mut *mut u8) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_mmap_remap(addr: *mut u8, size: usize, prot_flags: u32) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_munmap(ptr: *mut u8, size: usize) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_mprotect(ptr: *mut u8, size: usize, prot_flags: u32) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_page_size() -> usize;
#[cfg(has_native_signals)]
pub fn wasmtime_init_traps(handler: wasmtime_trap_handler_t) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_memory_image_new(
ptr: *const u8,
len: usize,
ret: &mut *mut wasmtime_memory_image,
) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_memory_image_map_at(
image: *mut wasmtime_memory_image,
addr: *mut u8,
len: usize,
) -> i32;
#[cfg(has_virtual_memory)]
pub fn wasmtime_memory_image_free(image: *mut wasmtime_memory_image);
pub fn wasmtime_tls_get() -> *mut u8;
pub fn wasmtime_tls_set(ptr: *mut u8);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_lock_free(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_lock_acquire(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_lock_release(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_rwlock_read(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_rwlock_read_release(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_rwlock_write(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_rwlock_write_release(lock: *mut usize);
#[cfg(has_custom_sync)]
pub fn wasmtime_sync_rwlock_free(lock: *mut usize);
}