On Sun, Apr 26, 2009 at 10:22:55PM +0200, Ingo Molnar wrote:
Well, one reason I didn't take this approach was that I didn't happen
to think of it. ;-)
Also that I hadn't heard of wait_task_context_switch().
Hmmm... Looking for wait_task_context_switch(). OK, found it.
It looks to me that this primitive won't return until the scheduler
actually decides to run something else. We instead need to have
something that stops waiting once the CPU enters the scheduler, hence
the previous thought of making rcu_qsctr_inc() do a bit of extra work.
This would be a way of making an expedited RCU-sched across all
RCU implementations. As noted in the earlier email, it would not
handle RCU or RCU-bh in a -rt kernel.
We would want to wait for all of the CPUs in parallel, though, wouldn't
we? Seems that we would not want to wait for the last CPU to do another
trip through the scheduler if it had already passed through the scheduler
while we were waiting on the earlier CPUs.
So it seems like we would still want a two-pass approach -- one pass to
capture the current state, the second pass to wait for the state to
change.
Thanx, Paul
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html