Hardware shared interrupt and software shared interrupt

From Jollen's Wiki

Jump to: navigation, search

Hardware shared interrupt and software shared interrupt

Hardware shared interrupt指的是同一根中斷線拉給兩個硬體裝置使用.比較有名的例子是x86這類的架構CISC CPU架構.因為x86的中斷線數目很少.所以會有多個週邊設備共用同一根中斷線的狀況出現. Software shared interrupt在類似ARM這種RISC的CPU架構上較常見.因為這類的平台上中斷線數目多, 所以一般都是一個週邊設備接一根中斷線.因此,software shared interrupt指的是兩個driver的interrupt handler註冊到同一個irq number上.

request_irq() 應該寫在cdata_open()中,還是cdata_init_module()中?

事實上都可以.不過,寫在cdata_open()中比較好.假設有兩支driver,都用shared interrupt的方式向linux kernel註冊各自的interrupt handler.若是在cdata_init_module()中做這件事,只要這兩支driver同時載入linux kernel中,不論是否有process透過開啟device file (/dev/debug)的方式對driver作讀寫的動作, 只要硬體對CPU發出中斷訊號,這兩支driver的interrupt handler都會被invoke.所以,這樣的作法會讓系統浪費運算資源.反過來說,如果在cdata_open()中,向linux kernel註冊interrupt handler,那麼只有當有process對driver作讀寫, 且硬體有中斷訊號產生的時候, driver的interrupt handler才會被invoke.這樣就可以減少運算資源的浪費.

Views
個人工具
導航
工具