Для чего предназначен prepare_arch_schedule? - PullRequest
0 голосов
/ 04 мая 2010

Я возиться с ядром Linux 2.4, а функция schedule () в sched.c использует макрос prepare_arch_schedule, который выглядит действительно странно. Что это?

Вот соответствующий раздел

#ifndef prepare_arch_schedule
# define prepare_arch_schedule(prev)    do { } while(0)
# define finish_arch_schedule(prev) do { } while(0)
# define prepare_arch_switch(rq)    do { } while(0)
# define finish_arch_switch(rq)     spin_unlock_irq(&(rq)->lock)
#endif

1 Ответ

1 голос
/ 05 мая 2010

Я до сих пор не понимаю, почему вы думаете, что это бесконечный цикл :).

Это «взлом» для пустого оператора, и причина этого в том, что компилятор может пожаловаться, когда он сталкивается с пустым оператором.

Из того, что я понимаю, блокировка переключения контекста зависит от архитектуры, и поэтому для архитектур, для которых блокировка не была определена, этот пустой оператор был определен, так что вам не нужно изменять schedule () для каждой архитектуры. Отсюда #ifndef ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...