關於Linux的中斷處理中斷處理Linux和待處理中斷
在我的司機基本的問題,我禁止外的中斷線路,並做一些處理,在此期間,外圍設備發送中斷。當我啓用中斷線時,我收到了當時發生的掛起中斷。
這是正確的理解?
如果是,我該如何丟棄在中斷禁止期間產生的那些中斷。
我可以實現一些使用某些延遲的工作,尋找linux API或乾淨的方式來做到這一點。
在啓用中斷之前,我們可以設置 desc = irq_to_desc(client-> irq); desc-> istate & =〜IRQS_PENDING; 並啓用中斷線,它將清除所有掛起的中斷,但代碼表示我們不應該修改這些變量。
謝謝
上中斷,我不認爲忽略它是有史以來做合理的事情。您禁用線路,從設備讀取事件並再次啓用該線路。如果在線路禁用時中斷到達,您可能已經看到觸發該線路的事件,但很可能沒有。所以你不應該忽略它。你必須再次檢查是否有未處理的事件。 – 2014-10-09 10:04:20
如果我們檢查__enable_irq函數,它會調用check_irq_resend(desc,irq);這將重新發送任何掛起的中斷。 – shunty 2014-10-09 10:22:47
嗯,是的,因爲如果IRQ在禁用時發生,它仍然需要處理。如果不是,你可能會錯過導致它的事件。 – 2014-10-09 11:13:14