![]() | |||||||||||||
Messages in this thread |
On 11/23, Paul E. McKenney wrote: > > For general use, I believe that this has > difficulties with the sequence of events I sent out on November 20th, see: > > http://marc.theaimsgroup.com/?l=linux-kernel&m=116397154808901&w=2 > > ... > > I don't understand why an unlucky sequence of events mightn't be able > to hang this __wait_event(). Suppose we did the atomic_dec_and_test(), > then some other CPU executed xxx_read_unlock(), finding no one to awaken, > then we execute the __wait_event()? Please note how ->ctr[] is initialized, atomic_set(sp->ctr + 0, 1); <---- 1, not 0 atomic_set(sp->ctr + 1, 0); atomic_read(sp->ctr + idx) == 0 means that this counter is inactive, nobody use it. Oleg. - 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/ | ||||||||||||
| Last update: 2006-11-23 22:51 [from the cache] ©2003-2008 | |||||||||||||