ozw*_*5rd 3 c linux-device-driver linux-kernel interrupt-handling
我有一段代码:
disable_irq(irq_clk);
local_irq_save(flags);
Run Code Online (Sandbox Code Playgroud)
我发现disable_irq()禁用特定中断,而local_irq_save()禁用所有中断。
所以我想知道上面代码的含义。
这是有道理的,因为中断在不同级别被禁用。
disable_irq(irq_clk);
Run Code Online (Sandbox Code Playgroud)
此代码禁用(屏蔽) 中的中断interrupt controller。如果您在此级别禁用了中断,则中断将不会传递到内部中断控制器管道。它不会被优先化,也不会被路由到目标CPU。
local_irq_save(flags);
Run Code Online (Sandbox Code Playgroud)
此代码禁用 CPU IRQ 接口级别的所有中断。中断在通过中断控制器的优先级和路由管道并已被断言到 CPU 后,将被传递到 CPU IRQ 接口。