[笔记分享] [OS] Linux的中断处理

Platform: msm8x60
Kernel: 2.6

介绍

Linux将中断分为中断上半部和下半部。上半部用来处理紧急的和硬件操作相关的,下半部用来处理能够被允许推迟完成的中断处理部分。两者之间的界限依情况划分。
异常和中断不同,必须考虑时钟的同步,也称同步中断,如除0、缺页等。这里我们只讨论异步中断。


中断处理程序注册

注册函数如下:

这里写图片描述

irq:要分配的中断号
handler: 中断处理函数,中断触发时会被调用
flags:处理中断标志。有IRQF_DISABLED、IRQF_SHARED、IRQF_SAMPLE_RANDOM等几种,这三种比较常用。IRQF_DISABLED表示进入中断处理程序时禁止其他本地中断,默认是中断开启的。IRQF_SHARED表示中断线是共享的。
name:中断名
dev: 中断共享时用到,用来判断是哪个中断触发。

request_irq()会导致睡眠,因为其在注册过程中调用了kmalloc(),而这个函数是会引起睡眠的。因此不能用于中断上下文中或者其他不允许阻塞的地方。

相对应的在释放中断处理程序的时候用下面函数释放中断:

这里写图片描述

如果中断时共享的,则仅删除dev_id所对应的处理程序,直到最后一个中断被删除的时候才禁用此中断线。

中断处理函数格式如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值