request_irq

在Linux内核中,request_irq()函数是注册中断服务函数,函数的原型如下:

int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev);

5个参数的含义如下:
参数1:中断号,所申请的中断向量,比如EXIT0中断等定义在mach/irqs.h。
参数2:是一个函数指针,向系统登记的中断处理函数,是一个回调函数,当中断发生时,系统调用这个函数。
参数3:指定中断属性、中断触发方式(一般用宏定义表示)等。定义在linux/interrupt.h。
参数4:指定中断名字,用命令 cat /proc/interrupts 可查看系统中断申请与使用情况。
参数5:传入中断处理程序的参数,可以为NULL,但在注册共享中断时,此参数不能为NULL。该参数可作为共享中断时的中断区别参数,还可以把其传给一个结构体变量,用于保存一个设备的信息,使中断处理函数可以获得该设备的信息。

返回值:函数运行正常时返回0,否则返回对应错误的负值。

猜你喜欢

转载自blog.csdn.net/qq_33575901/article/details/81068165