在Linux系统中,驱动程序注册中断处理程序的函数是___

在Linux系统中,驱动程序注册中断处理程序的函数是___,第1张

request_irq

int request_irq(unsigned int irq,

irqreturn_t (*handler)(int, void *, struct pt_regs *),

unsigned long irqflags,

const char * devname,

void *dev_id)

注册中断最常用的函数是request_irq

第 1个参数 irq 为中断号

第 2 个参数 handler 为要中断服务函数

第 3 个参数 flags为中断标志位包含触发方式,是否共享,是否支持嵌套等

第 4 个参数 name,通常是 设备驱动程序的名称。该值用在 /proc/interrupt 系统文件上

第 5 个参数 dev 中断名称判哪 可作为共享中断时的中断区别参数,也可以用来指定中断服务函数需要参考的数据地址。建议将 设备结构指针作为 dev参数

flags参数定义

注册中断的另一个函数是request_threaded_irq

request_threaded_irq是将答型中断处理函数线程化执行的接口,其实request_irq也是直接调用的request_threaded_irq,只不过线程化回调thread_fn设置为NULL,不进行中断处理程序线程化处理。掘举码

和request_irq的参数有少许差异

handler:表示中断服务例程,指向primary handler 和request_irq的中断处理函数handler类似。中断发生时优先执行primary handler;

如果primary handler 为NULL,且thread_fn不为NULL,那么执行默认primary handler = irq_default_primary_handler。

thread_fn:中断线程化,NULL表示没有中断线程化。thread_fn如果该参数不为NULL,内核会为该irq创建一个内核线程,

当中断发生时,如果handler回调返回值是IRQ_WAKE_THREAD,内核将会激活中断线程,

在中断线程中,该回调函数将被调用,所以,该回调函数运行在进程上下文中,允许进行阻塞 *** 作。

其中

其中


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12525073.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存