Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Paul E. McKenney and committed by
Frederic Weisbecker
e4ed20c1 c5fee33f

+15 -4
+15 -4
kernel/rcu/rcutorture.c
··· 692 692 */ 693 693 694 694 DEFINE_STATIC_SRCU(srcu_ctl); 695 + DEFINE_STATIC_SRCU_FAST(srcu_ctlf); 695 696 static struct srcu_struct srcu_ctld; 696 697 static struct srcu_struct *srcu_ctlp = &srcu_ctl; 697 698 static struct rcu_torture_ops srcud_ops; 699 + 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 + } 698 706 699 707 static void srcu_get_gp_data(int *flags, unsigned long *gp_seq) 700 708 { ··· 873 865 874 866 static struct rcu_torture_ops srcu_ops = { 875 867 .ttype = SRCU_FLAVOR, 876 - .init = rcu_sync_torture_init, 868 + .init = srcu_torture_init, 877 869 .readlock = srcu_torture_read_lock, 878 870 .read_delay = srcu_read_delay, 879 871 .readunlock = srcu_torture_read_unlock, ··· 905 897 .name = "srcu" 906 898 }; 907 899 908 - static void srcu_torture_init(void) 900 + static void srcud_torture_init(void) 909 901 { 910 902 rcu_sync_torture_init(); 911 - WARN_ON(init_srcu_struct(&srcu_ctld)); 903 + if (reader_flavor & SRCU_READ_FLAVOR_FAST) 904 + WARN_ON(init_srcu_struct_fast(&srcu_ctld)); 905 + else 906 + WARN_ON(init_srcu_struct(&srcu_ctld)); 912 907 srcu_ctlp = &srcu_ctld; 913 908 } 914 909 ··· 924 913 /* As above, but dynamically allocated. */ 925 914 static struct rcu_torture_ops srcud_ops = { 926 915 .ttype = SRCU_FLAVOR, 927 - .init = srcu_torture_init, 916 + .init = srcud_torture_init, 928 917 .cleanup = srcu_torture_cleanup, 929 918 .readlock = srcu_torture_read_lock, 930 919 .read_delay = srcu_read_delay,