linux 内核 清中断,Linux内核中ARM中断实现详解request_irq()、free_irq()

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);本文引用地址:http://www.eepw.com.cn/article/201611/317068.htm

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与前面的相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值