0

我在搞乱 Linux 内核 2.4 和 sched.c 中的函数 schedule() 使用宏 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
4

1 回答 1

1

我仍然不明白为什么你认为这是一个无限循环:)。

这是一个空语句的“黑客”,它存在的原因是因为编译器在遇到空语句时会抱怨。

据我了解,上下文切换锁定依赖于体系结构,因此,对于尚未定义锁定的体系结构,定义了这个空语句,因此您不必为每个体系结构修改 schedule()。因此#ifndef ...

于 2010-05-05T15:27:45.837 回答