Linux中奇怪的开关

lik*_*eIT 4 c linux linux-kernel

我对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:
        ;
    }
Run Code Online (Sandbox Code Playgroud)

EDITED

我从linux 2.4.18中获取它,我目前正在学习,没有评论,为什么这样

sjr*_*sjr 8

如果prev->state == TASK_RUNNING你没有最后一个案例,那么deactivate_task将被调用,这可能是不希望的.这只是一种快速的方式,可以TASK_INTERRUPTIBLE为每个其他州做一些特别的事情和不同的事情TASK_RUNNING.