lkml.org 
[lkml]   [2018]   [Aug]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH tip/core/rcu 30/52] rcu: Remove rsp parameter from __rcu_pending()
    Date
    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>
    ---
    kernel/rcu/tree.c | 34 ++++++++++------------------------
    1 file changed, 10 insertions(+), 24 deletions(-)

    diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
    index 4af227e826a6..e347a6b2984c 100644
    --- a/kernel/rcu/tree.c
    +++ b/kernel/rcu/tree.c
    @@ -2996,8 +2996,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);
    }
    @@ -3079,21 +3078,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? */
    @@ -3123,21 +3124,6 @@ static int __rcu_pending(struct rcu_state *rsp, struct rcu_data *rdp)
    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
    * non-NULL, store an indication of whether all callbacks are lazy.
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-08-30 00:40    [W:3.796 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site