Commit 9fc98e31 authored by Paul E. McKenney's avatar Paul E. McKenney

rcu-tasks: Add block comment laying out RCU Rude design

This commit adds a block comment that gives a high-level overview of
how RCU Rude grace periods progress.  It also gives an overview of the
memory ordering.
Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 06a3ec92
...@@ -645,8 +645,13 @@ void exit_tasks_rcu_finish(void) { exit_tasks_rcu_finish_trace(current); } ...@@ -645,8 +645,13 @@ void exit_tasks_rcu_finish(void) { exit_tasks_rcu_finish_trace(current); }
// passing an empty function to schedule_on_each_cpu(). This approach // passing an empty function to schedule_on_each_cpu(). This approach
// provides an asynchronous call_rcu_tasks_rude() API and batching // provides an asynchronous call_rcu_tasks_rude() API and batching
// of concurrent calls to the synchronous synchronize_rcu_rude() API. // of concurrent calls to the synchronous synchronize_rcu_rude() API.
// This sends IPIs far and wide and induces otherwise unnecessary context // This invokes schedule_on_each_cpu() in order to send IPIs far and wide
// switches on all online CPUs, whether idle or not. // and induces otherwise unnecessary context switches on all online CPUs,
// whether idle or not.
//
// Callback handling is provided by the rcu_tasks_kthread() function.
//
// Ordering is provided by the scheduler's context-switch code.
// Empty function to allow workqueues to force a context switch. // Empty function to allow workqueues to force a context switch.
static void rcu_tasks_be_rude(struct work_struct *work) static void rcu_tasks_be_rude(struct work_struct *work)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment