diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/rcupdate.h | 25 | ||||
-rw-r--r-- | include/linux/rcupreempt.h | 10 | ||||
-rw-r--r-- | include/linux/rcutree.h | 12 |
3 files changed, 34 insertions, 13 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 0cdfdb622faa..3c89d6a2591f 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
@@ -51,7 +51,19 @@ struct rcu_head { | |||
51 | void (*func)(struct rcu_head *head); | 51 | void (*func)(struct rcu_head *head); |
52 | }; | 52 | }; |
53 | 53 | ||
54 | /* Internal to kernel, but needed by rcupreempt.h. */ | 54 | /* Exported common interfaces */ |
55 | extern void synchronize_rcu(void); | ||
56 | extern void synchronize_rcu_bh(void); | ||
57 | extern void rcu_barrier(void); | ||
58 | extern void rcu_barrier_bh(void); | ||
59 | extern void rcu_barrier_sched(void); | ||
60 | extern void synchronize_sched_expedited(void); | ||
61 | extern int sched_expedited_torture_stats(char *page); | ||
62 | |||
63 | /* Internal to kernel */ | ||
64 | extern void rcu_init(void); | ||
65 | extern void rcu_scheduler_starting(void); | ||
66 | extern int rcu_needs_cpu(int cpu); | ||
55 | extern int rcu_scheduler_active; | 67 | extern int rcu_scheduler_active; |
56 | 68 | ||
57 | #if defined(CONFIG_TREE_RCU) | 69 | #if defined(CONFIG_TREE_RCU) |
@@ -257,15 +269,4 @@ extern void call_rcu(struct rcu_head *head, | |||
257 | extern void call_rcu_bh(struct rcu_head *head, | 269 | extern void call_rcu_bh(struct rcu_head *head, |
258 | void (*func)(struct rcu_head *head)); | 270 | void (*func)(struct rcu_head *head)); |
259 | 271 | ||
260 | /* Exported common interfaces */ | ||
261 | extern void synchronize_rcu(void); | ||
262 | extern void rcu_barrier(void); | ||
263 | extern void rcu_barrier_bh(void); | ||
264 | extern void rcu_barrier_sched(void); | ||
265 | |||
266 | /* Internal to kernel */ | ||
267 | extern void rcu_init(void); | ||
268 | extern void rcu_scheduler_starting(void); | ||
269 | extern int rcu_needs_cpu(int cpu); | ||
270 | |||
271 | #endif /* __LINUX_RCUPDATE_H */ | 272 | #endif /* __LINUX_RCUPDATE_H */ |
diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h index fce522782ffa..f164ac9b7807 100644 --- a/include/linux/rcupreempt.h +++ b/include/linux/rcupreempt.h | |||
@@ -74,6 +74,16 @@ extern int rcu_needs_cpu(int cpu); | |||
74 | 74 | ||
75 | extern void __synchronize_sched(void); | 75 | extern void __synchronize_sched(void); |
76 | 76 | ||
77 | static inline void synchronize_rcu_expedited(void) | ||
78 | { | ||
79 | synchronize_rcu(); /* Placeholder for new rcupreempt implementation. */ | ||
80 | } | ||
81 | |||
82 | static inline void synchronize_rcu_bh_expedited(void) | ||
83 | { | ||
84 | synchronize_rcu_bh(); /* Placeholder for new rcupreempt impl. */ | ||
85 | } | ||
86 | |||
77 | extern void __rcu_init(void); | 87 | extern void __rcu_init(void); |
78 | extern void rcu_init_sched(void); | 88 | extern void rcu_init_sched(void); |
79 | extern void rcu_check_callbacks(int cpu, int user); | 89 | extern void rcu_check_callbacks(int cpu, int user); |
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h index 5a5153806c42..d4dfd2489633 100644 --- a/include/linux/rcutree.h +++ b/include/linux/rcutree.h | |||
@@ -286,8 +286,14 @@ static inline void __rcu_read_unlock_bh(void) | |||
286 | 286 | ||
287 | #define call_rcu_sched(head, func) call_rcu(head, func) | 287 | #define call_rcu_sched(head, func) call_rcu(head, func) |
288 | 288 | ||
289 | static inline void rcu_init_sched(void) | 289 | static inline void synchronize_rcu_expedited(void) |
290 | { | ||
291 | synchronize_sched_expedited(); | ||
292 | } | ||
293 | |||
294 | static inline void synchronize_rcu_bh_expedited(void) | ||
290 | { | 295 | { |
296 | synchronize_sched_expedited(); | ||
291 | } | 297 | } |
292 | 298 | ||
293 | extern void __rcu_init(void); | 299 | extern void __rcu_init(void); |
@@ -297,6 +303,10 @@ extern void rcu_restart_cpu(int cpu); | |||
297 | extern long rcu_batches_completed(void); | 303 | extern long rcu_batches_completed(void); |
298 | extern long rcu_batches_completed_bh(void); | 304 | extern long rcu_batches_completed_bh(void); |
299 | 305 | ||
306 | static inline void rcu_init_sched(void) | ||
307 | { | ||
308 | } | ||
309 | |||
300 | #ifdef CONFIG_NO_HZ | 310 | #ifdef CONFIG_NO_HZ |
301 | void rcu_enter_nohz(void); | 311 | void rcu_enter_nohz(void); |
302 | void rcu_exit_nohz(void); | 312 | void rcu_exit_nohz(void); |