【发布时间】:2014-06-11 22:12:48
【问题描述】:
ARM 的 Linux 内核基本上是循环处理 CPU_idle:
while (1) {
disalbe_irq
wfi
enable_irq
}
我可以理解这个逻辑是有效的,因为“wfi”会唤醒 ARM,而不管 IRQ/FIQ 状态如何。但是,为什么“wfi”首先要被disable_irq和eanble_irq括起来呢?
源码/arch/arm/process.c有以下几点说明:
* We need to disable interrupts here
* to ensure we don't miss a wakeup call.
但我无法理解它。有人能告诉我在哪种情况下我们会错过叫醒电话吗?
【问题讨论】: