rcu: cleanup: make rcutorture specific definitions depend on config value
PATCH 1/1 rcu: cleanup: make rcutorture specific definitions depend on config value
make rcutorture specific variables in tree.c depend on CONFIG_RCU_TORTURE_TEST This avoid having to have them when no torture tests are running. Also cleanup some macros which are rcutorture specific.
Tested with rcutorture both in-built and as a module
Signed-off-by Pranith Kumar <[email protected]>
--- include/linux/rcupdate.h | 13 +++---------- kernel/rcu/tree.c | 29 +++++++++++++++++------------ kernel/rcu/tree_trace.c | 7 +++++++ 3 files changed, 27 insertions(+), 22 deletions(-)
include/linux/rcupdate.h +3 -10
@@ -49,16 +49,8 @@extern int rcu_expedited;/* for sysctl */ #ifdef CONFIG_RCU_TORTURE_TEST extern int rcutorture_runnable;/* for sysctl */ -#endif /* #ifdef CONFIG_RCU_TORTURE_TEST */ - -#if defined(CONFIG_TREE_RCU ) || defined(CONFIG_TREE_PREEMPT_RCU )void rcutorture_record_test_transition (void );void rcutorture_record_progress (unsigned long vernum); -void do_trace_rcu_torture_read (const char *rcutorturename, -struct rcu_head *rhp, -unsigned long secs, -unsigned long c_old, -unsigned long c);#else static inline void rcutorture_record_test_transition (void ) {
@@ -66,7 +58,9 @@ static inline void rcutorture_record_test_transition(void)static inline void rcutorture_record_progress (unsigned long vernum) { } -#ifdef CONFIG_RCU_TRACE +#endif /* CONFIG_RCU_TORTURE_TEST */ + +#if defined(CONFIG_TREE_RCU ) || defined(CONFIG_TREE_PREEMPT_RCU ) || defined(CONFIG_RCU_TRACE ) void do_trace_rcu_torture_read(const char *rcutorturename, struct rcu_head *rhp, unsigned long secs,
@@ -76,7 +70,6 @@ void do_trace_rcu_torture_read(const char *rcutorturename,#define do_trace_rcu_torture_read (rcutorturename, rhp, secs, c_old, c) \ do { } while (0)#endif -#endif #define UINT_CMP_GE (a, b) (UINT_MAX / 2 >= (a) - (b))#define UINT_CMP_LT (a, b) (UINT_MAX / 2 < (a) - (b))
kernel/rcu/tree.c +15 -12
@@ -161,18 +161,6 @@ static void invoke_rcu_core(void);static void invoke_rcu_callbacks (struct rcu_state *rsp,struct rcu_data *rdp);/* -* Track the rcutorture test sequence number and the update version -* number within a given test. The rcutorture_testseq is incremented -* on every rcutorture module load and unload, so has an odd value -* when a test is running. The rcutorture_vernum is set to zero -* when rcutorture starts and is incremented on each rcutorture update. -* These variables enable correlating rcutorture output with the -* RCU tracing information. -*/ -unsigned long rcutorture_testseq; -unsigned long rcutorture_vernum; - -/* * Return true if an RCU grace period is in progress. The ACCESS_ONCE()s * permit this function to be invoked without holding the root rcu_node * structure's ->lock, but of course results can be subject to change.
@@ -279,6 +267,21 @@ void rcu_bh_force_quiescent_state(void) }EXPORT_SYMBOL_GPL (rcu_bh_force_quiescent_state); +#ifdef CONFIG_RCU_TORTURE_TEST + +/* +* Track the rcutorture test sequence number and the update version +* number within a given test. The rcutorture_testseq is incremented +* on every rcutorture module load and unload, so has an odd value +* when a test is running. The rcutorture_vernum is set to zero +* when rcutorture starts and is incremented on each rcutorture update. +* These variables enable correlating rcutorture output with the +* RCU tracing information. +*/ +unsigned long rcutorture_testseq; +unsigned long rcutorture_vernum; + +/*