aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-04-21 14:15:30 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-05-27 15:59:31 -0400
commit51952bc633064311410b041fad38da1614f4539e (patch)
tree43f42f45e43ccb22af1ad10a88573675c01681a9
parent7d0ae8086b828311250c6afdf800b568ac9bd693 (diff)
rcu: Further shrink Tiny RCU by making empty functions static inlines
The Tiny RCU counterparts to rcu_idle_enter(), rcu_idle_exit(), rcu_irq_enter(), and rcu_irq_exit() are empty functions, but each has EXPORT_SYMBOL_GPL(), which needlessly consumes extra memory, especially in kernels built with module support. This commit therefore moves these functions to static inlines in rcutiny.h, removing the need for exports. This won't affect the size of the tiniest kernels, which are likely built without module support, but might help semi-tiny kernels that might include module support. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r--include/linux/rcupdate.h4
-rw-r--r--include/linux/rcutiny.h16
-rw-r--r--include/linux/rcutree.h5
-rw-r--r--kernel/rcu/tiny.c33
4 files changed, 21 insertions, 37 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 87bb0eee665b..1b3d7bcb3a6c 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -292,10 +292,6 @@ void rcu_sched_qs(void);
292void rcu_bh_qs(void); 292void rcu_bh_qs(void);
293void rcu_check_callbacks(int user); 293void rcu_check_callbacks(int user);
294struct notifier_block; 294struct notifier_block;
295void rcu_idle_enter(void);
296void rcu_idle_exit(void);
297void rcu_irq_enter(void);
298void rcu_irq_exit(void);
299int rcu_cpu_notify(struct notifier_block *self, 295int rcu_cpu_notify(struct notifier_block *self,
300 unsigned long action, void *hcpu); 296 unsigned long action, void *hcpu);
301 297
diff --git a/include/linux/rcutiny.h b/include/linux/rcutiny.h
index 937edaeb150d..3df6c1ec4e25 100644
--- a/include/linux/rcutiny.h
+++ b/include/linux/rcutiny.h
@@ -159,6 +159,22 @@ static inline void rcu_cpu_stall_reset(void)
159{ 159{
160} 160}
161 161
162static inline void rcu_idle_enter(void)
163{
164}
165
166static inline void rcu_idle_exit(void)
167{
168}
169
170static inline void rcu_irq_enter(void)
171{
172}
173
174static inline void rcu_irq_exit(void)
175{
176}
177
162static inline void exit_rcu(void) 178static inline void exit_rcu(void)
163{ 179{
164} 180}
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h
index d2e583a6aaca..f22d83f49e56 100644
--- a/include/linux/rcutree.h
+++ b/include/linux/rcutree.h
@@ -93,6 +93,11 @@ void rcu_force_quiescent_state(void);
93void rcu_bh_force_quiescent_state(void); 93void rcu_bh_force_quiescent_state(void);
94void rcu_sched_force_quiescent_state(void); 94void rcu_sched_force_quiescent_state(void);
95 95
96void rcu_idle_enter(void);
97void rcu_idle_exit(void);
98void rcu_irq_enter(void);
99void rcu_irq_exit(void);
100
96void exit_rcu(void); 101void exit_rcu(void);
97 102
98void rcu_scheduler_starting(void); 103void rcu_scheduler_starting(void);
diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c
index 069742d61c68..a501b4ab9b1c 100644
--- a/kernel/rcu/tiny.c
+++ b/kernel/rcu/tiny.c
@@ -49,39 +49,6 @@ static void __call_rcu(struct rcu_head *head,
49 49
50#include "tiny_plugin.h" 50#include "tiny_plugin.h"
51 51
52/*
53 * Enter idle, which is an extended quiescent state if we have fully
54 * entered that mode.
55 */
56void rcu_idle_enter(void)
57{
58}
59EXPORT_SYMBOL_GPL(rcu_idle_enter);
60
61/*
62 * Exit an interrupt handler towards idle.
63 */
64void rcu_irq_exit(void)
65{
66}
67EXPORT_SYMBOL_GPL(rcu_irq_exit);
68
69/*
70 * Exit idle, so that we are no longer in an extended quiescent state.
71 */
72void rcu_idle_exit(void)
73{
74}
75EXPORT_SYMBOL_GPL(rcu_idle_exit);
76
77/*
78 * Enter an interrupt handler, moving away from idle.
79 */
80void rcu_irq_enter(void)
81{
82}
83EXPORT_SYMBOL_GPL(rcu_irq_enter);
84
85#if defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_RCU_TRACE) 52#if defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_RCU_TRACE)
86 53
87/* 54/*