#[cfg(not(feature = "all-one-shot"))]
pub(crate) mod spin {
pub type RawSpinMutex = spinning_top::RawSpinlock<spinning_top::relax::Backoff>;
pub type SpinMutex<T> = lock_api::Mutex<RawSpinMutex, T>;
pub type SpinMutexGuard<'a, T> = lock_api::MutexGuard<'a, RawSpinMutex, T>;
}
#[cfg(feature = "all-one-shot")]
pub(crate) mod spin {
pub use one_shot_mutex::{
OneShotMutex as SpinMutex, OneShotMutexGuard as SpinMutexGuard,
RawOneShotMutex as RawSpinMutex,
};
}
#[cfg(not(feature = "all-one-shot"))]
pub(crate) mod ticket;
#[cfg(feature = "all-one-shot")]
pub(crate) mod ticket {
pub use one_shot_mutex::{
OneShotMutex as TicketMutex, OneShotMutexGuard as TicketMutexGuard,
RawOneShotMutex as RawTicketMutex,
};
}
use interrupt_mutex::RawInterruptMutex;
use one_shot_mutex::RawOneShotMutex;
use spin::RawSpinMutex;
use ticket::RawTicketMutex;
pub type RawInterruptOneShotMutex = RawInterruptMutex<RawOneShotMutex>;
pub type InterruptOneShotMutex<T> = lock_api::Mutex<RawInterruptOneShotMutex, T>;
pub type InterruptOneShotMutexGuard<'a, T> = lock_api::MutexGuard<'a, RawInterruptOneShotMutex, T>;
pub type RawInterruptSpinMutex = RawInterruptMutex<RawSpinMutex>;
pub type InterruptSpinMutex<T> = lock_api::Mutex<RawInterruptSpinMutex, T>;
pub type InterruptSpinMutexGuard<'a, T> = lock_api::MutexGuard<'a, RawInterruptSpinMutex, T>;
pub type RawInterruptTicketMutex = RawInterruptMutex<RawTicketMutex>;
pub type InterruptTicketMutex<T> = lock_api::Mutex<RawInterruptTicketMutex, T>;
pub type InterruptTicketMutexGuard<'a, T> = lock_api::MutexGuard<'a, RawInterruptTicketMutex, T>;