Subject: Wait queue problem

From: [email-masked]
Date: Wed, 17 Apr 2002 12:03:19 +0200

Hi,

Does anybody else have problems using wait queues in a 2.4.5 MIPS kernel?
When I try to wake up a process from an interrupt it won't start to execute.
It always waits for the timeout before resuming work. 
In principal my code look like this:

wait_queue_head_t wq;

foo() {
init_waitqueue_head(&wq);
interruptible_sleep_on_timeout(&wq,10*HZ);
}

foo_int() {
wake_up_interuptible(&wq);
}

Am I missing something? 

best regards
--
Andre Messerschmidt

Application Engineer
Infineon Technologies AG

---

From: Ralf Baechle <[email-masked]>
Date: Thu, 18 Apr 2002 18:16:53 -0700

> wake_up_interuptible(&wq);

A bad race condition in that code.  If foo_int is called before your process
had a chance to get to sleep it'll never be woken before the timeout.

  Ralf

---

From: Richard Hodges <[email-masked]>
Date: Thu, 18 Apr 2002 19:01:33 -0700 (PDT)

> had a chance to get to sleep it'll never be woken before the timeout.

That reminds me :-)  

I have looked around for a version of wait_event_interruptible() that
has a timeout (starting my search in sched.h of course).  Before I get
around to writing my own, does anyone have one already?

Thanks,

-Richard