Skip to content

Commit

Permalink
rcu: Test srcu_barrier() from rcutorture test suite
Browse files Browse the repository at this point in the history
SRCU now has a call_srcu() and an srcu_barrier(), but rcutorture does not
test them.  This commit adds the machinery to allow rcutorture's existing
tests for call_rcu() and rcu_barrier() to apply to the SRCU equivalents.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
  • Loading branch information
Paul E. McKenney committed Jul 2, 2012
1 parent 751a68b commit e3f8d37
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions kernel/rcutorture.c
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,17 @@ static void srcu_torture_synchronize(void)
synchronize_srcu(&srcu_ctl);
}

static void srcu_torture_call(struct rcu_head *head,
void (*func)(struct rcu_head *head))
{
call_srcu(&srcu_ctl, head, func);
}

static void srcu_torture_barrier(void)
{
srcu_barrier(&srcu_ctl);
}

static int srcu_torture_stats(char *page)
{
int cnt = 0;
Expand All @@ -661,8 +672,8 @@ static struct rcu_torture_ops srcu_ops = {
.completed = srcu_torture_completed,
.deferred_free = srcu_torture_deferred_free,
.sync = srcu_torture_synchronize,
.call = NULL,
.cb_barrier = NULL,
.call = srcu_torture_call,
.cb_barrier = srcu_torture_barrier,
.stats = srcu_torture_stats,
.name = "srcu"
};
Expand Down

0 comments on commit e3f8d37

Please sign in to comment.