SoftIRQ可以预先在Linux内核上运行相同的SoftIRQ吗?

时间:2017-01-13 22:44:37

标签: linux kernel spinlock softirq

我正在努力提高驱动程序的性能,并应考虑死锁的可能性。在SoftIRQ上下文中,spin_lock将被保留并保护一些变量。在这种情况下,我应该使用spin_lock还是spin_lock_bh? spin_lock_bh听起来更安全,但我有一个关于SoftIRQ实现的一般性问题。

  • 可以在执行SoftIRQ期间在同一CPU上调度相同的softIRQ功能 - >我们需要在SoftIRQ中使用spin_lock_bh
  • 可以在另一个CPU上安排相同的softIRQ功能,但不能使用相同的CPU - >我们可以在SoftIRQ中使用spin_lock

上述陈述的真实情况是什么?

1 个答案:

答案 0 :(得分:1)

来自Linux Kernel Development(第2版):

  

softirq永远不会抢占另一个softirq。

原因很简单:在softIRQ期间软件中断被禁用

因此在softIRQ函数中使用普通spin_lock()就足够了。