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