Linux内核文档中的以下句子是什么意思?

时间:2017-01-08 02:51:14

标签: linux linux-kernel

在Linux内核源代码中,文件Documentation/scheduler/sched-arch.txt包含以下行。

  

您的cpu_idle例程需要遵守以下规则:

     

现在应该通过空闲例程禁用Preempt。应该只是   已启用调用schedule()然后再次禁用。

我对Linux内核世界比较陌生,所以对于cpu_idle例程的实现者,我可以想到第一行的三种可能的解释。

  1. 我们应该假设抢占已被禁用。
  2. 我们应该验证抢占被禁用
  3. 我们应该确保禁用抢占。
  4. 有更多内核经验的人是否知道正确的解释?

1 个答案:

答案 0 :(得分:3)

让人惊讶。如果您要添加对新平台的支持,请在您发布评论时更新该评论。

我还没有在很长一段时间内完成Linux内核开发,但据我所知,它应该说"在运行你的cpu_idle例程时,[内核]禁用了Preemption。您应该只启用它来调用schedule(),然后立即再次禁用它。"

例如,在PPC idle.c中,while循环以:

结束
preempt_enable_no_resched();
schedule();
preempt_disable();

并且不会触及先发制人。