Linux设备驱动之中断支持及中断分层

快速中断:在开启快速中断时,其他中断不会打断快速中断。

多个中断共享一个中断号。

中断行为受到限制:

  1.不能使用可能引起阻塞的函数

  2.不能使用可能引起调度的函数

中断注册:request_irq()

注销中断:free_irq()

在中断处理函数中,

1.判断是否发生了所对应的中断

2.清楚发生的中断

中断编号??

中断分层

当快速中断被关闭时,中断之间可以被打断。当一个中断服务函数未执行完之后若再产生中断,则会执行新的中断服务函数。若产生同类型的中断时,第二次新产生同类型的中断会被忽略。

若快速中断开启时,一个中断服务函数未执行完成之前若产生中断,则新产生的中断会被忽略。

故为了解决这种情况,我们只能尽量缩短中断服务函数执行的时间。

这里将中断服务函数分为两个部分。

上半部分放在中断服务函数中,主要处理和硬件相关的操作。

下半部分执行数据的处理。将这部分工作加入到一个专属的工作队列中。

原文地址:https://www.cnblogs.com/ynxf/p/5779027.html