Skip to content

Commit e4ed20c

Browse files
paulmckrcuFrederic Weisbecker
authored andcommitted
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: Paul 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: Frederic Weisbecker <frederic@kernel.org>
1 parent c5fee33 commit e4ed20c

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

kernel/rcu/rcutorture.c

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -692,10 +692,18 @@ static struct rcu_torture_ops rcu_busted_ops = {
692692
*/
693693

694694
DEFINE_STATIC_SRCU(srcu_ctl);
695+
DEFINE_STATIC_SRCU_FAST(srcu_ctlf);
695696
static struct srcu_struct srcu_ctld;
696697
static struct srcu_struct *srcu_ctlp = &srcu_ctl;
697698
static struct rcu_torture_ops srcud_ops;
698699

700+
static void srcu_torture_init(void)
701+
{
702+
rcu_sync_torture_init();
703+
if (reader_flavor & SRCU_READ_FLAVOR_FAST)
704+
srcu_ctlp = &srcu_ctlf;
705+
}
706+
699707
static void srcu_get_gp_data(int *flags, unsigned long *gp_seq)
700708
{
701709
srcutorture_get_gp_data(srcu_ctlp, flags, gp_seq);
@@ -865,7 +873,7 @@ static void srcu_torture_expedite_current(void)
865873

866874
static struct rcu_torture_ops srcu_ops = {
867875
.ttype = SRCU_FLAVOR,
868-
.init = rcu_sync_torture_init,
876+
.init = srcu_torture_init,
869877
.readlock = srcu_torture_read_lock,
870878
.read_delay = srcu_read_delay,
871879
.readunlock = srcu_torture_read_unlock,
@@ -897,10 +905,13 @@ static struct rcu_torture_ops srcu_ops = {
897905
.name = "srcu"
898906
};
899907

900-
static void srcu_torture_init(void)
908+
static void srcud_torture_init(void)
901909
{
902910
rcu_sync_torture_init();
903-
WARN_ON(init_srcu_struct(&srcu_ctld));
911+
if (reader_flavor & SRCU_READ_FLAVOR_FAST)
912+
WARN_ON(init_srcu_struct_fast(&srcu_ctld));
913+
else
914+
WARN_ON(init_srcu_struct(&srcu_ctld));
904915
srcu_ctlp = &srcu_ctld;
905916
}
906917

@@ -913,7 +924,7 @@ static void srcu_torture_cleanup(void)
913924
/* As above, but dynamically allocated. */
914925
static struct rcu_torture_ops srcud_ops = {
915926
.ttype = SRCU_FLAVOR,
916-
.init = srcu_torture_init,
927+
.init = srcud_torture_init,
917928
.cleanup = srcu_torture_cleanup,
918929
.readlock = srcu_torture_read_lock,
919930
.read_delay = srcu_read_delay,

0 commit comments

Comments
 (0)