aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2010-04-02 19:17:17 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2010-05-10 14:08:34 -0400
commitbbad937983147c017c25406860287cb94da9af7c (patch)
tree57311598c360b92b189c7ec337146e4bc779c73d /include/linux
parent25502a6c13745f4650cc59322bd198194f55e796 (diff)
rcu: slim down rcutiny by removing rcu_scheduler_active and friends
TINY_RCU does not need rcu_scheduler_active unless CONFIG_DEBUG_LOCK_ALLOC. So conditionally compile rcu_scheduler_active in order to slim down rcutiny a bit more. Also gets rid of an EXPORT_SYMBOL_GPL, which is responsible for most of the slimming. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/rcupdate.h4
-rw-r--r--include/linux/rcutiny.h13
-rw-r--r--include/linux/rcutree.h3
3 files changed, 17 insertions, 3 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index d8fb2abcf303..23be3a702516 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -64,8 +64,6 @@ extern int sched_expedited_torture_stats(char *page);
64 64
65/* Internal to kernel */ 65/* Internal to kernel */
66extern void rcu_init(void); 66extern void rcu_init(void);
67extern int rcu_scheduler_active;
68extern void rcu_scheduler_starting(void);
69 67
70#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) 68#if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU)
71#include <linux/rcutree.h> 69#include <linux/rcutree.h>
@@ -178,7 +176,7 @@ static inline int rcu_read_lock_bh_held(void)
178#ifdef CONFIG_PREEMPT 176#ifdef CONFIG_PREEMPT
179static inline int rcu_read_lock_sched_held(void) 177static inline int rcu_read_lock_sched_held(void)
180{ 178{
181 return !rcu_scheduler_active || preempt_count() != 0 || irqs_disabled(); 179 return preempt_count() != 0 || irqs_disabled();
182} 180}
183#else /* #ifdef CONFIG_PREEMPT */ 181#else /* #ifdef CONFIG_PREEMPT */
184static inline int rcu_read_lock_sched_held(void) 182static inline int rcu_read_lock_sched_held(void)
diff --git a/include/linux/rcutiny.h b/include/linux/rcutiny.h
index ff22b97fb979..14e5a76b2c06 100644
--- a/include/linux/rcutiny.h
+++ b/include/linux/rcutiny.h
@@ -128,4 +128,17 @@ static inline int rcu_preempt_depth(void)
128 return 0; 128 return 0;
129} 129}
130 130
131#ifdef CONFIG_DEBUG_LOCK_ALLOC
132
133extern int rcu_scheduler_active __read_mostly;
134extern void rcu_scheduler_starting(void);
135
136#else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
137
138static inline void rcu_scheduler_starting(void)
139{
140}
141
142#endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */
143
131#endif /* __LINUX_RCUTINY_H */ 144#endif /* __LINUX_RCUTINY_H */
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
index b9f74606f320..48282055e83d 100644
--- a/include/linux/rcutree.h
+++ b/include/linux/rcutree.h
@@ -123,4 +123,7 @@ static inline int rcu_blocking_is_gp(void)
123 return num_online_cpus() == 1; 123 return num_online_cpus() == 1;
124} 124}
125 125
126extern void rcu_scheduler_starting(void);
127extern int rcu_scheduler_active __read_mostly;
128
126#endif /* __LINUX_RCUTREE_H */ 129#endif /* __LINUX_RCUTREE_H */