On Wed, 26 Sep 2007, Tejun Heo wrote: > >> Hmmm... I might be missing something here. Who else can wake up a > >> thread in uninterruptible sleep? > > > > In principle, anything can. There has never been any guarantee in the > > kernel that a task sleeping on a waitqueue will remain asleep until > > the waitqueue is signalled. That's part of the reason why things like > > __wait_event() are coded as loops. > > Hmmm... I always thought the queue was because the condition can change > inbetween waking up and actually running. For example, if the condition > is !(queue empty), another task can enter the critical section and > consume the element which triggered wake up before the woken up task do.
That's the other part of the reason for using a loop. :-) Alan Stern - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/