rcu: Is it safe to enter an RCU read-side critical section?
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sat, 7 Sep 2013 00:39:49 +0000 (17:39 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 25 Sep 2013 13:44:41 +0000 (06:44 -0700)
commitcc6783f788d8fe8b23ec6fc2762f5e8c9a418eee
treedfecd009a80c422393c2c6130d9a38ec7329e851
parentc337f8f58ed7cf150651d232af8222421a71463d
rcu: Is it safe to enter an RCU read-side critical section?

There is currently no way for kernel code to determine whether it
is safe to enter an RCU read-side critical section, in other words,
whether or not RCU is paying attention to the currently running CPU.
Given the large and increasing quantity of code shared by the idle loop
and non-idle code, the this shortcoming is becoming increasingly painful.

This commit therefore adds __rcu_is_watching(), which returns true if
it is safe to enter an RCU read-side critical section on the currently
running CPU.  This function is quite fast, using only a __this_cpu_read().
However, the caller must disable preemption.

Reported-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
include/linux/rcupdate.h
include/linux/rcutiny.h
include/linux/rcutree.h
kernel/rcutiny.c
kernel/rcutree.c