最近我研究了 Robert Love 的 Linux-Kernel-Development。
有一段描述了softirq的机制。
softirq 处理程序在启用中断的情况下运行并且不能休眠。当处理程序运行时,当前处理器上的软中断被禁用。然而,另一个处理器可以执行其他软中断。
我不明白“当前处理器上的软中断已禁用”的含义。
这是否意味着在运行 __do_softirq 时,即使 softirq_pending 中的某些位再次升高,__do_softirq 函数也不能被中断?如果是,那么 __do_softirq 中的哪些语句会进行这种保护?
在跟踪__do_softirq中的代码时,我发现有一对__local_bh_disable和__local_bh_enable函数。
他们是否禁用本地软中断?
谢谢。