1use std::sync::atomic::{self, fence, Ordering};
2
3#[inline(always)]
4pub fn barrier() {
5 atomic::compiler_fence(Ordering::SeqCst);
6}
7
8#[inline(always)]
9pub fn smp_mb() {
10 barrier();
11 fence(Ordering::SeqCst);
12}
13
14#[inline(always)]
15pub fn smp_mb_release() {
16 barrier();
17 fence(Ordering::Release);
18}
19
20#[inline(always)]
21pub fn smp_mb_acquire() {
22 barrier();
23}
24
25#[inline(always)]
26pub fn smp_mb_placeholder() {
27 smp_mb();
28}
29
30#[inline(always)]
31pub fn smp_mb_global() {
32 smp_mb();
33}