31 lines · plain
1C cmpxchg-fail-ordered-22 3(*4 * Result: Never5 *6 * Demonstrate use of smp_mb__after_atomic() to make a failing cmpxchg7 * operation have acquire ordering.8 *)9 10{}11 12P0(int *x, int *y)13{14 int r1;15 16 WRITE_ONCE(*x, 1);17 r1 = cmpxchg(y, 0, 1);18}19 20P1(int *x, int *y)21{22 int r1;23 int r2;24 25 r1 = cmpxchg(y, 0, 1);26 smp_mb__after_atomic();27 r2 = READ_ONCE(*x);28}29 30exists (0:r1=0 /\ 1:r1=1 /\ 1:r2=0)31