This is unlikely to ever happen. The reason for the bitmask is not
because I wanted to set multiple states at once - it's because I wanted
to _test_ for multiple states in one go. So instead of having code like
if (task->state == TASK_INTERRUPTIBLE || task->state == TASK_UNINTERRUPTIBLE)
...
the bitmap allows a
if (task_state & (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE))
...
Actually, they shouldn't even be considered "state bits" as much as
"reasons for sleeping bits": TASK_RUNNING is zero, indicating that is
has no reason to sleep.
I _may_ at some time consider allowing a process to have multiple sleep
reasons (for example, it may be blocked for paging during trying to go
to a normal interruptible sleep), but as I said this is fairly unlikely.
> (Uninterruptable running zombie?)
>The switch you patched does not handle such cases.
>However, after checking some uses of the task state it seems
>most checking is done by == or !=...
Most checking is still done by "==" or "!=", but that's because it had
to be done that way with the old scheme. The new numbering allows us to
do either bitwise tests _or_ equality test.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu