Commit 98ece508 authored by Paul E. McKenney's avatar Paul E. McKenney

rcu: Remove rsp parameter from __rcu_pending()

There now is only one rcu_state structure in a given build of the Linux
kernel, so there is no need to pass it as a parameter to RCU's functions.
This commit therefore removes the rsp parameter from __rcu_pending(),
and also inlines it into rcu_pending(), removing the for_each_rcu_flavor()
while in the neighborhood..
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 5c7d8967
...@@ -2997,8 +2997,7 @@ EXPORT_SYMBOL_GPL(call_rcu_sched); ...@@ -2997,8 +2997,7 @@ EXPORT_SYMBOL_GPL(call_rcu_sched);
* callbacks in the list of pending callbacks. Until then, this * callbacks in the list of pending callbacks. Until then, this
* function may only be called from __kfree_rcu(). * function may only be called from __kfree_rcu().
*/ */
void kfree_call_rcu(struct rcu_head *head, void kfree_call_rcu(struct rcu_head *head, rcu_callback_t func)
rcu_callback_t func)
{ {
__call_rcu(head, func, -1, 1); __call_rcu(head, func, -1, 1);
} }
...@@ -3080,21 +3079,23 @@ void cond_synchronize_sched(unsigned long oldstate) ...@@ -3080,21 +3079,23 @@ void cond_synchronize_sched(unsigned long oldstate)
EXPORT_SYMBOL_GPL(cond_synchronize_sched); EXPORT_SYMBOL_GPL(cond_synchronize_sched);
/* /*
* Check to see if there is any immediate RCU-related work to be done * Check to see if there is any immediate RCU-related work to be done by
* by the current CPU, for the specified type of RCU, returning 1 if so. * the current CPU, for the specified type of RCU, returning 1 if so and
* The checks are in order of increasing expense: checks that can be * zero otherwise. The checks are in order of increasing expense: checks
* carried out against CPU-local state are performed first. However, * that can be carried out against CPU-local state are performed first.
* we must check for CPU stalls first, else we might not get a chance. * However, we must check for CPU stalls first, else we might not get
* a chance.
*/ */
static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) static int rcu_pending(void)
{ {
struct rcu_data *rdp = this_cpu_ptr(&rcu_data);
struct rcu_node *rnp = rdp->mynode; struct rcu_node *rnp = rdp->mynode;
/* Check for CPU stalls, if enabled. */ /* Check for CPU stalls, if enabled. */
check_cpu_stall(rdp); check_cpu_stall(rdp);
/* Is this CPU a NO_HZ_FULL CPU that should ignore RCU? */ /* Is this CPU a NO_HZ_FULL CPU that should ignore RCU? */
if (rcu_nohz_full_cpu(rsp)) if (rcu_nohz_full_cpu(&rcu_state))
return 0; return 0;
/* Is the RCU core waiting for a quiescent state from this CPU? */ /* Is the RCU core waiting for a quiescent state from this CPU? */
...@@ -3124,21 +3125,6 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) ...@@ -3124,21 +3125,6 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp)
return 0; return 0;
} }
/*
* Check to see if there is any immediate RCU-related work to be done
* by the current CPU, returning 1 if so. This function is part of the
* RCU implementation; it is -not- an exported member of the RCU API.
*/
static int rcu_pending(void)
{
struct rcu_state *rsp;
for_each_rcu_flavor(rsp)
if (__rcu_pending(rsp, this_cpu_ptr(&rcu_data)))
return 1;
return 0;
}
/* /*
* Return true if the specified CPU has any callback. If all_lazy is * Return true if the specified CPU has any callback. If all_lazy is
* non-NULL, store an indication of whether all callbacks are lazy. * non-NULL, store an indication of whether all callbacks are lazy.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment