内核文档中关于free_irq的内容如下:


  不得从中断上下文中调用此函数。


它包括软件中断吗?
如何在软件IRQ功能中释放IRQ?

谢谢你的帮助,

最佳答案

是的,该规则包括softirq上下文。您认为您需要从softirq上下文中调用free_irq()的事实表明您的设计有点与众不同-通常情况下,在关闭设备时使用free_irq(),这几乎总是从过程上下文。

但是,如果您确实需要执行此操作,则可以通过schedule_work()或类似的工作队列功能将其推迟到处理上下文中。当然,您不能在softirq中等待该推迟的工作完成,因此您还必须在释放IRQ之后也推迟其他任何工作。

如果您提供了更多有关为什么要尝试从中断上下文中调用free_irq()的信息,则可能会给出更好的答案。

10-06 05:08