linux request_irq
时间: 2023-07-31 10:10:59 浏览: 93
在 Linux 系统中,request_irq 函数用于请求一个特定的中断,并将中断处理程序与之关联。具体来说,该函数的原型如下:
```c
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev);
```
其中,参数 irq 指定要请求的中断号;参数 handler 指定中断处理函数,其类型为 irq_handler_t;参数 flags 是一组标志,用于指定中断处理的行为;参数 name 是一个字符串,用于标识中断处理程序;参数 dev 是一个指针,用于传递设备的私有数据。
request_irq 函数在请求成功时返回 0,否则返回一个负数错误码。如果请求成功,则需要在中断处理完成后调用 free_irq 函数来释放该中断。
例如,以下代码请求 IRQ 10,并将中断处理函数设置为 my_interrupt:
```c
#include <linux/interrupt.h>
irqreturn_t my_interrupt(int irq, void *dev_id)
{
// 处理中断
}
int init_module(void)
{
int ret;
ret = request_irq(10, my_interrupt, IRQF_SHARED, "my_device", NULL);
if (ret)
printk(KERN_ERR "request_irq failed\n");
return ret;
}
void cleanup_module(void)
{
free_irq(10, NULL);
}
```
阅读全文