• Paul E. McKenney's avatar
    rcu: Provide polling interfaces for Tiny RCU grace periods · 0909fc2b
    Paul E. McKenney authored
    There is a need for a non-blocking polling interface for RCU grace
    periods, so this commit supplies start_poll_synchronize_rcu() and
    poll_state_synchronize_rcu() for this purpose.  Note that the existing
    get_state_synchronize_rcu() may be used if future grace periods are
    inevitable (perhaps due to a later call_rcu() invocation).  The new
    start_poll_synchronize_rcu() is to be used if future grace periods
    might not otherwise happen.  Finally, poll_state_synchronize_rcu()
    provides a lockless check for a grace period having elapsed since
    the corresponding call to either of the get_state_synchronize_rcu()
    or start_poll_synchronize_rcu().
    
    As with get_state_synchronize_rcu(), the return value from either
    get_state_synchronize_rcu() or start_poll_synchronize_rcu() is passed in
    to a later call to either poll_state_synchronize_rcu() or the existing
    (might_sleep) cond_synchronize_rcu().
    
    [ paulmck: Revert cond_synchronize_rcu() to might_sleep() per Frederic Weisbecker feedback. ]
    Reviewed-by: default avatarFrederic Weisbecker <frederic@kernel.org>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    0909fc2b
tiny.c 5.91 KB