TASK_WAKING
TASK_DEAD | TASK_WAKING | TASK_FROZEN))
if (state != TASK_RUNNING && state != TASK_WAKING && !p->on_rq)
if (task_on_cpu(rq, p) || READ_ONCE(p->__state) == TASK_WAKING) {
WARN_ON_ONCE(state != TASK_RUNNING && state != TASK_WAKING && !p->on_rq);
block_task(rq, p, TASK_WAKING);
WRITE_ONCE(p->__state, TASK_WAKING);
if (state == TASK_RUNNING || state == TASK_WAKING)
if (READ_ONCE(p->__state) != TASK_WAKING)