Merge tag 'block-5.9-2020-08-14' of git://git.kernel.dk/linux-block
[linux/fpc-iii.git] / tools / memory-model / litmus-tests / S+poonceonces.litmus
blob8c9c2f81a58055cdba5eeea5c502ef24d9416a69
1 C S+poonceonces
3 (*
4  * Result: Sometimes
5  *
6  * Starting with a two-process release-acquire chain ordering P0()'s
7  * first store against P1()'s final load, if the smp_store_release()
8  * is replaced by WRITE_ONCE() and the smp_load_acquire() replaced by
9  * READ_ONCE(), is ordering preserved?
10  *)
14 P0(int *x, int *y)
16         WRITE_ONCE(*x, 2);
17         WRITE_ONCE(*y, 1);
20 P1(int *x, int *y)
22         int r0;
24         r0 = READ_ONCE(*y);
25         WRITE_ONCE(*x, 1);
28 exists (x=2 /\ 1:r0=1)