我是一個linux菜鳥,學習初期,寫此小博不為推廣知識,只為總結心得,不准確之處還請看官擔當。
驅動中的中斷機制大致如下:
1)首先要為設備向內核申請一個中斷號,設備向cpu發生中斷請求的本質,其實就是通過設備的中斷控制器(interrupt controller)向cpu發送中斷號,然後cpu根據中斷號在某個特定的“中斷處理函數隊列”找到對應的中斷程序。
驅動程序的probe函數中要申請中斷資源和中斷號,申請函數為:irq = platform_get_irq(pdev, 0)。在內核中有用於管理中斷的通用數據結構。
2)驅動程序要將申請到的中斷號和相應的中斷處理函數(interrupt handler)綁定,由此變引出了
request_inq(unsigned int irq, irqreturn_t handler, unsigned long irqflags, const char *devname, void dev_id)