在卸載驅動時,出現以下錯誤提示:
WARNING: CPU: 0 PID: 81 at kernel/irq/manage.c:1346 ...
Trying to free already-free IRQ
...
表示中斷沒有釋放成功,磨了很久後發現,中斷申請函數request_irq()與中斷釋放函數free_irq()的最後一個參數(void *dev 設備結構體)要保持一致,必須是同一個指針,參數傳遞過來的都不算。
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)
void free_irq(unsigned int irq, void *dev)
以上兩個函數,在使用的時候,最後一個參數必須保持一致,問題解決。