Messages in this thread | | | Date | Tue, 31 Aug 2004 17:57:50 -0700 | From | "Paul E. McKenney" <> | Subject | Re: [RFC&PATCH] Alternative RCU implementation |
| |
On Tue, Aug 31, 2004 at 08:10:50PM -0400, Jim Houston wrote: > On Mon, 2004-08-30 at 13:38, Dipankar Sarma wrote: > > > > I'm also trying to figure out if I need the call_rcu_bh() changes. > > > Since my patch will recognize a grace periods as soon as any > > > pending read-side critical sections complete, I suspect that I > > > don't need this change. > > > > Except that under a softirq flood, a reader in a different read-side > > critical section may get delayed a lot holding up RCU. Let me know > > if I am missing something here. > > Hi Dipankar, > > O.k. That makes sense. So the rcu_read_lock_bh(), rcu_read_unlock_bh() > and call_rcu_bh() would be the preferred interface. Are there cases > where they can't be used? How do you decide where to use the _bh > flavor?
Hello, Jim,
You would use rcu_read_lock() instead of rcu_read_lock_bh() in cases where you did not want the read-side code to disable bottom halves. This is very similar to choosing between read_lock() and read_lock_bh() -- if you unnecessarily use read_lock_bh() or rcu_read_lock_bh(), you will be unnecessarily delaying drivers' bottom-half execution.
> I see that local_bh_enable() WARNS if interrupts are disabled. Is that > the issue? Are rcu_read_lock()/rcu_read_unlock() ever called from > code which disables interrupts?
The RCU "_bh()" interfaces correspond to a different set of quiescent states than do the standard interfaces. You could indeed use rcu_read_lock() with interrupts disabled, but I don't know of any such use.
Thanx, Paul
> Jim Houston - Concurrent Computer Corp. > > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |