当softirq处理程序运行时,内核如何禁用本地处理器中的softirq

时间:2015-10-09 15:01:27

标签: linux-kernel softirq

最近我研究了Robert Love的Linux-Kernel-Development。

有一段描述了softirq的机制。

softirq处理程序在启用中断的情况下运行,无法休眠。 处理程序运行时,当前处理器上的softirqs被禁用。 但是,另一个处理器可以执行其他软件。

我不明白“当前处理器上的softirqs被禁用”的含义。

这是否意味着在运行__do_softirq时,即使softirq_pending中的某些位再次引发,__ do_softirq函数也不会被中断?如果是,那么__do_softirq中的哪些语句可以做这种保护?

当跟踪__do_softirq中的代码时,我发现有一对__local_bh_disable和__local_bh_enable函数。

他们是否禁用本地softirq?

感谢。

1 个答案:

答案 0 :(得分:1)

是,__local_bh_disable__local_bh_enable禁用并启用当前CPU上的softirqs处理。 Softirqs也被称为"下半部",这就是" bh"在那些名字中代表。