sync.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. mod arcswap;
  2. mod condvar;
  3. mod locked;
  4. pub mod semaphore;
  5. pub use eonix_sync::{Guard, Lock, Spin, SpinStrategy};
  6. #[no_mangle]
  7. pub extern "C" fn r_preempt_disable() {
  8. eonix_preempt::disable();
  9. }
  10. #[no_mangle]
  11. pub extern "C" fn r_preempt_enable() {
  12. eonix_preempt::enable();
  13. }
  14. #[no_mangle]
  15. pub extern "C" fn r_preempt_count() -> usize {
  16. eonix_preempt::count()
  17. }
  18. pub type Mutex<T> = Lock<T, semaphore::SemaphoreStrategy<1>>;
  19. #[allow(dead_code)]
  20. pub type Semaphore<T> = Lock<T, semaphore::SemaphoreStrategy>;
  21. pub type RwSemaphore<T> = Lock<T, semaphore::RwSemaphoreStrategy>;
  22. #[allow(dead_code)]
  23. pub type SpinGuard<'lock, T> = Guard<'lock, T, SpinStrategy, SpinStrategy, true>;
  24. #[allow(dead_code)]
  25. pub type MutexGuard<'lock, T> =
  26. Guard<'lock, T, semaphore::SemaphoreStrategy<1>, semaphore::SemaphoreStrategy<1>, true>;
  27. #[allow(dead_code)]
  28. pub type SemGuard<'lock, T> =
  29. Guard<'lock, T, semaphore::SemaphoreStrategy, semaphore::SemaphoreStrategy, true>;
  30. #[allow(dead_code)]
  31. pub type RwSemReadGuard<'lock, T> =
  32. Guard<'lock, T, semaphore::RwSemaphoreStrategy, semaphore::RwSemaphoreStrategy, false>;
  33. #[allow(dead_code)]
  34. pub type RwSemWriteGuard<'lock, T> =
  35. Guard<'lock, T, semaphore::RwSemaphoreStrategy, semaphore::RwSemaphoreStrategy, true>;
  36. pub type CondVar = condvar::CondVar<true>;
  37. pub type UCondVar = condvar::CondVar<false>;
  38. pub use arcswap::ArcSwap;
  39. pub use locked::{AsRefMutPosition, AsRefPosition, Locked, RefMutPosition, RefPosition};