diff options
Diffstat (limited to 'include/linux/rcupdate.h')
| -rw-r--r-- | include/linux/rcupdate.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 115ead2b5155..7c968e4f929e 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
| @@ -191,6 +191,21 @@ extern void rcu_idle_enter(void); | |||
| 191 | extern void rcu_idle_exit(void); | 191 | extern void rcu_idle_exit(void); |
| 192 | extern void rcu_irq_enter(void); | 192 | extern void rcu_irq_enter(void); |
| 193 | extern void rcu_irq_exit(void); | 193 | extern void rcu_irq_exit(void); |
| 194 | |||
| 195 | #ifdef CONFIG_RCU_USER_QS | ||
| 196 | extern void rcu_user_enter(void); | ||
| 197 | extern void rcu_user_exit(void); | ||
| 198 | extern void rcu_user_enter_after_irq(void); | ||
| 199 | extern void rcu_user_exit_after_irq(void); | ||
| 200 | extern void rcu_user_hooks_switch(struct task_struct *prev, | ||
| 201 | struct task_struct *next); | ||
| 202 | #else | ||
| 203 | static inline void rcu_user_enter(void) { } | ||
| 204 | static inline void rcu_user_exit(void) { } | ||
| 205 | static inline void rcu_user_enter_after_irq(void) { } | ||
| 206 | static inline void rcu_user_exit_after_irq(void) { } | ||
| 207 | #endif /* CONFIG_RCU_USER_QS */ | ||
| 208 | |||
| 194 | extern void exit_rcu(void); | 209 | extern void exit_rcu(void); |
| 195 | 210 | ||
| 196 | /** | 211 | /** |
| @@ -210,14 +225,12 @@ extern void exit_rcu(void); | |||
| 210 | * to nest RCU_NONIDLE() wrappers, but the nesting level is currently | 225 | * to nest RCU_NONIDLE() wrappers, but the nesting level is currently |
| 211 | * quite limited. If deeper nesting is required, it will be necessary | 226 | * quite limited. If deeper nesting is required, it will be necessary |
| 212 | * to adjust DYNTICK_TASK_NESTING_VALUE accordingly. | 227 | * to adjust DYNTICK_TASK_NESTING_VALUE accordingly. |
| 213 | * | ||
| 214 | * This macro may be used from process-level code only. | ||
| 215 | */ | 228 | */ |
| 216 | #define RCU_NONIDLE(a) \ | 229 | #define RCU_NONIDLE(a) \ |
| 217 | do { \ | 230 | do { \ |
| 218 | rcu_idle_exit(); \ | 231 | rcu_irq_enter(); \ |
| 219 | do { a; } while (0); \ | 232 | do { a; } while (0); \ |
| 220 | rcu_idle_enter(); \ | 233 | rcu_irq_exit(); \ |
| 221 | } while (0) | 234 | } while (0) |
| 222 | 235 | ||
| 223 | /* | 236 | /* |
