码迷,mamicode.com
首页 > 系统相关 > 详细

linux内核是中断下半部

时间:2016-05-12 22:27:34      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

首先阐述下为什么内核要将中断分成上下半部


因为中断本身打断了正常的程序执行,中断中不能进行任务调度,所以中断需要快返回,但是某些操作必须在中断中执行。


如果内核需要执行一个硬件相关、时间敏感、不能被中断的操作,那么这些操作就应该放到上半部中,其他能够推迟的操作应该放到下半部中去,这样完成了中断中必须完成的操作,又能很好的进行调度。

看看内核对于下半部的支持

技术分享

首先说以下如何添加自己的软中断程序

技术分享

首先添加自己的软中断类型,值越低优先级越高

技术分享

用open_softirq增加相对应的中断处理函数

技术分享

用raise_softirq将自己的软件中断有效

之后内核在do_softirq中便能调用软件中断了


然后看看tasklet

技术分享

技术分享

通过以上3个方法来声明自己的tasklet

当然要编写自己的执行函数   void func(unsigned long arg);

技术分享

通过以上两个函数,将自己的tasklet加入到调度中去

当然也有相应函数来取消自己的tasklet,这里不介绍了


接下来看看工作队列workqueue


技术分享

技术分享

通过以上方法能声明一个work

当然得自己编写执行函数

技术分享

通过以上方法将work加入系统workquene

技术分享

当然也可以创建自己的工作队列,然后将work加入自己的工作队列中

技术分享

技术分享


linux内核是中断下半部

标签:

原文地址:http://blog.csdn.net/lch900907/article/details/51353322

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!