设为首页 加入收藏

TOP

Linux设备驱动下的tasklet
2014-11-24 12:29:23 来源: 作者: 【 】 浏览:0
Tags:Linux 设备驱动 tasklet

在设备驱动的中断处理中经常会用到tasklet,在前面稍微看了下linux的软中断后,tasklet就很容易理解了。Tasklet也要用到软中断,而tasklet的用法和定时器的用法很相似。


同样的在main.c中,


start_kernel-->softirq_init


先给出tasklet的结构体定义:


这样在softirq_init函数中,首先初始化tasklet_vec


软中断的执行还是由ksoftirqd内核线程来处理。


下面看下tasklet的初始化:


Tasklet的调度:


这里先将刚才初始化的tasklet_struct加入这个tasklet_vec向量表中


这里调用raise_softirq_irqoff(TASKLET_SOFTIRQ);


来触发软中断。


那么,前面的中断服务程序是tasklet_action就开始执行了:


遍历tasklet_vec向量表,调用每个tasklet中在注册时的t->func(t->data);函数。


这样,tasklet就可以用于中断的顶半部和底半部。


在中断处理的顶半部,调用tasklet_schedule函数


Tasklet关联的tasklet处理函数就是中断的底半部处理。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java使用反射来获取泛型信息 下一篇Linux的动态定时器--时间轮

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)