我对Linux内核中的以下开关有一些疑问,有人可以解释最后case
,为什么我需要这个案例,如果它是空的?提前谢谢
switch (prev->state) {
case TASK_INTERRUPTIBLE:
if (unlikely(signal_pending(prev))) {
prev->state = TASK_RUNNING;
break;
}
default:
deactivate_task(prev, rq);
case TASK_RUNNING:
;
}
我从linux 2.4.18中获取它,我目前正在学习,没有评论,为什么这样
答案 0 :(得分:8)
如果prev->state == TASK_RUNNING
并且您没有最后一个案例,则会调用deactivate_task
,这可能是不希望的。这只是为TASK_INTERRUPTIBLE
执行特殊操作的快速方法,以及TASK_RUNNING
之外的其他所有州的不同内容。
答案 1 :(得分:1)
以下是他们在那里做的事情:
If prev->state == TASK_RUNNING -> do nothing.
If prev->state == TASK_INTERRUPTIBLE - > signal_pending() and then possibly deactivate_task()
In any other case just deactivate_task().