If you look in dvb_frontend_thread(), there is a main loop with the following call: timeout = wait_event_interruptible_timeout(fe->wait_queue,0 != dvb_frontend_is_exiting (fe), delay);
This sleeps for a delay of 3*HZ (initially), or until the frontend thread is told to exit, or the wait queue is woken up. This is the only thing ever waiting on this wait queue. In dvb_frontend_ioctl(), there is the following: if ((cmd == FE_SET_FRONTEND) && (err == 0)) { // note: cannot use wait_event_interruptible_* here as that // causes the thread not to wake until AFTER the call here returns. This is useless // because the whole point is to have the thread wake first, and perform at least one tune wake_up_interruptible(&fe->wait_queue); while(fe->state & FESTATE_RETUNE) { dvb_delay(10); } } This is run during an FE_SET_FRONTEND ioctl. It is supposed to wake the frontend thread from its current sleep so it can set the frontend. The ioctl code above waits until it signals this has been done by entering a state which is NOT FESTATE_RETUNE. The problem is the wake_up_interruptible is not working. The frontend thread *always* sleeps for the 3*HZ. You can really see this by upping the frontend thread initial delay to 20*HZ. There will be a 20 second delay before the FE_SET_FRONTEND ioctl returns. I've tried adding a wake_up_interruptible(&fe->wait_queue) just before the dvb_delay() above, but that doesn't have any effect. Am I mistaken in thinking the wake_up_interruptible() call is supposed to wake up the tasks on the wait queue before their timeout occurs?? -- Info: To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as subject.