Commit 1e6757a9 authored by Davidlohr Bueso's avatar Davidlohr Bueso Committed by Paul E. McKenney

locktorture: Make statistics generic

The statistics structure can serve well for both reader and writer
locks, thus simply rename some fields that mention 'write' and leave
the declaration of lwsa.
Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent f095bfc0
...@@ -78,11 +78,11 @@ static struct task_struct **writer_tasks; ...@@ -78,11 +78,11 @@ static struct task_struct **writer_tasks;
static int nrealwriters_stress; static int nrealwriters_stress;
static bool lock_is_write_held; static bool lock_is_write_held;
struct lock_writer_stress_stats { struct lock_stress_stats {
long n_write_lock_fail; long n_lock_fail;
long n_write_lock_acquired; long n_lock_acquired;
}; };
static struct lock_writer_stress_stats *lwsa; static struct lock_stress_stats *lwsa; /* writer statistics */
#if defined(MODULE) #if defined(MODULE)
#define LOCKTORTURE_RUNNABLE_INIT 1 #define LOCKTORTURE_RUNNABLE_INIT 1
...@@ -250,7 +250,7 @@ static struct lock_torture_ops mutex_lock_ops = { ...@@ -250,7 +250,7 @@ static struct lock_torture_ops mutex_lock_ops = {
*/ */
static int lock_torture_writer(void *arg) static int lock_torture_writer(void *arg)
{ {
struct lock_writer_stress_stats *lwsp = arg; struct lock_stress_stats *lwsp = arg;
static DEFINE_TORTURE_RANDOM(rand); static DEFINE_TORTURE_RANDOM(rand);
VERBOSE_TOROUT_STRING("lock_torture_writer task started"); VERBOSE_TOROUT_STRING("lock_torture_writer task started");
...@@ -261,9 +261,9 @@ static int lock_torture_writer(void *arg) ...@@ -261,9 +261,9 @@ static int lock_torture_writer(void *arg)
schedule_timeout_uninterruptible(1); schedule_timeout_uninterruptible(1);
cur_ops->writelock(); cur_ops->writelock();
if (WARN_ON_ONCE(lock_is_write_held)) if (WARN_ON_ONCE(lock_is_write_held))
lwsp->n_write_lock_fail++; lwsp->n_lock_fail++;
lock_is_write_held = 1; lock_is_write_held = 1;
lwsp->n_write_lock_acquired++; lwsp->n_lock_acquired++;
cur_ops->write_delay(&rand); cur_ops->write_delay(&rand);
lock_is_write_held = 0; lock_is_write_held = 0;
cur_ops->writeunlock(); cur_ops->writeunlock();
...@@ -281,17 +281,17 @@ static void lock_torture_printk(char *page) ...@@ -281,17 +281,17 @@ static void lock_torture_printk(char *page)
bool fail = 0; bool fail = 0;
int i; int i;
long max = 0; long max = 0;
long min = lwsa[0].n_write_lock_acquired; long min = lwsa[0].n_lock_acquired;
long long sum = 0; long long sum = 0;
for (i = 0; i < nrealwriters_stress; i++) { for (i = 0; i < nrealwriters_stress; i++) {
if (lwsa[i].n_write_lock_fail) if (lwsa[i].n_lock_fail)
fail = true; fail = true;
sum += lwsa[i].n_write_lock_acquired; sum += lwsa[i].n_lock_acquired;
if (max < lwsa[i].n_write_lock_fail) if (max < lwsa[i].n_lock_fail)
max = lwsa[i].n_write_lock_fail; max = lwsa[i].n_lock_fail;
if (min > lwsa[i].n_write_lock_fail) if (min > lwsa[i].n_lock_fail)
min = lwsa[i].n_write_lock_fail; min = lwsa[i].n_lock_fail;
} }
page += sprintf(page, "%s%s ", torture_type, TORTURE_FLAG); page += sprintf(page, "%s%s ", torture_type, TORTURE_FLAG);
page += sprintf(page, page += sprintf(page,
...@@ -441,8 +441,8 @@ static int __init lock_torture_init(void) ...@@ -441,8 +441,8 @@ static int __init lock_torture_init(void)
goto unwind; goto unwind;
} }
for (i = 0; i < nrealwriters_stress; i++) { for (i = 0; i < nrealwriters_stress; i++) {
lwsa[i].n_write_lock_fail = 0; lwsa[i].n_lock_fail = 0;
lwsa[i].n_write_lock_acquired = 0; lwsa[i].n_lock_acquired = 0;
} }
/* Start up the kthreads. */ /* Start up the kthreads. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment