diff options
-rw-r--r-- | include/linux/rcutree.h | 6 | ||||
-rw-r--r-- | kernel/rcupdate.c | 3 | ||||
-rw-r--r-- | kernel/rcutorture.c | 4 | ||||
-rw-r--r-- | kernel/rcutree.c | 23 | ||||
-rw-r--r-- | kernel/rcutree.h | 26 | ||||
-rw-r--r-- | kernel/rcutree_trace.c | 12 |
6 files changed, 37 insertions, 37 deletions
diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h index 19a3b06943e0..46e9ab3ee6e1 100644 --- a/include/linux/rcutree.h +++ b/include/linux/rcutree.h | |||
@@ -30,10 +30,14 @@ | |||
30 | #ifndef __LINUX_RCUTREE_H | 30 | #ifndef __LINUX_RCUTREE_H |
31 | #define __LINUX_RCUTREE_H | 31 | #define __LINUX_RCUTREE_H |
32 | 32 | ||
33 | struct notifier_block; | ||
34 | |||
33 | extern void rcu_sched_qs(int cpu); | 35 | extern void rcu_sched_qs(int cpu); |
34 | extern void rcu_bh_qs(int cpu); | 36 | extern void rcu_bh_qs(int cpu); |
35 | 37 | extern int rcu_cpu_notify(struct notifier_block *self, | |
38 | unsigned long action, void *hcpu); | ||
36 | extern int rcu_needs_cpu(int cpu); | 39 | extern int rcu_needs_cpu(int cpu); |
40 | extern int rcu_expedited_torture_stats(char *page); | ||
37 | 41 | ||
38 | #ifdef CONFIG_TREE_PREEMPT_RCU | 42 | #ifdef CONFIG_TREE_PREEMPT_RCU |
39 | 43 | ||
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index 37ac45483082..8e795133b33d 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
@@ -259,9 +259,6 @@ static void rcu_migrate_callback(struct rcu_head *notused) | |||
259 | wake_up(&rcu_migrate_wq); | 259 | wake_up(&rcu_migrate_wq); |
260 | } | 260 | } |
261 | 261 | ||
262 | extern int rcu_cpu_notify(struct notifier_block *self, | ||
263 | unsigned long action, void *hcpu); | ||
264 | |||
265 | static int __cpuinit rcu_barrier_cpu_hotplug(struct notifier_block *self, | 262 | static int __cpuinit rcu_barrier_cpu_hotplug(struct notifier_block *self, |
266 | unsigned long action, void *hcpu) | 263 | unsigned long action, void *hcpu) |
267 | { | 264 | { |
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c index 233768f21f97..697c0a0229d4 100644 --- a/kernel/rcutorture.c +++ b/kernel/rcutorture.c | |||
@@ -606,8 +606,6 @@ static struct rcu_torture_ops sched_ops_sync = { | |||
606 | .name = "sched_sync" | 606 | .name = "sched_sync" |
607 | }; | 607 | }; |
608 | 608 | ||
609 | extern int rcu_expedited_torture_stats(char *page); | ||
610 | |||
611 | static struct rcu_torture_ops sched_expedited_ops = { | 609 | static struct rcu_torture_ops sched_expedited_ops = { |
612 | .init = rcu_sync_torture_init, | 610 | .init = rcu_sync_torture_init, |
613 | .cleanup = NULL, | 611 | .cleanup = NULL, |
@@ -650,7 +648,7 @@ rcu_torture_writer(void *arg) | |||
650 | old_rp = rcu_torture_current; | 648 | old_rp = rcu_torture_current; |
651 | rp->rtort_mbtest = 1; | 649 | rp->rtort_mbtest = 1; |
652 | rcu_assign_pointer(rcu_torture_current, rp); | 650 | rcu_assign_pointer(rcu_torture_current, rp); |
653 | smp_wmb(); | 651 | smp_wmb(); /* Mods to old_rp must follow rcu_assign_pointer() */ |
654 | if (old_rp) { | 652 | if (old_rp) { |
655 | i = old_rp->rtort_pipe_count; | 653 | i = old_rp->rtort_pipe_count; |
656 | if (i > RCU_TORTURE_PIPE_LEN) | 654 | if (i > RCU_TORTURE_PIPE_LEN) |
diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 53a5ef0ca911..8e52cde7b8f7 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
@@ -81,29 +81,6 @@ DEFINE_PER_CPU(struct rcu_data, rcu_sched_data); | |||
81 | struct rcu_state rcu_bh_state = RCU_STATE_INITIALIZER(rcu_bh_state); | 81 | struct rcu_state rcu_bh_state = RCU_STATE_INITIALIZER(rcu_bh_state); |
82 | DEFINE_PER_CPU(struct rcu_data, rcu_bh_data); | 82 | DEFINE_PER_CPU(struct rcu_data, rcu_bh_data); |
83 | 83 | ||
84 | /* Forward declarations for rcutree_plugin.h */ | ||
85 | static inline void rcu_bootup_announce(void); | ||
86 | long rcu_batches_completed(void); | ||
87 | static void rcu_preempt_note_context_switch(int cpu); | ||
88 | static int rcu_preempted_readers(struct rcu_node *rnp); | ||
89 | #ifdef CONFIG_RCU_CPU_STALL_DETECTOR | ||
90 | static void rcu_print_task_stall(struct rcu_node *rnp); | ||
91 | #endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */ | ||
92 | static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp); | ||
93 | #ifdef CONFIG_HOTPLUG_CPU | ||
94 | static void rcu_preempt_offline_tasks(struct rcu_state *rsp, | ||
95 | struct rcu_node *rnp, | ||
96 | struct rcu_data *rdp); | ||
97 | static void rcu_preempt_offline_cpu(int cpu); | ||
98 | #endif /* #ifdef CONFIG_HOTPLUG_CPU */ | ||
99 | static void rcu_preempt_check_callbacks(int cpu); | ||
100 | static void rcu_preempt_process_callbacks(void); | ||
101 | void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)); | ||
102 | static int rcu_preempt_pending(int cpu); | ||
103 | static int rcu_preempt_needs_cpu(int cpu); | ||
104 | static void __cpuinit rcu_preempt_init_percpu_data(int cpu); | ||
105 | static void __init __rcu_init_preempt(void); | ||
106 | |||
107 | 84 | ||
108 | /* | 85 | /* |
109 | * Return true if an RCU grace period is in progress. The ACCESS_ONCE()s | 86 | * Return true if an RCU grace period is in progress. The ACCESS_ONCE()s |
diff --git a/kernel/rcutree.h b/kernel/rcutree.h index a48d11f37b4c..e6ab31cc28ba 100644 --- a/kernel/rcutree.h +++ b/kernel/rcutree.h | |||
@@ -270,5 +270,29 @@ extern struct rcu_state rcu_preempt_state; | |||
270 | DECLARE_PER_CPU(struct rcu_data, rcu_preempt_data); | 270 | DECLARE_PER_CPU(struct rcu_data, rcu_preempt_data); |
271 | #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */ | 271 | #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */ |
272 | 272 | ||
273 | #endif /* #ifdef RCU_TREE_NONCORE */ | 273 | #else /* #ifdef RCU_TREE_NONCORE */ |
274 | 274 | ||
275 | /* Forward declarations for rcutree_plugin.h */ | ||
276 | static inline void rcu_bootup_announce(void); | ||
277 | long rcu_batches_completed(void); | ||
278 | static void rcu_preempt_note_context_switch(int cpu); | ||
279 | static int rcu_preempted_readers(struct rcu_node *rnp); | ||
280 | #ifdef CONFIG_RCU_CPU_STALL_DETECTOR | ||
281 | static void rcu_print_task_stall(struct rcu_node *rnp); | ||
282 | #endif /* #ifdef CONFIG_RCU_CPU_STALL_DETECTOR */ | ||
283 | static void rcu_preempt_check_blocked_tasks(struct rcu_node *rnp); | ||
284 | #ifdef CONFIG_HOTPLUG_CPU | ||
285 | static void rcu_preempt_offline_tasks(struct rcu_state *rsp, | ||
286 | struct rcu_node *rnp, | ||
287 | struct rcu_data *rdp); | ||
288 | static void rcu_preempt_offline_cpu(int cpu); | ||
289 | #endif /* #ifdef CONFIG_HOTPLUG_CPU */ | ||
290 | static void rcu_preempt_check_callbacks(int cpu); | ||
291 | static void rcu_preempt_process_callbacks(void); | ||
292 | void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)); | ||
293 | static int rcu_preempt_pending(int cpu); | ||
294 | static int rcu_preempt_needs_cpu(int cpu); | ||
295 | static void __cpuinit rcu_preempt_init_percpu_data(int cpu); | ||
296 | static void __init __rcu_init_preempt(void); | ||
297 | |||
298 | #endif /* #else #ifdef RCU_TREE_NONCORE */ | ||
diff --git a/kernel/rcutree_trace.c b/kernel/rcutree_trace.c index c89f5e9fd173..f09af28b8262 100644 --- a/kernel/rcutree_trace.c +++ b/kernel/rcutree_trace.c | |||
@@ -93,7 +93,7 @@ static int rcudata_open(struct inode *inode, struct file *file) | |||
93 | return single_open(file, show_rcudata, NULL); | 93 | return single_open(file, show_rcudata, NULL); |
94 | } | 94 | } |
95 | 95 | ||
96 | static struct file_operations rcudata_fops = { | 96 | static const struct file_operations rcudata_fops = { |
97 | .owner = THIS_MODULE, | 97 | .owner = THIS_MODULE, |
98 | .open = rcudata_open, | 98 | .open = rcudata_open, |
99 | .read = seq_read, | 99 | .read = seq_read, |
@@ -145,7 +145,7 @@ static int rcudata_csv_open(struct inode *inode, struct file *file) | |||
145 | return single_open(file, show_rcudata_csv, NULL); | 145 | return single_open(file, show_rcudata_csv, NULL); |
146 | } | 146 | } |
147 | 147 | ||
148 | static struct file_operations rcudata_csv_fops = { | 148 | static const struct file_operations rcudata_csv_fops = { |
149 | .owner = THIS_MODULE, | 149 | .owner = THIS_MODULE, |
150 | .open = rcudata_csv_open, | 150 | .open = rcudata_csv_open, |
151 | .read = seq_read, | 151 | .read = seq_read, |
@@ -159,7 +159,7 @@ static void print_one_rcu_state(struct seq_file *m, struct rcu_state *rsp) | |||
159 | struct rcu_node *rnp; | 159 | struct rcu_node *rnp; |
160 | 160 | ||
161 | seq_printf(m, "c=%ld g=%ld s=%d jfq=%ld j=%x " | 161 | seq_printf(m, "c=%ld g=%ld s=%d jfq=%ld j=%x " |
162 | "nfqs=%lu/nfqsng=%lu(%lu) fqlh=%lu\n", | 162 | "nfqs=%lu/nfqsng=%lu(%lu) fqlh=%lu\n", |
163 | rsp->completed, rsp->gpnum, rsp->signaled, | 163 | rsp->completed, rsp->gpnum, rsp->signaled, |
164 | (long)(rsp->jiffies_force_qs - jiffies), | 164 | (long)(rsp->jiffies_force_qs - jiffies), |
165 | (int)(jiffies & 0xffff), | 165 | (int)(jiffies & 0xffff), |
@@ -196,7 +196,7 @@ static int rcuhier_open(struct inode *inode, struct file *file) | |||
196 | return single_open(file, show_rcuhier, NULL); | 196 | return single_open(file, show_rcuhier, NULL); |
197 | } | 197 | } |
198 | 198 | ||
199 | static struct file_operations rcuhier_fops = { | 199 | static const struct file_operations rcuhier_fops = { |
200 | .owner = THIS_MODULE, | 200 | .owner = THIS_MODULE, |
201 | .open = rcuhier_open, | 201 | .open = rcuhier_open, |
202 | .read = seq_read, | 202 | .read = seq_read, |
@@ -222,7 +222,7 @@ static int rcugp_open(struct inode *inode, struct file *file) | |||
222 | return single_open(file, show_rcugp, NULL); | 222 | return single_open(file, show_rcugp, NULL); |
223 | } | 223 | } |
224 | 224 | ||
225 | static struct file_operations rcugp_fops = { | 225 | static const struct file_operations rcugp_fops = { |
226 | .owner = THIS_MODULE, | 226 | .owner = THIS_MODULE, |
227 | .open = rcugp_open, | 227 | .open = rcugp_open, |
228 | .read = seq_read, | 228 | .read = seq_read, |
@@ -276,7 +276,7 @@ static int rcu_pending_open(struct inode *inode, struct file *file) | |||
276 | return single_open(file, show_rcu_pending, NULL); | 276 | return single_open(file, show_rcu_pending, NULL); |
277 | } | 277 | } |
278 | 278 | ||
279 | static struct file_operations rcu_pending_fops = { | 279 | static const struct file_operations rcu_pending_fops = { |
280 | .owner = THIS_MODULE, | 280 | .owner = THIS_MODULE, |
281 | .open = rcu_pending_open, | 281 | .open = rcu_pending_open, |
282 | .read = seq_read, | 282 | .read = seq_read, |