gpt4 book ai didi

linux-kernel - irqs_disabled() 与 in_interrupt() 在 linux 中

转载 作者:行者123 更新时间:2023-12-04 18:06:16 25 4
gpt4 key购买 nike

这两个函数在 Linux 中有什么区别。
我知道 irqs_disabled() 将返回 irqs 是否被禁用,而 in_interrupt() 将返回您是否处于中断上下文中。
默认情况下,如果您处于中断上下文中,这是否意味着 irqs 被禁用?

我们具体使用这些功能的场景有哪些?

最佳答案

考虑以下两种情况:

1) 有支持嵌套中断的平台,其中一个中断可以在另一个尚未返回时发生。优先级在中断 Controller 寄存器中配置。

2)多核CPU可以同时处理两个中断,在每个核上。

检查函数是否在中断上下文中运行的原因有很多,即:使用线程锁定的函数不应在中断上下文中执行,否则会发生死锁。这些函数可能想要检查它是否是中断上下文并因错误而中止。

此外,禁用中断的原因有很多,即:当您写入将由中断处理程序使用的内存结构时,您可能会以原子模式(禁用 irqs)填充数据。

使用这两个函数的一个地方是在自旋锁函数族中,因为自旋锁很适合在中断上下文中使用。

关于linux-kernel - irqs_disabled() 与 in_interrupt() 在 linux 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26755091/

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