]> git.lizzy.rs Git - rust.git/blob - library/std/src/sys/wasm/atomics/futex.rs
Rollup merge of #87453 - ibraheemdev:i-68697, r=wesleywiser
[rust.git] / library / std / src / sys / wasm / atomics / futex.rs
1 use crate::arch::wasm32;
2 use crate::convert::TryInto;
3 use crate::sync::atomic::AtomicI32;
4 use crate::time::Duration;
5
6 pub fn futex_wait(futex: &AtomicI32, expected: i32, timeout: Option<Duration>) {
7     let timeout = timeout.and_then(|t| t.as_nanos().try_into().ok()).unwrap_or(-1);
8     unsafe {
9         wasm32::memory_atomic_wait32(futex as *const AtomicI32 as *mut i32, expected, timeout);
10     }
11 }
12
13 pub fn futex_wake(futex: &AtomicI32) {
14     unsafe {
15         wasm32::memory_atomic_notify(futex as *const AtomicI32 as *mut i32, 1);
16     }
17 }