left_right/sync.rs
1#[cfg(loom)]
2pub(crate) use loom::sync::atomic::{AtomicPtr, AtomicUsize, Ordering};
3#[cfg(loom)]
4pub(crate) use loom::sync::{Arc, Mutex, MutexGuard};
5#[cfg(loom)]
6pub(crate) fn fence(ord: Ordering) {
7 if let Ordering::Acquire = ord {
8 } else {
9 // FIXME: loom only supports acquire fences at the moment.
10 // https://github.com/tokio-rs/loom/issues/117
11 // let's at least not panic...
12 // this may generate some false positives (`SeqCst` is stronger than `Acquire`
13 // for example), and some false negatives (`Relaxed` is weaker than `Acquire`),
14 // but it's the best we can do for the time being.
15 }
16 loom::sync::atomic::fence(Ordering::Acquire)
17}
18
19#[cfg(not(loom))]
20pub(crate) use std::sync::atomic::{fence, AtomicPtr, AtomicUsize, Ordering};
21#[cfg(not(loom))]
22pub(crate) use std::sync::{Arc, Mutex, MutexGuard};