Re: Real-Time Preemption and RCU

From: Paul E. McKenney
Date: Fri Mar 18 2005 - 10:57:17 EST


On Fri, Mar 18, 2005 at 04:56:41AM -0800, Bill Huey wrote:
> On Thu, Mar 17, 2005 at 04:20:26PM -0800, Paul E. McKenney wrote:
> > 5. Scalability -and- Realtime Response.
> ...
>
> > void
> > rcu_read_lock(void)
> > {
> > preempt_disable();
> > if (current->rcu_read_lock_nesting++ == 0) {
> > current->rcu_read_lock_ptr =
> > &__get_cpu_var(rcu_data).lock;
> > read_lock(current->rcu_read_lock_ptr);
> > }
> > preempt_enable();
> > }
>
> Ok, here's a rather unsure question...
>
> Uh, is that a sleep violation if that is exclusively held since it
> can block within an atomic critical section (deadlock) ?

Hey, I wasn't joking when I said that I probably got something wrong! ;-)

My current thought is that the preempt_disable()/preempt_enable() can
be dropped entirely. Messes up any tool that browses through
->rcu_read_lock_nesting, but don't see any other problem. Yet, anyway!

Thanx, Paul
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/