1*1c27b644SPaul E. McKenneyC Z6.0+pooncelock+pooncelock+pombonce 2*1c27b644SPaul E. McKenney 3*1c27b644SPaul E. McKenney{} 4*1c27b644SPaul E. McKenney 5*1c27b644SPaul E. McKenneyP0(int *x, int *y, spinlock_t *mylock) 6*1c27b644SPaul E. McKenney{ 7*1c27b644SPaul E. McKenney spin_lock(mylock); 8*1c27b644SPaul E. McKenney WRITE_ONCE(*x, 1); 9*1c27b644SPaul E. McKenney WRITE_ONCE(*y, 1); 10*1c27b644SPaul E. McKenney spin_unlock(mylock); 11*1c27b644SPaul E. McKenney} 12*1c27b644SPaul E. McKenney 13*1c27b644SPaul E. McKenneyP1(int *y, int *z, spinlock_t *mylock) 14*1c27b644SPaul E. McKenney{ 15*1c27b644SPaul E. McKenney int r0; 16*1c27b644SPaul E. McKenney 17*1c27b644SPaul E. McKenney spin_lock(mylock); 18*1c27b644SPaul E. McKenney r0 = READ_ONCE(*y); 19*1c27b644SPaul E. McKenney WRITE_ONCE(*z, 1); 20*1c27b644SPaul E. McKenney spin_unlock(mylock); 21*1c27b644SPaul E. McKenney} 22*1c27b644SPaul E. McKenney 23*1c27b644SPaul E. McKenneyP2(int *x, int *z) 24*1c27b644SPaul E. McKenney{ 25*1c27b644SPaul E. McKenney int r1; 26*1c27b644SPaul E. McKenney 27*1c27b644SPaul E. McKenney WRITE_ONCE(*z, 2); 28*1c27b644SPaul E. McKenney smp_mb(); 29*1c27b644SPaul E. McKenney r1 = READ_ONCE(*x); 30*1c27b644SPaul E. McKenney} 31*1c27b644SPaul E. McKenney 32*1c27b644SPaul E. McKenneyexists (1:r0=1 /\ z=2 /\ 2:r1=0) 33