Linux 驱动学习笔记 - 中断管理之上半部和下半部(十七)

Linux 驱动学习笔记 - 中断管理之上半部和下半部(十六)

本系列均为正点原子 Linux 驱动的学习笔记, 以便加深笔者记忆。如读者想进一步学习,可以到正点原子官网中下载资料进行学习。

上半部与下半部

上半部与下半部也称为顶半部和低半部。

我们在使用 request_irq 申请中断的时候注册的中断服务函数属于中断处理的上半部,只要中断触发,那么中断处理函数就会执行。

我们知道中断处理函数一定要快点执行完毕,越短越好,但是现实往往是残酷的,有些中断处理就是比较费时间,我们必须要对其进行处理,缩小中断的执行时间。

这个时候中断处理过程就需要分成两部分:

  • 上半部:上半部就是中断处理函数,那些处理过程比较快,不会占用很长时间的处理就可以放在上半部完成。

  • 下半部:如果中断处理过程比较耗时,那么就将这些比较耗时的代码提出来,交给下半部去执行,这样中断处理函数就会快进快出

因此,Linux 内核将中断分为上半部和下半部的主要目的就是实现中断处理函数的快进快出,那些对时间敏感、执行速度快的操作可以放到中断处理函数中,也就是上半部。剩下的所有工作都可以放到下半部去执行,比如在上半部将数据拷贝到内存中,关于数据的具体处理就可以放到下半部去执行。至于哪些代码属于上半部,哪些代码属于下半部并没有明确的规定,一切根据实际使用情况去判断,这个就很考验驱动编写人员的功底了。这里有一些可以借鉴的参考点:

  • 如果要处理的内容不希望被其他中断打断,那么可以放到上半部

  • 如果要处理的任务对时间敏感,可以放到上半部

  • 如果要处理的任务与硬件有关,可以放到上半部

  • 除了上述三点以外的其他任务,优先考虑放到下半部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值