mod arcswap; mod condvar; mod locked; pub mod semaphore; pub use eonix_sync::{Guard, Lock, Spin, SpinStrategy}; #[no_mangle] pub extern "C" fn r_preempt_disable() { eonix_preempt::disable(); } #[no_mangle] pub extern "C" fn r_preempt_enable() { eonix_preempt::enable(); } #[no_mangle] pub extern "C" fn r_preempt_count() -> usize { eonix_preempt::count() } pub type Mutex = Lock>; #[allow(dead_code)] pub type Semaphore = Lock; pub type RwSemaphore = Lock; #[allow(dead_code)] pub type SpinGuard<'lock, T> = Guard<'lock, T, SpinStrategy, SpinStrategy, true>; #[allow(dead_code)] pub type MutexGuard<'lock, T> = Guard<'lock, T, semaphore::SemaphoreStrategy<1>, semaphore::SemaphoreStrategy<1>, true>; #[allow(dead_code)] pub type SemGuard<'lock, T> = Guard<'lock, T, semaphore::SemaphoreStrategy, semaphore::SemaphoreStrategy, true>; #[allow(dead_code)] pub type RwSemReadGuard<'lock, T> = Guard<'lock, T, semaphore::RwSemaphoreStrategy, semaphore::RwSemaphoreStrategy, false>; #[allow(dead_code)] pub type RwSemWriteGuard<'lock, T> = Guard<'lock, T, semaphore::RwSemaphoreStrategy, semaphore::RwSemaphoreStrategy, true>; pub type CondVar = condvar::CondVar; pub type UCondVar = condvar::CondVar; pub use arcswap::ArcSwap; pub use locked::{AsRefMutPosition, AsRefPosition, Locked, RefMutPosition, RefPosition};