Merge tag 'block-5.11-2021-01-10' of git://git.kernel.dk/linux-block
[linux/fpc-iii.git] / tools / memory-model / litmus-tests / SB+fencembonceonces.litmus
blob833cdfeb7c093ce9ebb2a616b4e7567d6ee72c79
1 C SB+fencembonceonces
3 (*
4  * Result: Never
5  *
6  * This litmus test demonstrates that full memory barriers suffice to
7  * order the store-buffering pattern, where each process writes to the
8  * variable that the preceding process reads.  (Locking and RCU can also
9  * suffice, but not much else.)
10  *)
13         int x;
14         int y;
17 P0(int *x, int *y)
19         int r0;
21         WRITE_ONCE(*x, 1);
22         smp_mb();
23         r0 = READ_ONCE(*y);
26 P1(int *x, int *y)
28         int r0;
30         WRITE_ONCE(*y, 1);
31         smp_mb();
32         r0 = READ_ONCE(*x);
35 exists (0:r0=0 /\ 1:r0=0)