Why does a thread not sleep ?

From: Jos Hulzink (josh@stack.nl)
Date: Thu Jan 16 2003 - 12:15:54 EST


Hello,

In a driver, in the bottom half of an interrupt handler, I use
set_task_state (task, TASK_INTERRUPTIBLE) to make a task sleeping.
Sometimes (about 50 % of the cases), the task wakes up immediately again,
even though no signals are sent to the task. I tried TASK_UNINTERRUPTIBLE
and TASK_STOPPED too, but the same thing happens.

Can it be the task state is returned to TASK_RUNNING again in some
situations by other code ? Should I use locking, even on uniprocessor
systems ? Can a modification of the task state get lost in some situations
? I know about SMP related issues, but this doesn't even work on UP
kernels.

In other words: I don't get it. Help would be appreciated.

Thanks,

Jos
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jan 23 2003 - 22:00:13 EST