barrier/
lib.rs

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}