Skip to content

Commit

Permalink
tools/memory-model: Label MP tests' producers and consumers
Browse files Browse the repository at this point in the history
This commit adds comments that label the MP tests' producer and consumer
processes, and also that label the "exists" clause as the bad outcome.

Reported-by: Johannes Weiner <[email protected]>
Signed-off-by: Paul E. McKenney <[email protected]>
  • Loading branch information
paulmckrcu committed Nov 7, 2020
1 parent acc4bdc commit b6ff308
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ C MP+fencewmbonceonce+fencermbonceonce
int flag;
}

P0(int *buf, int *flag)
P0(int *buf, int *flag) // Producer
{
WRITE_ONCE(*buf, 1);
smp_wmb();
WRITE_ONCE(*flag, 1);
}

P1(int *buf, int *flag)
P1(int *buf, int *flag) // Consumer
{
int r0;
int r1;
Expand All @@ -30,4 +30,4 @@ P1(int *buf, int *flag)
r1 = READ_ONCE(*buf);
}

exists (1:r0=1 /\ 1:r1=0)
exists (1:r0=1 /\ 1:r1=0) (* Bad outcome. *)
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ C MP+onceassign+derefonce
int y=0;
}

P0(int *x, int **p)
P0(int *x, int **p) // Producer
{
WRITE_ONCE(*x, 1);
rcu_assign_pointer(*p, x);
}

P1(int *x, int **p)
P1(int *x, int **p) // Consumer
{
int *r0;
int r1;
Expand All @@ -32,4 +32,4 @@ P1(int *x, int **p)
rcu_read_unlock();
}

exists (1:r0=x /\ 1:r1=0)
exists (1:r0=x /\ 1:r1=0) (* Bad outcome. *)
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ C MP+polockmbonce+poacquiresilsil
int x;
}

P0(spinlock_t *lo, int *x)
P0(spinlock_t *lo, int *x) // Producer
{
spin_lock(lo);
smp_mb__after_spinlock();
WRITE_ONCE(*x, 1);
spin_unlock(lo);
}

P1(spinlock_t *lo, int *x)
P1(spinlock_t *lo, int *x) // Consumer
{
int r1;
int r2;
Expand All @@ -34,4 +34,4 @@ P1(spinlock_t *lo, int *x)
r3 = spin_is_locked(lo);
}

exists (1:r1=1 /\ 1:r2=0 /\ 1:r3=1)
exists (1:r1=1 /\ 1:r2=0 /\ 1:r3=1) (* Bad outcome. *)
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ C MP+polockonce+poacquiresilsil
int x;
}

P0(spinlock_t *lo, int *x)
P0(spinlock_t *lo, int *x) // Producer
{
spin_lock(lo);
WRITE_ONCE(*x, 1);
spin_unlock(lo);
}

P1(spinlock_t *lo, int *x)
P1(spinlock_t *lo, int *x) // Consumer
{
int r1;
int r2;
Expand All @@ -33,4 +33,4 @@ P1(spinlock_t *lo, int *x)
r3 = spin_is_locked(lo);
}

exists (1:r1=1 /\ 1:r2=0 /\ 1:r3=1)
exists (1:r1=1 /\ 1:r2=0 /\ 1:r3=1) (* Bad outcome. *)
6 changes: 3 additions & 3 deletions tools/memory-model/litmus-tests/MP+polocks.litmus
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ C MP+polocks
int flag;
}

P0(int *buf, int *flag, spinlock_t *mylock)
P0(int *buf, int *flag, spinlock_t *mylock) // Producer
{
WRITE_ONCE(*buf, 1);
spin_lock(mylock);
WRITE_ONCE(*flag, 1);
spin_unlock(mylock);
}

P1(int *buf, int *flag, spinlock_t *mylock)
P1(int *buf, int *flag, spinlock_t *mylock) // Consumer
{
int r0;
int r1;
Expand All @@ -36,4 +36,4 @@ P1(int *buf, int *flag, spinlock_t *mylock)
r1 = READ_ONCE(*buf);
}

exists (1:r0=1 /\ 1:r1=0)
exists (1:r0=1 /\ 1:r1=0) (* Bad outcome. *)
6 changes: 3 additions & 3 deletions tools/memory-model/litmus-tests/MP+poonceonces.litmus
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ C MP+poonceonces
int flag;
}

P0(int *buf, int *flag)
P0(int *buf, int *flag) // Producer
{
WRITE_ONCE(*buf, 1);
WRITE_ONCE(*flag, 1);
}

P1(int *buf, int *flag)
P1(int *buf, int *flag) // Consumer
{
int r0;
int r1;
Expand All @@ -27,4 +27,4 @@ P1(int *buf, int *flag)
r1 = READ_ONCE(*buf);
}

exists (1:r0=1 /\ 1:r1=0)
exists (1:r0=1 /\ 1:r1=0) (* Bad outcome. *)
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ C MP+pooncerelease+poacquireonce
int flag;
}

P0(int *buf, int *flag)
P0(int *buf, int *flag) // Producer
{
WRITE_ONCE(*buf, 1);
smp_store_release(flag, 1);
}

P1(int *buf, int *flag)
P1(int *buf, int *flag) // Consumer
{
int r0;
int r1;
Expand All @@ -28,4 +28,4 @@ P1(int *buf, int *flag)
r1 = READ_ONCE(*buf);
}

exists (1:r0=1 /\ 1:r1=0)
exists (1:r0=1 /\ 1:r1=0) (* Bad outcome. *)
6 changes: 3 additions & 3 deletions tools/memory-model/litmus-tests/MP+porevlocks.litmus
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ C MP+porevlocks
int flag;
}

P0(int *buf, int *flag, spinlock_t *mylock)
P0(int *buf, int *flag, spinlock_t *mylock) // Consumer
{
int r0;
int r1;
Expand All @@ -28,12 +28,12 @@ P0(int *buf, int *flag, spinlock_t *mylock)
spin_unlock(mylock);
}

P1(int *buf, int *flag, spinlock_t *mylock)
P1(int *buf, int *flag, spinlock_t *mylock) // Producer
{
spin_lock(mylock);
WRITE_ONCE(*buf, 1);
spin_unlock(mylock);
WRITE_ONCE(*flag, 1);
}

exists (0:r0=1 /\ 0:r1=0)
exists (0:r0=1 /\ 0:r1=0) (* Bad outcome. *)

0 comments on commit b6ff308

Please sign in to comment.