在卸载驱动时,出现以下错误提示:
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)
以上两个函数,在使用的时候,最后一个参数必须保持一致,问题解决。
本文详细解析了在驱动开发中,使用request_irq()和free_irq()函数时常见的错误——未保持设备结构体指针一致,导致中断无法正确释放的问题。强调了在调用这两个函数时,最后一个参数必须为同一指针的重要性。

被折叠的 条评论
为什么被折叠?



