我有一段代码:
disable_irq(irq_clk);
local_irq_save(flags);
[我发现disable_irq()禁用了特定的中断,而local_irq_save()禁用了所有中断。
所以我想知道上面代码的含义。
这很有意义,因为中断在不同级别被禁用。
disable_irq(irq_clk);
此代码禁用(屏蔽)interrupt controller
中的中断。如果您在此级别禁用了中断,则该中断不会传递到内部中断控制器管道。它不会被优先处理,也不会被路由到目标CPU。
local_irq_save(flags);
此代码在CPU IRQ接口级别禁用所有中断。在中断已通过中断控制器的优先级和路由管道并已声明给CPU之后,才将中断传递到CPU IRQ接口。