C C-MP+o-wmb-o+o-rmb-o.litmus { } P0(int *a, int *b) { WRITE_ONCE(*a, 1); smp_wmb(); WRITE_ONCE(*b, 1); } P1(int *a, int *b) { int r1; int r2; r1 = READ_ONCE(*b); smp_rmb(); r2 = READ_ONCE(*a); } exists (1:r1=1 /\ 1:r2=0)