linux内核研究-5-tasklet
来源:互联网 发布:linux shell编程书籍 编辑:程序博客网 时间:2024/05/19 16:48
linux内核研究-5-tasklet
1,tasklet与软中断
1》tasklet需要软中断的支持,没有软中断,就没有tasklet。
2》tasklet可以认为是软中断的一个子系统。
3》个人认为将来tasklet可以完全替代软中断。
2,tasklet工作原理和过程
1》内核有一个链表,在<linux/interrupt.h>里面:
struct tasklet_struct{};里面有tasklet处理函数和函数参数。具体成员我就不说了。
2》还记得软中断里面的内核线程ksoftirqd吗?
这个线程检查软中断标记(TASKLET_SOFTIRQ),
3》如果标记了,则检查tasklet_struct链表的每个节点,如果本节点的成员status为可调度,则执行对应的tasklet处理函数。
3,如何在你的驱动程序里使用tasklet,比如rill_tasklet。
1》声明tasklet,向链表添加一个节点。
静态:
DELARE_TASKLET(rill_tasklet,rill_tasklet_func,dev);
动态:
tasklet_init(rill_tasklet,rill_tasklet_func,dev);
2》实现rill_tasklet_func:
void rill_tasklet_func(unsigned long data);
3》使能tasklet:
在中断处理程序返回前调用:
tasklet_schedule(&rill_tasklet);
4》禁止和使能tasklet
禁止:
tasklet_disable(&rill_tasklet);
使能:
tasklet_enable(&rill_tasklet);
4,关于ksoftirqd内核线程的讨论
ksoftirq如何平衡软中断和用户进程的负载分配。现有两种直观方式
1》在tasklet处理期间,用户进程等待,这样能尽快处理完tasklet的工作。但是这样在tasklet任务比较中的情况下,用户进程就会饥饿。
2》在tasklet处理期间,如果有用户进程,则停止当前处理工作,执行用户进程,这样如果用户进程工作比较多时,tasklet就会饥饿。
3》linux采用了折中方案。
4》在tasklet处理期间,一旦出现中断产生,则开启一组内核线程,nice为19,来处理剩下工作,及时响应中断,或高优先级的用户进程。
- linux内核研究-5-tasklet
- linux 内核tasklet详解
- linux内核tasklet机制
- linux内核中断 ----- tasklet 分析
- linux内核中断 ----- tasklet 分析
- linux内核中断 ----- tasklet 分析 .
- linux内核中断 ----- tasklet 分析
- tasklet、工作队列 - [linux内核]
- linux 内核学习 tasklet 详解
- Linux内核学习之中断(3)-tasklet
- Linux内核实践之tasklet机制
- linux内核之软中断和tasklet
- linux内核软中断及tasklet
- Linux内核中tasklet的使用
- Linux内核:中断、软中断、tasklet
- linux内核笔记--中断子系统之tasklet
- Linux内核:中断、软中断、tasklet
- linux tasklet
- OBJECT ARX 实体类的炸开,求交,外包矩形函数使用
- Rational Rose 2003 下载、破解及安装方法(图文)
- 简单的I2C协议理解
- Flash/Flex 移动端开发 之 现状
- HDU 1695 欧拉函数+容斥原理
- linux内核研究-5-tasklet
- POJ-1131 Octal Fractions【进制转换】
- mongodb学习---安装
- VS2010 配置驱动开发环境
- jvm的GC相关概念及GC的监控
- forEach 遍历长度
- 单例模式
- [C++ 学习] C++ Primer 习题 4.34 4.35
- Windows7 无法连接Linux Samba 共享目录解决办法,待验证