lkml.org 
[lkml]   [2020]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 tip/core/rcu 06/34] rcu: Reinstate synchronize_rcu_mult()
    Date
    From: "Paul E. McKenney" <paulmck@kernel.org>

    With the advent and likely usage of synchronize_rcu_rude(), there is
    again a need to wait on multiple types of RCU grace periods, for
    example, call_rcu_tasks() and call_rcu_tasks_rude(). This commit
    therefore reinstates synchronize_rcu_mult() in order to allow these
    grace periods to be straightforwardly waited on concurrently.

    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    ---
    include/linux/rcupdate_wait.h | 19 +++++++++++++++++++
    1 file changed, 19 insertions(+)

    diff --git a/include/linux/rcupdate_wait.h b/include/linux/rcupdate_wait.h
    index c0578ba..699b938 100644
    --- a/include/linux/rcupdate_wait.h
    +++ b/include/linux/rcupdate_wait.h
    @@ -31,4 +31,23 @@ do { \

    #define wait_rcu_gp(...) _wait_rcu_gp(false, __VA_ARGS__)

    +/**
    + * synchronize_rcu_mult - Wait concurrently for multiple grace periods
    + * @...: List of call_rcu() functions for different grace periods to wait on
    + *
    + * This macro waits concurrently for multiple types of RCU grace periods.
    + * For example, synchronize_rcu_mult(call_rcu, call_rcu_tasks) would wait
    + * on concurrent RCU and RCU-tasks grace periods. Waiting on a given SRCU
    + * domain requires you to write a wrapper function for that SRCU domain's
    + * call_srcu() function, with this wrapper supplying the pointer to the
    + * corresponding srcu_struct.
    + *
    + * The first argument tells Tiny RCU's _wait_rcu_gp() not to
    + * bother waiting for RCU. The reason for this is because anywhere
    + * synchronize_rcu_mult() can be called is automatically already a full
    + * grace period.
    + */
    +#define synchronize_rcu_mult(...) \
    + _wait_rcu_gp(IS_ENABLED(CONFIG_TINY_RCU), __VA_ARGS__)
    +
    #endif /* _LINUX_SCHED_RCUPDATE_WAIT_H */
    --
    2.9.5
    \
     
     \ /
      Last update: 2020-03-27 23:28    [W:4.104 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site