aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/rcupdate.h25
-rw-r--r--include/linux/rcupreempt.h10
-rw-r--r--include/linux/rcutree.h12
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 */
55extern void synchronize_rcu(void);
56extern void synchronize_rcu_bh(void);
57extern void rcu_barrier(void);
58extern void rcu_barrier_bh(void);
59extern void rcu_barrier_sched(void);
60extern void synchronize_sched_expedited(void);
61extern int sched_expedited_torture_stats(char *page);
62
63/* Internal to kernel */
64extern void rcu_init(void);
65extern void rcu_scheduler_starting(void);
66extern int rcu_needs_cpu(int cpu);
55extern int rcu_scheduler_active; 67extern 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,
257extern void call_rcu_bh(struct rcu_head *head, 269extern 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 */
261extern void synchronize_rcu(void);
262extern void rcu_barrier(void);
263extern void rcu_barrier_bh(void);
264extern void rcu_barrier_sched(void);
265
266/* Internal to kernel */
267extern void rcu_init(void);
268extern void rcu_scheduler_starting(void);
269extern 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
75extern void __synchronize_sched(void); 75extern void __synchronize_sched(void);
76 76
77static inline void synchronize_rcu_expedited(void)
78{
79 synchronize_rcu(); /* Placeholder for new rcupreempt implementation. */
80}
81
82static inline void synchronize_rcu_bh_expedited(void)
83{
84 synchronize_rcu_bh(); /* Placeholder for new rcupreempt impl. */
85}
86
77extern void __rcu_init(void); 87extern void __rcu_init(void);
78extern void rcu_init_sched(void); 88extern void rcu_init_sched(void);
79extern void rcu_check_callbacks(int cpu, int user); 89extern 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
289static inline void rcu_init_sched(void) 289static inline void synchronize_rcu_expedited(void)
290{
291 synchronize_sched_expedited();
292}
293
294static inline void synchronize_rcu_bh_expedited(void)
290{ 295{
296 synchronize_sched_expedited();
291} 297}
292 298
293extern void __rcu_init(void); 299extern void __rcu_init(void);
@@ -297,6 +303,10 @@ extern void rcu_restart_cpu(int cpu);
297extern long rcu_batches_completed(void); 303extern long rcu_batches_completed(void);
298extern long rcu_batches_completed_bh(void); 304extern long rcu_batches_completed_bh(void);
299 305
306static inline void rcu_init_sched(void)
307{
308}
309
300#ifdef CONFIG_NO_HZ 310#ifdef CONFIG_NO_HZ
301void rcu_enter_nohz(void); 311void rcu_enter_nohz(void);
302void rcu_exit_nohz(void); 312void rcu_exit_nohz(void);