mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-14 04:41:26 +00:00
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>
This commit is contained in:
parent
595f3900f6
commit
495aa969db
@ -2597,6 +2597,20 @@ void call_rcu_bh(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(call_rcu_bh);
|
EXPORT_SYMBOL_GPL(call_rcu_bh);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Queue an RCU callback for lazy invocation after a grace period.
|
||||||
|
* This will likely be later named something like "call_rcu_lazy()",
|
||||||
|
* but this change will require some way of tagging the lazy RCU
|
||||||
|
* callbacks in the list of pending callbacks. Until then, this
|
||||||
|
* function may only be called from __kfree_rcu().
|
||||||
|
*/
|
||||||
|
void kfree_call_rcu(struct rcu_head *head,
|
||||||
|
void (*func)(struct rcu_head *rcu))
|
||||||
|
{
|
||||||
|
__call_rcu(head, func, rcu_state, -1, 1);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(kfree_call_rcu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Because a context switch is a grace period for RCU-sched and RCU-bh,
|
* Because a context switch is a grace period for RCU-sched and RCU-bh,
|
||||||
* any blocking grace-period wait automatically implies a grace period
|
* any blocking grace-period wait automatically implies a grace period
|
||||||
|
@ -688,20 +688,6 @@ void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu))
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(call_rcu);
|
EXPORT_SYMBOL_GPL(call_rcu);
|
||||||
|
|
||||||
/*
|
|
||||||
* Queue an RCU callback for lazy invocation after a grace period.
|
|
||||||
* This will likely be later named something like "call_rcu_lazy()",
|
|
||||||
* but this change will require some way of tagging the lazy RCU
|
|
||||||
* callbacks in the list of pending callbacks. Until then, this
|
|
||||||
* function may only be called from __kfree_rcu().
|
|
||||||
*/
|
|
||||||
void kfree_call_rcu(struct rcu_head *head,
|
|
||||||
void (*func)(struct rcu_head *rcu))
|
|
||||||
{
|
|
||||||
__call_rcu(head, func, &rcu_preempt_state, -1, 1);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(kfree_call_rcu);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* synchronize_rcu - wait until a grace period has elapsed.
|
* synchronize_rcu - wait until a grace period has elapsed.
|
||||||
*
|
*
|
||||||
@ -1079,22 +1065,6 @@ static void rcu_preempt_check_callbacks(int cpu)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Queue an RCU callback for lazy invocation after a grace period.
|
|
||||||
* This will likely be later named something like "call_rcu_lazy()",
|
|
||||||
* but this change will require some way of tagging the lazy RCU
|
|
||||||
* callbacks in the list of pending callbacks. Until then, this
|
|
||||||
* function may only be called from __kfree_rcu().
|
|
||||||
*
|
|
||||||
* Because there is no preemptible RCU, we use RCU-sched instead.
|
|
||||||
*/
|
|
||||||
void kfree_call_rcu(struct rcu_head *head,
|
|
||||||
void (*func)(struct rcu_head *rcu))
|
|
||||||
{
|
|
||||||
__call_rcu(head, func, &rcu_sched_state, -1, 1);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(kfree_call_rcu);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wait for an rcu-preempt grace period, but make it happen quickly.
|
* Wait for an rcu-preempt grace period, but make it happen quickly.
|
||||||
* But because preemptible RCU does not exist, map to rcu-sched.
|
* But because preemptible RCU does not exist, map to rcu-sched.
|
||||||
|
Loading…
Reference in New Issue
Block a user