Skip to main content

Crate rustix_futex_sync

Crate rustix_futex_sync 

Source
Expand description

rustix-futex-sync

Linux futex-based synchronization

Github Actions CI Status zulip chat crates.io page docs.rs docs

Linux futex-based implementations of Mutex, RwLock, Condvar, Once, and OnceLock, as well as RawMutex, RawRwLock, and RawCondvar, derived from the futex code in std, factored out to a standalone no_std crate using rustix to do the futex and lock_api to provide most of the public Mutex and RwLock API.

lock_api does not support poisoning, so support for poisoning is omitted.

In this library, Condvar, RawCondvar, RawMutex, and Once are guaranteed to be repr(transparent) wrappers around a single AtomicU32. RawRwLock is guaranteed to be a repr(C) wrapper around two AtomicU32s. The contents of these AtomicU32s are not documented, except that all these types’ const fn new() and INIT are guaranteed to initialize them to all zeros.

These types use the FUTEX_PRIVATE_FLAG flag so they don’t work for synchronizing in memory shared between multiple processes. Enabling the “shm” feature enables the shm module, which contains shared-memory versions of all the main types.

Re-exports§

pub use lock_api;lock_api

Modules§

generic
Types and traits with a const SHM: bool> generic paramters.
shmshm
Shared-memory API.

Structs§

OnceState
State yielded to Once::call_once_force()’s closure parameter. The state can be used to query the poison status of the Once.
WaitTimeoutResultlock_api
A type indicating whether a timed wait on a condition variable returned due to a time out or not.

Type Aliases§

Condvarlock_api
MappedMutexGuardlock_api
MappedRwLockReadGuardlock_api
MappedRwLockWriteGuardlock_api
Mutexlock_api
MutexGuardlock_api
Once
OnceLock
RawCondvar
RawMutex
RawRwLock
ReentrantMutexatomic_usize
ReentrantMutexGuardatomic_usize
RwLocklock_api
RwLockReadGuardlock_api
RwLockWriteGuardlock_api