linux中断的上半部和下半部详解linux中断上半部与下半部




linux中断的上半部和下半部详解linux中断上半部与下半部

2022-07-20 20:23:49 网络知识 官方管理员

与Linux中断息息相关的一个重要概念是Linux中断分为两个半部上半部(tophalf)和下半部(bottomhalf)。上半部的功能是"登记中断",当一个中断发生时,它进行相应地硬件读写后就把中断例程的下半部挂到该设备的下半部执行队列中去。因此,上半部执行的速度就会很快,可以服务更多的中断请求。但是,仅有"登记中断"是远远不够的,因为中断的事件可能很复杂。因此,Linux引入了一个下半部,来完成中断事件的绝大多数使命。下半部和上半部最大的不同是下半部是可中断的,而上半部是不可中断的,下半部几乎做了中断处理程序所有的事情,而且可以被新的中断打断!下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排运行时机,不在中断服务上下文中执行。

Linux实现下半部的机制主要有tasklet和工作队列。

Tasklet基于Linuxsoftirq,其使用相当简单,我们只需要定义tasklet及其处理函数并将二者关联:

voidmy_tasklet_func(unsignedlong);//定义一个处理函数:DECLARE_TASKLET(my_tasklet,my_tasklet_func,data);//定义一个tasklet结构my_tasklet,与my_tasklet_func(data)函数相关联

发表评论:

最近发表
网站分类
标签列表