linux disable_irq()和local_irq_save()

问题描述 投票:0回答:1

我有一段代码:

disable_irq(irq_clk);
local_irq_save(flags);

[我发现disable_irq()禁用了特定的中断,而local_irq_save()禁用了所有中断。

所以我想知道上面代码的含义。

c linux-kernel linux-device-driver interrupt-handling
1个回答
1
投票

这很有意义,因为中断在不同级别被禁用。

disable_irq(irq_clk);

此代码禁用(屏蔽)interrupt controller中的中断。如果您在此级别禁用了中断,则该中断不会传递到内部中断控制器管道。它不会被优先处理,也不会被路由到目标CPU。

local_irq_save(flags);

此代码在CPU IRQ接口级别禁用所有中断。在中断已通过中断控制器的优先级和路由管道并已声明给CPU之后,才将中断传递到CPU IRQ接口。

© www.soinside.com 2019 - 2024. All rights reserved.