2014-01-31 33 views
1

我的問題是: 當調用free_irq時觸發中斷處理程序。我在內核消息中注意到調用了處理程序,但由於我們的設備沒有請求中斷,因此提示沒有收到中斷。 它預期的行爲?任何人都可以幫忙嗎?當調用free_irq時觸發中斷處理程序

+1

中斷處理程序將不會被調用,除非捕獲到中斷處理程序註冊的中斷。你能提供更多細節,還是可以分享你的代碼。這樣我們的反應會更有成效。 –

回答

1

當您註冊(可能)共享中斷(使用IRQF_SHARED)的處理程序時,該中斷可能會由您的驅動程序無法控制的其他設備觸發,因此您的驅動程序必須準備好接收任何中斷時間。

爲了幫助調試驅動程序,內核將(當CONFIG_DEBUG_SHIRQ被設置時)僞造一些中斷來檢查你的驅動程序是否工作正常。
[source code]

+0

我有共享中斷,但沒有其他設備觸發中斷,因爲/ proc/interrupts中的IRQ不會增加。其次,你可以請幫忙如何檢查CONFIG_DEBUG_SHIRQ是否設置? – user3257306

+0

內核的行爲證明CONFIG_DEBUG_SHIRQ已設置。 –

+0

有沒有辦法確認這個宏? – user3257306

0

如果我理解您的文章的權利 - 你必須關閉之前發出中斷在硬件調用free_irq(),那麼您將不會收到中斷而free_irq()。

相關問題