您的位置 首页 电路

Linux内核中ARM中止完成详解request_irq()、free_irq()

Request_irq()调用的定义:intrequest_irq(unsignedintirq,void(*handler)(intirq,void*dev_id,structpt_regs*reg

Request_irq()调用的界说:

int request_irq(unsigned int irq,
void (*handler)(int irq, void *dev_id, struct pt_regs *regs),
unsigned long irqflags,
const char * devname,
void *dev_id);

irq是要请求的硬件中止号。详细应是何值参见博文http://blog.csdn.net/songqqnew/article/details/6791602。

handler是向体系注册的中止处理函数,是一个回调函数,中止产生时,体系调用这个函数,dev_id参数将被传递给它。便是中止服务子程序,用staticirqreturn_tadc_interrupt(intirq,void*dev_id);界说或声明。

Irqflags是中止处理的一些特点。若设置了IRQF_DISABLED (老版别中的SA_INTERRUPT,本版zhon现已不支持了),则表明中止处理程序是快速处理程序,快速处理程序被调用时屏蔽一切中止,慢速处理程序不屏蔽;若设置了IRQF_SHARED (老版别中的SA_SHIRQ),则表明多个设备同享中止,若设置了IRQF_SAMPLE_RANDOM(老版别中的 SA_SAMPLE_RANDOM),表明对体系熵有贡献,对体系获取随机数有优点。(这几个flag是能够经过或的方法一起运用的)

devname设置中止称号,在cat /proc/interrupts中能够看到此称号。为注册的驱动程序的设备名。

dev_id在中止同享时会用到。一般设置为这个设备的device结构自身或许NULL。中止处理程序能够用dev_id找到相应的操控这个中止的设备,或许用irq2dev_map找到中止对应的设备。
free_irq()调用的界说如下:

Void free_irq(unsigned int irq,

void *dev_id);

irq是由函数request_irq()请求的硬件中止号。详见博文:http://blog.csdn.net/songqqnew/article/details/6791602。

dev_id与前面的相同。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/275334.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部