SoftIRQ prempt 当前是否可以运行与 Linux 内核相同的 SoftIRQ



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

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

从上面的说法中什么是正确的?

来自 Linux 内核开发(第 2 版):

一个软irq永远不会抢占另一个软irq。

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

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

相关内容

  • 没有找到相关文章

最新更新