1#[doc(hidden)]
8pub(crate) mod bridge;
9mod context;
10#[cfg(feature = "lockdep")]
11pub(crate) mod lockdep;
12pub(crate) mod mutex;
13mod spin;
14
15#[cfg(feature = "lockdep")]
16pub use {
17 self::lockdep::LockSubclass, self::lockdep::dump_lockdep_trace,
18 self::lockdep::set_lockdep_trace_enabled,
19};
20
21pub use self::mutex::{
22 InterruptibleMutexExt, LockdepMutexExt, Mutex, MutexGuard, PiMutexLockInterrupted, RawMutex,
23};
24#[cfg(not(feature = "lockdep"))]
25pub type LockSubclass = u32;
26#[cfg(not(feature = "lockdep"))]
27pub const fn set_lockdep_trace_enabled(_enabled: bool) {}
28#[cfg(not(feature = "lockdep"))]
29pub const fn dump_lockdep_trace() {}
30
31pub use self::context::{
32 IrqReturnPreemptGuard, IrqSaveGuard, PreemptGuard, PreemptIrqSaveGuard, hardirq_enter,
33 hardirq_exit,
34};
35pub use crate::sync::spin::{
36 RawIrqSaveMutex, RawSpinLockGuard, RawSpinRwLockReadGuard, RawSpinRwLockWriteGuard, SpinLock,
37 SpinLockGuard, SpinLockIrqSaveGuard, SpinRwLock, SpinRwLockIrqSaveReadGuard,
38 SpinRwLockIrqSaveWriteGuard, SpinRwLockReadGuard, SpinRwLockWriteGuard,
39};
40
41pub type IrqMutex<T> = lock_api::Mutex<RawIrqSaveMutex, T>;
43
44pub use crate::sync::wait_queue::{
45 WaitQueue, WaitQueueRegistration, WaitQueueWakeOutcome, WaitQueueWakeToken,
46 wait_until_registered,
47};
48
49pub mod irq;
50
51pub mod membarrier;
52
53pub(crate) mod wait_queue;