Commit e4ed20c1 authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Frederic Weisbecker
Browse files

rcutorture: Exercise DEFINE_STATIC_SRCU_FAST() and init_srcu_struct_fast()



This commit updates the initialization for the "srcu" and "srcud" torture
types to use DEFINE_STATIC_SRCU_FAST() and init_srcu_struct_fast(),
respectively, when reader_flavor is equal to SRCU_READ_FLAVOR_FAST.

Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: <bpf@vger.kernel.org>
Signed-off-by: default avatarFrederic Weisbecker <frederic@kernel.org>
parent c5fee33f
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -692,10 +692,18 @@ static struct rcu_torture_ops rcu_busted_ops = {
 */

DEFINE_STATIC_SRCU(srcu_ctl);
DEFINE_STATIC_SRCU_FAST(srcu_ctlf);
static struct srcu_struct srcu_ctld;
static struct srcu_struct *srcu_ctlp = &srcu_ctl;
static struct rcu_torture_ops srcud_ops;

static void srcu_torture_init(void)
{
	rcu_sync_torture_init();
	if (reader_flavor & SRCU_READ_FLAVOR_FAST)
		srcu_ctlp = &srcu_ctlf;
}

static void srcu_get_gp_data(int *flags, unsigned long *gp_seq)
{
	srcutorture_get_gp_data(srcu_ctlp, flags, gp_seq);
@@ -865,7 +873,7 @@ static void srcu_torture_expedite_current(void)

static struct rcu_torture_ops srcu_ops = {
	.ttype		= SRCU_FLAVOR,
	.init		= rcu_sync_torture_init,
	.init		= srcu_torture_init,
	.readlock	= srcu_torture_read_lock,
	.read_delay	= srcu_read_delay,
	.readunlock	= srcu_torture_read_unlock,
@@ -897,9 +905,12 @@ static struct rcu_torture_ops srcu_ops = {
	.name		= "srcu"
};

static void srcu_torture_init(void)
static void srcud_torture_init(void)
{
	rcu_sync_torture_init();
	if (reader_flavor & SRCU_READ_FLAVOR_FAST)
		WARN_ON(init_srcu_struct_fast(&srcu_ctld));
	else
		WARN_ON(init_srcu_struct(&srcu_ctld));
	srcu_ctlp = &srcu_ctld;
}
@@ -913,7 +924,7 @@ static void srcu_torture_cleanup(void)
/* As above, but dynamically allocated. */
static struct rcu_torture_ops srcud_ops = {
	.ttype		= SRCU_FLAVOR,
	.init		= srcu_torture_init,
	.init		= srcud_torture_init,
	.cleanup	= srcu_torture_cleanup,
	.readlock	= srcu_torture_read_lock,
	.read_delay	= srcu_read_delay,