diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-07-04 03:22:34 +0300 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2018-08-31 02:03:07 +0300 |
commit | 98ece508b545bdaa5575ab46c68f17981516f689 (patch) | |
tree | 60ceb28ac0da66c335f5159b339e0e90283a6f47 /kernel/rcu | |
parent | 5c7d89676bc51966ea7882703d15795587e7108c (diff) | |
download | linux-98ece508b545bdaa5575ab46c68f17981516f689.tar.xz |
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: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcu')
-rw-r--r-- | kernel/rcu/tree.c | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 9f5e67e303c0..7ce691348b51 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2997,8 +2997,7 @@ EXPORT_SYMBOL_GPL(call_rcu_sched); * 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, - rcu_callback_t func) +void kfree_call_rcu(struct rcu_head *head, rcu_callback_t func) { __call_rcu(head, func, -1, 1); } @@ -3080,21 +3079,23 @@ void cond_synchronize_sched(unsigned long oldstate) EXPORT_SYMBOL_GPL(cond_synchronize_sched); /* - * Check to see if there is any immediate RCU-related work to be done - * by the current CPU, for the specified type of RCU, returning 1 if so. - * The checks are in order of increasing expense: checks that can be - * carried out against CPU-local state are performed first. However, - * we must check for CPU stalls first, else we might not get a chance. + * Check to see if there is any immediate RCU-related work to be done by + * the current CPU, for the specified type of RCU, returning 1 if so and + * zero otherwise. The checks are in order of increasing expense: checks + * that can be carried out against CPU-local state are performed first. + * 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; /* Check for CPU stalls, if enabled. */ check_cpu_stall(rdp); /* 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; /* Is the RCU core waiting for a quiescent state from this CPU? */ @@ -3125,21 +3126,6 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp) } /* - * 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 * non-NULL, store an indication of whether all callbacks are lazy. * (If there are no callbacks, all of them are deemed to be lazy.) |