diff options
| author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-04-02 19:17:17 -0400 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2010-05-10 14:08:34 -0400 |
| commit | bbad937983147c017c25406860287cb94da9af7c (patch) | |
| tree | 57311598c360b92b189c7ec337146e4bc779c73d /include/linux | |
| parent | 25502a6c13745f4650cc59322bd198194f55e796 (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.h | 4 | ||||
| -rw-r--r-- | include/linux/rcutiny.h | 13 | ||||
| -rw-r--r-- | include/linux/rcutree.h | 3 |
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 */ |
| 66 | extern void rcu_init(void); | 66 | extern void rcu_init(void); |
| 67 | extern int rcu_scheduler_active; | ||
| 68 | extern 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 |
| 179 | static inline int rcu_read_lock_sched_held(void) | 177 | static 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 */ |
| 184 | static inline int rcu_read_lock_sched_held(void) | 182 | static 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 | |||
| 133 | extern int rcu_scheduler_active __read_mostly; | ||
| 134 | extern void rcu_scheduler_starting(void); | ||
| 135 | |||
| 136 | #else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ | ||
| 137 | |||
| 138 | static 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 | ||
| 126 | extern void rcu_scheduler_starting(void); | ||
| 127 | extern int rcu_scheduler_active __read_mostly; | ||
| 128 | |||
| 126 | #endif /* __LINUX_RCUTREE_H */ | 129 | #endif /* __LINUX_RCUTREE_H */ |
