Compiler Atomics, Volatile Access & Fences
include/compiler/atomic.h View source View on GitHubMacros
Section titled “Macros”ca_read_once
Section titled “ca_read_once”#define ca_read_once(x) source Expansion
#define ca_read_once(x) (*(const volatile typeof(x) *) &(x)) ca_write_once
Section titled “ca_write_once”#define ca_write_once(x, val) source Expansion
#define ca_write_once(x, val) \
do { \
*(volatile typeof(x) *) &(x) = (val); \
} while (0) Compiler optimization barrier
ca_barrier
Section titled “ca_barrier”#define ca_barrier() source Expansion
#define ca_barrier() asm volatile("" ::: "memory") ca_rmb
Section titled “ca_rmb”ca_wmb
Section titled “ca_wmb”ca_pause
Section titled “ca_pause”ca_pause
Section titled “ca_pause”ca_pause
Section titled “ca_pause”#define ca_pause() source Expansion
#define ca_pause() ca_barrier()