diff options
Diffstat (limited to 'include/linux/rcupdate.h')
-rw-r--r-- | include/linux/rcupdate.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index cf307ebf345d..96f1baf62ab8 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -58,8 +58,6 @@ void call_rcu(struct rcu_head *head, rcu_callback_t func); | |||
58 | void call_rcu_bh(struct rcu_head *head, rcu_callback_t func); | 58 | void call_rcu_bh(struct rcu_head *head, rcu_callback_t func); |
59 | void call_rcu_sched(struct rcu_head *head, rcu_callback_t func); | 59 | void call_rcu_sched(struct rcu_head *head, rcu_callback_t func); |
60 | void synchronize_sched(void); | 60 | void synchronize_sched(void); |
61 | void call_rcu_tasks(struct rcu_head *head, rcu_callback_t func); | ||
62 | void synchronize_rcu_tasks(void); | ||
63 | void rcu_barrier_tasks(void); | 61 | void rcu_barrier_tasks(void); |
64 | 62 | ||
65 | #ifdef CONFIG_PREEMPT_RCU | 63 | #ifdef CONFIG_PREEMPT_RCU |
@@ -105,6 +103,7 @@ static inline int rcu_preempt_depth(void) | |||
105 | 103 | ||
106 | /* Internal to kernel */ | 104 | /* Internal to kernel */ |
107 | void rcu_init(void); | 105 | void rcu_init(void); |
106 | extern int rcu_scheduler_active __read_mostly; | ||
108 | void rcu_sched_qs(void); | 107 | void rcu_sched_qs(void); |
109 | void rcu_bh_qs(void); | 108 | void rcu_bh_qs(void); |
110 | void rcu_check_callbacks(int user); | 109 | void rcu_check_callbacks(int user); |
@@ -165,8 +164,6 @@ static inline void rcu_init_nohz(void) { } | |||
165 | * macro rather than an inline function to avoid #include hell. | 164 | * macro rather than an inline function to avoid #include hell. |
166 | */ | 165 | */ |
167 | #ifdef CONFIG_TASKS_RCU | 166 | #ifdef CONFIG_TASKS_RCU |
168 | #define TASKS_RCU(x) x | ||
169 | extern struct srcu_struct tasks_rcu_exit_srcu; | ||
170 | #define rcu_note_voluntary_context_switch_lite(t) \ | 167 | #define rcu_note_voluntary_context_switch_lite(t) \ |
171 | do { \ | 168 | do { \ |
172 | if (READ_ONCE((t)->rcu_tasks_holdout)) \ | 169 | if (READ_ONCE((t)->rcu_tasks_holdout)) \ |
@@ -177,10 +174,17 @@ extern struct srcu_struct tasks_rcu_exit_srcu; | |||
177 | rcu_all_qs(); \ | 174 | rcu_all_qs(); \ |
178 | rcu_note_voluntary_context_switch_lite(t); \ | 175 | rcu_note_voluntary_context_switch_lite(t); \ |
179 | } while (0) | 176 | } while (0) |
177 | void call_rcu_tasks(struct rcu_head *head, rcu_callback_t func); | ||
178 | void synchronize_rcu_tasks(void); | ||
179 | void exit_tasks_rcu_start(void); | ||
180 | void exit_tasks_rcu_finish(void); | ||
180 | #else /* #ifdef CONFIG_TASKS_RCU */ | 181 | #else /* #ifdef CONFIG_TASKS_RCU */ |
181 | #define TASKS_RCU(x) do { } while (0) | ||
182 | #define rcu_note_voluntary_context_switch_lite(t) do { } while (0) | 182 | #define rcu_note_voluntary_context_switch_lite(t) do { } while (0) |
183 | #define rcu_note_voluntary_context_switch(t) rcu_all_qs() | 183 | #define rcu_note_voluntary_context_switch(t) rcu_all_qs() |
184 | #define call_rcu_tasks call_rcu_sched | ||
185 | #define synchronize_rcu_tasks synchronize_sched | ||
186 | static inline void exit_tasks_rcu_start(void) { } | ||
187 | static inline void exit_tasks_rcu_finish(void) { } | ||
184 | #endif /* #else #ifdef CONFIG_TASKS_RCU */ | 188 | #endif /* #else #ifdef CONFIG_TASKS_RCU */ |
185 | 189 | ||
186 | /** | 190 | /** |