当软rq处理程序运行时,内核如何在本地处理器中禁用软rq



最近我学习了Robert Love的Linux-Kernel-Development。

有一段描述了softirq的机制。

softirq处理程序在启用中断的情况下运行,不能休眠。当处理程序运行时,当前处理器上的软件将被禁用。然而,另一个处理器可以执行其他软任务。

我不明白"当前处理器上的软件被禁用"是什么意思。

这是否意味着当运行__do_softirq时,即使softirq_pending中的一些位再次上升,__do_softirq函数不能被中断?如果是,那么__do_softirq中的哪些语句做了这种保护?

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

是否禁用了本地软件?

谢谢。

是,__local_bh_disable__local_bh_enable使能和禁用当前CPU上的软件处理。Softirqs也被称为"下半部分",这就是这些名称中的"bh"所代表的含义。

相关内容

  • 没有找到相关文章

最新更新