aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-01-10 22:47:10 -0500
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2015-02-25 20:03:03 -0500
commitee376dbdf27728a2f3d30e2ba10fa387cc4c645b (patch)
treea737bb2123666633ff8a0c50bb7130293bddf9bf
parentc517d838eb7d07bbe9507871fab3931deccff539 (diff)
rcu: Consolidate rcu_synchronize and wakeme_after_rcu()
There are currently duplicate identical definitions of the rcu_synchronize() structure and the wakeme_after_rcu() function. Thie commit therefore consolidates them. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r--include/linux/rcupdate.h9
-rw-r--r--kernel/rcu/srcu.c17
-rw-r--r--kernel/rcu/update.c15
3 files changed, 15 insertions, 26 deletions
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index 78097491cd99..3e6afed51051 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -195,6 +195,15 @@ void call_rcu_sched(struct rcu_head *head,
195 195
196void synchronize_sched(void); 196void synchronize_sched(void);
197 197
198/*
199 * Structure allowing asynchronous waiting on RCU.
200 */
201struct rcu_synchronize {
202 struct rcu_head head;
203 struct completion completion;
204};
205void wakeme_after_rcu(struct rcu_head *head);
206
198/** 207/**
199 * call_rcu_tasks() - Queue an RCU for invocation task-based grace period 208 * call_rcu_tasks() - Queue an RCU for invocation task-based grace period
200 * @head: structure to be used for queueing the RCU updates. 209 * @head: structure to be used for queueing the RCU updates.
diff --git a/kernel/rcu/srcu.c b/kernel/rcu/srcu.c
index 445bf8ffe3fb..81f53b504c18 100644
--- a/kernel/rcu/srcu.c
+++ b/kernel/rcu/srcu.c
@@ -402,23 +402,6 @@ void call_srcu(struct srcu_struct *sp, struct rcu_head *head,
402} 402}
403EXPORT_SYMBOL_GPL(call_srcu); 403EXPORT_SYMBOL_GPL(call_srcu);
404 404
405struct rcu_synchronize {
406 struct rcu_head head;
407 struct completion completion;
408};
409
410/*
411 * Awaken the corresponding synchronize_srcu() instance now that a
412 * grace period has elapsed.
413 */
414static void wakeme_after_rcu(struct rcu_head *head)
415{
416 struct rcu_synchronize *rcu;
417
418 rcu = container_of(head, struct rcu_synchronize, head);
419 complete(&rcu->completion);
420}
421
422static void srcu_advance_batches(struct srcu_struct *sp, int trycount); 405static void srcu_advance_batches(struct srcu_struct *sp, int trycount);
423static void srcu_reschedule(struct srcu_struct *sp); 406static void srcu_reschedule(struct srcu_struct *sp);
424 407
diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c
index e0d31a345ee6..8864ed90f0d7 100644
--- a/kernel/rcu/update.c
+++ b/kernel/rcu/update.c
@@ -199,16 +199,13 @@ EXPORT_SYMBOL_GPL(rcu_read_lock_bh_held);
199 199
200#endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */ 200#endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
201 201
202struct rcu_synchronize { 202/**
203 struct rcu_head head; 203 * wakeme_after_rcu() - Callback function to awaken a task after grace period
204 struct completion completion; 204 * @head: Pointer to rcu_head member within rcu_synchronize structure
205}; 205 *
206 206 * Awaken the corresponding task now that a grace period has elapsed.
207/*
208 * Awaken the corresponding synchronize_rcu() instance now that a
209 * grace period has elapsed.
210 */ 207 */
211static void wakeme_after_rcu(struct rcu_head *head) 208void wakeme_after_rcu(struct rcu_head *head)
212{ 209{
213 struct rcu_synchronize *rcu; 210 struct rcu_synchronize *rcu;
214 211