странный переключатель в Linux - PullRequest
4 голосов
/ 24 апреля 2011

У меня есть вопрос по поводу следующего переключателя в ядре 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:
        ;
    }

EDITED

Я взял его из Linux 2.4.18, который я сейчас изучаю, там нет комментариев о том, почему так

Ответы [ 2 ]

8 голосов
/ 24 апреля 2011

Если prev->state == TASK_RUNNING и у вас нет последнего случая, то будет вызван deactivate_task, что, по-видимому, здесь нежелательно.Это просто быстрый способ сделать что-то особенное для TASK_INTERRUPTIBLE и что-то особенное для любого другого состояния, но TASK_RUNNING.

1 голос
/ 24 апреля 2011

Вот что они там делают:

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().
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...