Expand description
Synchronization objects used by Starnix
Re-exports§
pub use crate::LockBefore;
pub use crate::LockEqualOrBefore;
pub use crate::LockFor;
pub use crate::RwLockFor;
Macros§
- This macro takes a definition of the lock ordering graph in the form of lock_ordering!{ Unlocked -> A, A -> B, Unlocked -> C, }
Structs§
- An atomic wrapper around
zx::MonotonicInstant
. - A guard object to enforce that clients call
begin_wait
beforeblock_until
. - A blocking object that can either be notified normally or interrupted
- Enforcement mechanism for lock ordering.
- A wrapper for mutex that requires a
Locked
context to acquire. This context must be of a level that precedesL
in the lock ordering graph whereL
is a level associated with this mutex. - A wrapper for an RwLock that requires a
Locked
context to acquire. This context must be of a level that precedesL
in the lock ordering graph whereL
is a level associated with this RwLock. - A wrapper around a
zx::Port
that optimizes for the case where events are signaled within a process.
Enums§
- The kind of notification.
- The result of a call to [
PortEvent.wait
]. - “Highest” lock level
- A description of why a
block_until
returned without the event being notified.
Traits§
- Marker trait that indicates that
Self
can be locked afterA
. - Marker trait that indicates that
Self
is an ancestor ofX
. - Marker trait that indicates that
Self
isX
or an ancestor ofX
. - Describes how to apply a lock type to the implementing type.
- Describes how to acquire reader and writer locks to the implementing type.
Functions§
- Lock two OrderedMutex of the same level in the consistent order. Returns both guards and a new locked context.
- Lock
m1
andm2
in a consistent order (using the memory address of m1 and m2 and returns the associated guard. This ensure thatordered_lock(m1, m2)
andordered_lock(m2, m1)
will not deadlock.