内核的中断机制

内核的中断机制

内核本身是一个裸机程序,所以在驱动中使用中断与裸机中没有大的区别。但是在2.6.35之后的内核中,为了避免竞态,默认取消了中断的嵌套,这点值得我们注意。
有关驱动中的中断实例,详见基于input子系统的驱动分析

1.中断号

内核通过中断号来识别中断

  • 对于一些经典的soc,比如s5pv210,中断号定义在arch/arm/mach-s5pv210/include/mach/irqs.h
  • 而对于一些比较新的soc,比如imx6,则通常在设备节点中以下方式表示中断,假设现在有一个gpio中断
/*先确定中断所在的组*/
interrupt-parent = <&gpio6>;
/*表示中断,GPIO6中的第8个IO,2为触发类型,下降沿触发*/
interrupts = <8 2>;
  • 而在驱动中使用 中断号 =irq_of_parse_and_map(node, index)函数返回值来得到中断号,详见设备树详解

2.申请中断

  • 驱动中,使用中断资源需要申请和释放,分别使用内核提供的request_irq()和 free_irq()函数。例如:
/*申请中断*/
if (request_irq(IRQ_EINT2, button_interrupt, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, "button", S5PV210_GPH0(2))) {
        printk(KERN_ERR "button-s5pv210.c: Can't 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值