diff options
| author | Paul Menage <menage@gmail.com> | 2024-10-17 12:21:53 -0700 |
|---|---|---|
| committer | Paul Menage <menage@gmail.com> | 2024-10-17 12:21:53 -0700 |
| commit | cf7ff15a0ddfe0713dd794cd39eb3b3b58ba8d27 (patch) | |
| tree | 4b14a1e05b6fca5c17fc010616fc9547ac143651 /library/std/src/sys/sync/mutex/futex.rs | |
| parent | 3a85d3fa785d95a7b7bcf4f160b67bffba7afd4a (diff) | |
| download | rust-cf7ff15a0ddfe0713dd794cd39eb3b3b58ba8d27.tar.gz rust-cf7ff15a0ddfe0713dd794cd39eb3b3b58ba8d27.zip | |
Abstract the state type for futexes
In the same way that we expose SmallAtomic and SmallPrimitive to allow
Windows to use a value other than an AtomicU32 for its futex state, this
patch switches the primary futex state type from AtomicU32 to
futex::Atomic. The futex::Atomic type should be usable as an atomic
value with underlying primitive type equal to futex::Primitive.
This allows supporting the futex API on systems where the underlying
kernel futex implementation requires more state than simply an
AtomicU32.
All in-tree futex implementations simply define {Atomic,Primitive}
directly as {AtomicU32,u32}.
Diffstat (limited to 'library/std/src/sys/sync/mutex/futex.rs')
| -rw-r--r-- | library/std/src/sys/sync/mutex/futex.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/library/std/src/sys/sync/mutex/futex.rs b/library/std/src/sys/sync/mutex/futex.rs index 81afa94b147..ce9b2daa5f8 100644 --- a/library/std/src/sys/sync/mutex/futex.rs +++ b/library/std/src/sys/sync/mutex/futex.rs @@ -1,11 +1,11 @@ use crate::sync::atomic::Ordering::{Acquire, Relaxed, Release}; use crate::sys::futex::{self, futex_wait, futex_wake}; -type Atomic = futex::SmallAtomic; +type Futex = futex::SmallFutex; type State = futex::SmallPrimitive; pub struct Mutex { - futex: Atomic, + futex: Futex, } const UNLOCKED: State = 0; @@ -15,7 +15,7 @@ const CONTENDED: State = 2; // locked, and other threads waiting (contended) impl Mutex { #[inline] pub const fn new() -> Self { - Self { futex: Atomic::new(UNLOCKED) } + Self { futex: Futex::new(UNLOCKED) } } #[inline] |
