用request_irq注册一个中断

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结构了,就禁止中断

原文地址:https://www.cnblogs.com/physworld/p/14826850.html