我可以在软件中断上下文中使用free_irq吗?

时间:2012-09-26 09:02:17

标签: c linux-kernel irq

内核文档说明了free_irq以下内容:

  

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

是否包含软件中断? 如何在软件IRQ功能中释放IRQ?

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

是的,该规则包括softirq上下文。您认为需要从softirq上下文调用free_irq()这一事实表明您的设计有点不同寻常 - 在正常情况下,当设备关闭时使用free_irq(),这几乎总是来自流程背景。

但是如果你真的需要这样做,那么要做的就是通过schedule_work()或类似的工作队列函数将其推迟到处理上下文。当然,你不能在你的softirq等待延期工作完成,所以你必须推迟释放IRQ之后的任何其他工作。

如果您提供了有关您尝试从中断上下文调用free_irq()的原因的更多信息,则可以给出更好的答案。