smp_store_mb
#define smp_store_mb(x, v) do { (void)xchg(&(x), v); } while (0)
#define smp_store_mb(x, v) do { WRITE_ONCE(x, v); smp_mb(); } while (0)