tools/memory-model: Use "buf" and "flag" for message-passing tests

The use of "x" and "y" for message-passing tests is fine for people
familiar with memory models and litmus-test nomenclature, but is a bit
obtuse for others.  This commit therefore substitutes "buf" for "x" and
"flag" for "y" for the MP tests.  There are a few special-case MP tests
that use locks and these are unchanged.  There is another MP test that
uses pointers, and this is changed to name the pointer "p".

Reported-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
Paul E. McKenney 2020-11-05 13:30:11 -08:00
Родитель 1947bfcf81
Коммит acc4bdc55d
6 изменённых файлов: 46 добавлений и 46 удалений

Просмотреть файл

@ -9,25 +9,25 @@ C MP+fencewmbonceonce+fencermbonceonce
*) *)
{ {
int x; int buf;
int y; int flag;
} }
P0(int *x, int *y) P0(int *buf, int *flag)
{ {
WRITE_ONCE(*x, 1); WRITE_ONCE(*buf, 1);
smp_wmb(); smp_wmb();
WRITE_ONCE(*y, 1); WRITE_ONCE(*flag, 1);
} }
P1(int *x, int *y) P1(int *buf, int *flag)
{ {
int r0; int r0;
int r1; int r1;
r0 = READ_ONCE(*y); r0 = READ_ONCE(*flag);
smp_rmb(); smp_rmb();
r1 = READ_ONCE(*x); r1 = READ_ONCE(*buf);
} }
exists (1:r0=1 /\ 1:r1=0) exists (1:r0=1 /\ 1:r1=0)

Просмотреть файл

@ -10,24 +10,24 @@ C MP+onceassign+derefonce
*) *)
{ {
int *p=y;
int x; int x;
int *y=z; int y=0;
int z=0;
} }
P0(int *x, int **y) P0(int *x, int **p)
{ {
WRITE_ONCE(*x, 1); WRITE_ONCE(*x, 1);
rcu_assign_pointer(*y, x); rcu_assign_pointer(*p, x);
} }
P1(int *x, int **y) P1(int *x, int **p)
{ {
int *r0; int *r0;
int r1; int r1;
rcu_read_lock(); rcu_read_lock();
r0 = rcu_dereference(*y); r0 = rcu_dereference(*p);
r1 = READ_ONCE(*r0); r1 = READ_ONCE(*r0);
rcu_read_unlock(); rcu_read_unlock();
} }

Просмотреть файл

@ -13,27 +13,27 @@ C MP+polocks
{ {
spinlock_t mylock; spinlock_t mylock;
int x; int buf;
int y; int flag;
} }
P0(int *x, int *y, spinlock_t *mylock) P0(int *buf, int *flag, spinlock_t *mylock)
{ {
WRITE_ONCE(*x, 1); WRITE_ONCE(*buf, 1);
spin_lock(mylock); spin_lock(mylock);
WRITE_ONCE(*y, 1); WRITE_ONCE(*flag, 1);
spin_unlock(mylock); spin_unlock(mylock);
} }
P1(int *x, int *y, spinlock_t *mylock) P1(int *buf, int *flag, spinlock_t *mylock)
{ {
int r0; int r0;
int r1; int r1;
spin_lock(mylock); spin_lock(mylock);
r0 = READ_ONCE(*y); r0 = READ_ONCE(*flag);
spin_unlock(mylock); spin_unlock(mylock);
r1 = READ_ONCE(*x); r1 = READ_ONCE(*buf);
} }
exists (1:r0=1 /\ 1:r1=0) exists (1:r0=1 /\ 1:r1=0)

Просмотреть файл

@ -8,23 +8,23 @@ C MP+poonceonces
*) *)
{ {
int x; int buf;
int y; int flag;
} }
P0(int *x, int *y) P0(int *buf, int *flag)
{ {
WRITE_ONCE(*x, 1); WRITE_ONCE(*buf, 1);
WRITE_ONCE(*y, 1); WRITE_ONCE(*flag, 1);
} }
P1(int *x, int *y) P1(int *buf, int *flag)
{ {
int r0; int r0;
int r1; int r1;
r0 = READ_ONCE(*y); r0 = READ_ONCE(*flag);
r1 = READ_ONCE(*x); r1 = READ_ONCE(*buf);
} }
exists (1:r0=1 /\ 1:r1=0) exists (1:r0=1 /\ 1:r1=0)

Просмотреть файл

@ -9,23 +9,23 @@ C MP+pooncerelease+poacquireonce
*) *)
{ {
int x; int buf;
int y; int flag;
} }
P0(int *x, int *y) P0(int *buf, int *flag)
{ {
WRITE_ONCE(*x, 1); WRITE_ONCE(*buf, 1);
smp_store_release(y, 1); smp_store_release(flag, 1);
} }
P1(int *x, int *y) P1(int *buf, int *flag)
{ {
int r0; int r0;
int r1; int r1;
r0 = smp_load_acquire(y); r0 = smp_load_acquire(flag);
r1 = READ_ONCE(*x); r1 = READ_ONCE(*buf);
} }
exists (1:r0=1 /\ 1:r1=0) exists (1:r0=1 /\ 1:r1=0)

Просмотреть файл

@ -13,27 +13,27 @@ C MP+porevlocks
{ {
spinlock_t mylock; spinlock_t mylock;
int x; int buf;
int y; int flag;
} }
P0(int *x, int *y, spinlock_t *mylock) P0(int *buf, int *flag, spinlock_t *mylock)
{ {
int r0; int r0;
int r1; int r1;
r0 = READ_ONCE(*y); r0 = READ_ONCE(*flag);
spin_lock(mylock); spin_lock(mylock);
r1 = READ_ONCE(*x); r1 = READ_ONCE(*buf);
spin_unlock(mylock); spin_unlock(mylock);
} }
P1(int *x, int *y, spinlock_t *mylock) P1(int *buf, int *flag, spinlock_t *mylock)
{ {
spin_lock(mylock); spin_lock(mylock);
WRITE_ONCE(*x, 1); WRITE_ONCE(*buf, 1);
spin_unlock(mylock); spin_unlock(mylock);
WRITE_ONCE(*y, 1); WRITE_ONCE(*flag, 1);
} }
exists (0:r0=1 /\ 0:r1=0) exists (0:r0=1 /\ 0:r1=0)