【Tiny6410 And Linux】—(2.2)—Linux 中断处理——原理

来源:互联网 发布:c语言extern的作用 编辑:程序博客网 时间:2024/05/22 17:03

有点小烦躁!!!

 

1、Linux 中断接口函数

 

①、request_irq

request_irq头文件#include <linux/interrupt.h>函数原型

int request_irq(unsigned int irq,irq_handler_t handler,unsigned long flags,

                           const char *name,void *dev);

功能描述申请中断函数参数

▲:irq:中断号,某些平台上中断号到硬件中断号的映射并不是一一对应的。

▲:handler:指向要安装的中断处理函数的指针。

▲:flags:与中断管理有关的各种选项的字节掩码。

例如:

         IRQF_DISABLED(SA_INTERRUPT):如果设置该位,表示是一个快速中断处理程序,否则为慢速的!

         IRQF_SHARED(SA_SHIRQ):该位表明终端可以在设备间共享(就是将不同的设备挂到同一个中断信号线上)。

▲:name:传递给 requeset_irq 的字符串,在 /proc/interrupts 中用于显示中断的拥有者。

▲:dev:共享中断信号时用于区别的标识符。多个中断使用同一个中断处理函数也可以通过该参数区分。不使用置 NULL

返回值返回值为 0 时表示成功,或者返回一个负的错误符,函数返回 -EBUSY 通知另一个设备驱动程序已经使用了要申请的中断信号线。

 

②、free_irq

free_irq头文件

#include <linux/interrupt.h>

函数原型void free_irq(unsigned int irq,void *dev_id);功能描述释放中断函数参数

▲:irq:中断号

▲:dev_id:通 request_irq 的参数 dev。

返回值无。

 

然后贴一张国嵌制作的中断处理流程吧:

 

其中编写中断程序(在中断上下文中运行)必须注意一下几点:

①、不能向用户空间发送或者接收数据。

②、不能使用可能引起阻塞的函数。

③、不能引起可能引起调度的函数。

原创粉丝点击