use crate::arch::wasm32; use crate::convert::TryInto; use crate::sync::atomic::AtomicI32; use crate::time::Duration; pub fn futex_wait(futex: &AtomicI32, expected: i32, timeout: Option) { let timeout = timeout.and_then(|t| t.as_nanos().try_into().ok()).unwrap_or(-1); unsafe { wasm32::memory_atomic_wait32(futex as *const AtomicI32 as *mut i32, expected, timeout); } } pub fn futex_wake(futex: &AtomicI32) { unsafe { wasm32::memory_atomic_notify(futex as *const AtomicI32 as *mut i32, 1); } }