request_irq函数做的工作:
1、分配一个irqaciton结构体
2、把自己的中断程序赋值给aciton
3、把这个结构体放入irq_desc[irq]的aciton链表里
把aciton放入链表之前,还需要判断这个中断的标志,如果是IRQF_SHARED,表示可以多个action共享中断线
中断处理程序必须能够区分它的设备是否真的产生了中断。这既需要硬件的支持,也需要处理程序中有相关的处理逻辑。
如果硬件不支持这一功能,那中断处理程序肯定会束手无策,它根本没法知道到底是与它对应的设备发出了这个中断,还是共享这条中断线的其他设备发出了这个中断。
4、设置引脚
5、使能中断
free_irq(irq, dev)做的工作:
1、aciton函数出链
2、如果aciton链表中没有后aciton结构了,就禁止中断