aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreea-Cristina Bernat <bernat.ada@gmail.com>2014-03-18 14:48:48 -0400
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2014-04-29 11:45:01 -0400
commit495aa969dbaef2e3d28094a2b3c752d069932748 (patch)
tree4ffd39866a013c28d7918986b23b4e4dc8c499f7
parent595f3900f6b4221403493c530138b8dad2bd87f3 (diff)
rcu: Consolidate kfree_call_rcu() to use rcu_state pointer
kfree_call_rcu is defined two times. When defined under CONFIG_TREE_PREEMPT_RCU, it uses rcu_preempt_state. Otherwise, it uses rcu_sched_state. This patch uses the rcu_state_pointer to combine the two definitions into one. The resulting function is placed after the closing of the preprocessor conditional CONFIG_TREE_PREEMPT_RCU. Signed-off-by: Andreea-Cristina Bernat <bernat.ada@gmail.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r--kernel/rcu/tree.c14
-rw-r--r--kernel/rcu/tree_plugin.h30
2 files changed, 14 insertions, 30 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 6724bd98da7d..f3317c18b354 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2598,6 +2598,20 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
2598EXPORT_SYMBOL_GPL(call_rcu_bh); 2598EXPORT_SYMBOL_GPL(call_rcu_bh);
2599 2599
2600/* 2600/*
2601 * Queue an RCU callback for lazy invocation after a grace period.
2602 * This will likely be later named something like "call_rcu_lazy()",
2603 * but this change will require some way of tagging the lazy RCU
2604 * callbacks in the list of pending callbacks. Until then, this
2605 * function may only be called from __kfree_rcu().
2606 */
2607void kfree_call_rcu(struct rcu_head *head,
2608 void (*func)(struct rcu_head *rcu))
2609{
2610 __call_rcu(head, func, rcu_state, -1, 1);
2611}
2612EXPORT_SYMBOL_GPL(kfree_call_rcu);
2613
2614/*
2601 * Because a context switch is a grace period for RCU-sched and RCU-bh, 2615 * Because a context switch is a grace period for RCU-sched and RCU-bh,
2602 * any blocking grace-period wait automatically implies a grace period 2616 * any blocking grace-period wait automatically implies a grace period
2603 * if there is only one CPU online at any point time during execution 2617 * if there is only one CPU online at any point time during execution
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h
index 0cb0816036c5..4918a1243efb 100644
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -688,20 +688,6 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
688} 688}
689EXPORT_SYMBOL_GPL(call_rcu); 689EXPORT_SYMBOL_GPL(call_rcu);
690 690
691/*
692 * Queue an RCU callback for lazy invocation after a grace period.
693 * This will likely be later named something like "call_rcu_lazy()",
694 * but this change will require some way of tagging the lazy RCU
695 * callbacks in the list of pending callbacks. Until then, this
696 * function may only be called from __kfree_rcu().
697 */
698void kfree_call_rcu(struct rcu_head *head,
699 void (*func)(struct rcu_head *rcu))
700{
701 __call_rcu(head, func, &rcu_preempt_state, -1, 1);
702}
703EXPORT_SYMBOL_GPL(kfree_call_rcu);
704
705/** 691/**
706 * synchronize_rcu - wait until a grace period has elapsed. 692 * synchronize_rcu - wait until a grace period has elapsed.
707 * 693 *
@@ -1080,22 +1066,6 @@ static void rcu_preempt_check_callbacks(int cpu)
1080} 1066}
1081 1067
1082/* 1068/*
1083 * Queue an RCU callback for lazy invocation after a grace period.
1084 * This will likely be later named something like "call_rcu_lazy()",
1085 * but this change will require some way of tagging the lazy RCU
1086 * callbacks in the list of pending callbacks. Until then, this
1087 * function may only be called from __kfree_rcu().
1088 *
1089 * Because there is no preemptible RCU, we use RCU-sched instead.
1090 */
1091void kfree_call_rcu(struct rcu_head *head,
1092 void (*func)(struct rcu_head *rcu))
1093{
1094 __call_rcu(head, func, &rcu_sched_state, -1, 1);
1095}
1096EXPORT_SYMBOL_GPL(kfree_call_rcu);
1097
1098/*
1099 * Wait for an rcu-preempt grace period, but make it happen quickly. 1069 * Wait for an rcu-preempt grace period, but make it happen quickly.
1100 * But because preemptible RCU does not exist, map to rcu-sched. 1070 * But because preemptible RCU does not exist, map to rcu-sched.
1101 */ 1071 */