mod event;
mod parker;
mod spin;
mod strict_provenance;
mod waiter;
pub(crate) use self::{
spin::SpinWait,
strict_provenance::{invalid_mut, AtomicPtrRmw, StrictProvenance},
waiter::Waiter,
};
use std::sync::atomic::{fence, AtomicPtr, Ordering};
#[inline]
pub(crate) fn fence_acquire<T>(ptr: &AtomicPtr<T>) {
if cfg!(usync_tsan_enabled) {
let _ = ptr.load(Ordering::Acquire);
} else {
fence(Ordering::Acquire);
}
}