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:
Родитель
1947bfcf81
Коммит
acc4bdc55d
|
@ -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)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче