Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e3f8d378 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcu: Test srcu_barrier() from rcutorture test suite



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: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
parent 751a68b2
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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"
};