33 lines · plain
1C SB+fencembonceonces2 3(*4 * Result: Never5 *6 * This litmus test demonstrates that full memory barriers suffice to7 * order the store-buffering pattern, where each process writes to the8 * variable that the preceding process reads. (Locking and RCU can also9 * suffice, but not much else.)10 *)11 12{}13 14P0(int *x, int *y)15{16 int r0;17 18 WRITE_ONCE(*x, 1);19 smp_mb();20 r0 = READ_ONCE(*y);21}22 23P1(int *x, int *y)24{25 int r0;26 27 WRITE_ONCE(*y, 1);28 smp_mb();29 r0 = READ_ONCE(*x);30}31 32exists (0:r0=0 /\ 1:r0=0)33