gpt4 book ai didi

linux-kernel - 这段代码如何在 Linux 内核中运行?

转载 作者:行者123 更新时间:2023-12-04 04:38:56 24 4
gpt4 key购买 nike

在linux内核中,文件arch/arm/mach-exynos/cpuidle.c中,有如下代码:

    local_irq_disable();

cpu_do_idle();

local_irq_enable();

cpu_do_idle 在哪里
    dsb         
wfi
mov pc, lr

在 cpu_do_idle 中,它执行代表等待中断的“wfi”命令。
但是,我不明白的是它在禁用 irq 后进入 cpu_do_idle。
这是怎么发生的?

最佳答案

WFI等待硬件中断,不管 CPU 的当前中断处理状态。当 CPU 被唤醒时,它有机会重新启用中断并处理任何挂起的中断:

WFI suspends execution until one of the following events occurs:

  • an IRQ interrupt, regardless of the CPSR I-bit

  • an FIQ interrupt, regardless of the CPSR F-bit

  • an Imprecise Data abort, unless masked by the CPSR A-bit

  • a Debug Entry request, regardless of whether Debug is enabled.



http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/CIHEGBBF.html

关于linux-kernel - 这段代码如何在 Linux 内核中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com