* don't use interruptible_sleep_on(), the function can lock up unless
your code is protected by the big kernel lock [and new code shoudn't
rely on that lock].
If your code doesn't need any spinlocks, then you could use
wait_event_interruptible(), otherwise copy the code from
wait_event_interruptible() and release your spinlock just before calling
schedule().
*
> static void intr_handler(void *ptr)
> {
>
> mc_tq_task.routine = defered_proc;
> mc_tq_task.data = dev;
>
> init_waitqueue_head(&mc_tq_wait);
>
> queue_task(&mc_tq_task, &tq_scheduler);
> interruptible_sleep_on(&mc_tq_wait);
>
> }
Do you try to sleep within the interrupt handler? You can't do that.
-- Manfred- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/