• Paul E. McKenney's avatar
    rcu-tasks: Make rcu_barrier_tasks*() handle multiple callback queues · ce9b1c66
    Paul E. McKenney authored
    
    
    Currently, rcu_barrier_tasks(), rcu_barrier_tasks_rude(),
    and rcu_barrier_tasks_trace() simply invoke the corresponding
    synchronize_rcu_tasks*() function.  This works because there is only
    one callback queue.
    
    However, there will soon be multiple callback queues.  This commit
    therefore scans the queues currently in use, entraining a callback on
    each non-empty queue.  Sequence numbers and reference counts are used
    to synchronize this process in a manner similar to the approach taken
    by rcu_barrier().
    Reported-by: default avatarMartin Lau <kafai@fb.com>
    Cc: Neeraj Upadhyay <neeraj.iitr10@gmail.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    ce9b1c66
tasks.h 54.2 KB