1C cmpxchg-fail-ordered-2 2 3(* 4 * Result: Never 5 * 6 * Demonstrate use of smp_mb__after_atomic() to make a failing cmpxchg 7 * 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