内核文档中关于free_irq
的内容如下:
不得从中断上下文中调用此函数。
它包括软件中断吗?
如何在软件IRQ功能中释放IRQ?
谢谢你的帮助,
最佳答案
是的,该规则包括softirq上下文。您认为您需要从softirq上下文中调用free_irq()
的事实表明您的设计有点与众不同-通常情况下,在关闭设备时使用free_irq()
,这几乎总是从过程上下文。
但是,如果您确实需要执行此操作,则可以通过schedule_work()
或类似的工作队列功能将其推迟到处理上下文中。当然,您不能在softirq中等待该推迟的工作完成,因此您还必须在释放IRQ之后也推迟其他任何工作。
如果您提供了更多有关为什么要尝试从中断上下文中调用free_irq()
的信息,则可能会给出更好的答案。