xref: /linux/tools/memory-model/litmus-tests/SB+fencembonceonces.litmus (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1C SB+fencembonceonces
2
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 *)
11
12{}
13
14P0(int *x, int *y)
15{
16	int r0;
17
18	WRITE_ONCE(*x, 1);
19	smp_mb();
20	r0 = READ_ONCE(*y);
21}
22
23P1(int *x, int *y)
24{
25	int r0;
26
27	WRITE_ONCE(*y, 1);
28	smp_mb();
29	r0 = READ_ONCE(*x);
30}
31
32exists (0:r0=0 /\ 1:r0=0)
33