linux disable_irq() 和 local_irq_save()
linux disable_irq() and local_irq_save()
我有一段代码:
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 接口
我有一段代码:
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 接口