我正在搞乱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
答案 0 :(得分:1)
我仍然不明白为什么你认为这是一个无限循环:)。
对于空语句而言,这是一个“黑客”,原因在于它是因为编译器在遇到空语句时会抱怨。
据我所知,上下文切换锁定依赖于体系结构,因此,对于尚未定义锁定的体系结构,此空语句已定义,因此您无需修改每个体系结构的schedule()。因此#ifndef ...