Re: [PATCH] rcu: Is it safe to enter an RCU read-side criticalsection?

From: Steven Rostedt
Date: Mon Sep 09 2013 - 09:55:23 EST


On Mon, 9 Sep 2013 06:46:05 -0700
"Paul E. McKenney" <paulmck@xxxxxxxxxxxxxxxxxx> wrote:


> > Also, if its per-task, why don't we have this in the task struct? The
> > current scheme makes the context switch more expensive -- is this the
> > right trade-off?
>
> There are constraints based on the task, but RCU really is
> paying attention to CPUs, not than tasks. (With the exception of
> TREE_PREEMPT_RCU, which does keep lists of tasks that it has to pay
> attention to, namely those that have been preempted within their current
> RCU read-side critical section.)

Conceptually wise, RCU keeps track of task state, not CPU state. In all
your diagrams in your presentations, where you talk about grace periods
and quiescent states, you show tasks, not CPUs.

RCU's implementation is based on CPUs, and only when rcu_read_lock()
prevents preemption. As you stated above, TREE_PREEMPT_RCU needs to
keep track of tasks.

I think you are too deep into the implementation, that you are
forgetting the concept that you created :-)

-- Steve

--
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/