On Fri, Apr 16, 2010 at 04:54:51PM +1000, Benjamin Herrenschmidt wrote:
From the perspective of call_rcu_sched() and synchronize_sched(),
the following things mark RCU-sched read-side critical sections:
1. rcu_read_lock_sched() and rcu_read_unlock_sched().
2. preempt_disable() and preempt_enable(), along with anything
else that disables preemption.
3. local_bh_disable() and local_bh_enable(), along with anything
else that disables bottom halves.
4. local_irq_disable() and local_irq_enable(), along wiht anything
else that disables hardirqs.
5. Handlers for NMIs.
So I believe that in this case call_rcu_sched() is your friend. ;-)
Thanx, Paul
--