rcu-tasks: Add an RCU-tasks rude variant
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 3 Mar 2020 05:06:43 +0000 (21:06 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 27 Apr 2020 18:03:51 +0000 (11:03 -0700)
commitc84aad765406c4c7573ce449e8a9977ebb8f4cb9
tree32dc99eae3d82ef11ac665489c0cdd0c2661ab01
parent5873b8a94e5dae04b8e11fc798df512614e6d1e7
rcu-tasks: Add an RCU-tasks rude variant

This commit adds a "rude" variant of RCU-tasks that has as quiescent
states schedule(), cond_resched_tasks_rcu_qs(), userspace execution,
and (in theory, anyway) cond_resched().  In other words, RCU-tasks rude
readers are regions of code with preemption disabled, but excluding code
early in the CPU-online sequence and late in the CPU-offline sequence.
Updates make use of IPIs and force an IPI and a context switch on each
online CPU.  This variant is useful in some situations in tracing.

Suggested-by: Steven Rostedt <rostedt@goodmis.org>
[ paulmck: Apply EXPORT_SYMBOL_GPL() feedback from Qiujun Huang. ]
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
[ paulmck: Apply review feedback from Steve Rostedt. ]
include/linux/rcupdate.h
kernel/rcu/Kconfig
kernel/rcu/tasks.h