[comp.unix.xenix] driver's sleep

tron@mrecvax.UUCP (Carlos Mendioroz) (11/19/88)

Has anybody seen sleep() not returning even though wakeup() has
been called ?

In a litle driver that has a ioctl() interface and an interrupt
service routine, I call sleep to wait for the device to complete
its function and then wakeup (from xxintr()) to restart execution.
Also, as I don't have a 100% probability of the device function to
complete, there is a timeout() that calls another wakeup().
So far, so good. But...
Sometimes, the ioctl() never returns. A ps will tell you that the
corresponding process is running (no WCHAN), the device shows no
activity and the process is "inmortal". (No response to any signal)

By adding some debug code, I have stated that the sleep() doesn't
return although wakeup() is called twice. (xxintr & xxtimeout)

Any help will be apreciated!
-- 
----
Carlos G. Mendioroz  <tron@mrecvax.mrec.ar>  
Work: +54 (1) 313-8082  Fax: +54 (1) 311-1249
Home: +54 (1) 71-3473 ; Malabia 2659 11 B, Buenos Aires, 1425 ARGENTINA