7.2 下半部和推后执行的工作_软中断
来源:互联网 发布:自由禁区捏脸数据 编辑:程序博客网 时间:2024/05/16 06:11
7.2.1 软中断的实现
软中断是在编译期间静态分配的。它不像tasklet那样能被动态地注册或去除。软中断由softirq_action结构表示,它定义在<linux/interrupt.h>:
- struct softirq_action
- {
- void (*action) (struct softirq_action *);
- void *data;
- }
1. 软中断处理程序
一个软中断不会抢占另外一个软中断。实际上,唯一可以抢占软中断的是中断处理程序。不过,其他的软中断--甚至是相同类型的软中断--可以在其他处理器上同时执行。
2. 执行软中断
一个注册的软中断必须在被标记后才会执行。这被称作触发软中断。在下列地方,待处理的软中断会被检查和执行:
- 从一个硬件中断代码处返回时。
- 在ksoftirqd内核线程中。
- 在那些显式检查和执行待处理的软中断的代码中,如网络子系统。
不管是用什么办法唤起,软中断都要在do_softirq()中执行。
7.2.2 使用软中断
1. 分配索引
目前,只有两个子系统--网络和SCSI--直接使用软中断。此外,内核定时器和tasklet都是建立在软中断上。
2. 注册你的处理程序
在一个处理程序运行的时候,当前处理器上的软中断被禁止。实际上,如果同一个软中断在它执行的同时再次被触发了,那么另一个处理器可以同时运行其处理程序。这意味着任何共享数据--甚至是仅在软中断处理程序内部使用的全局变量--都需要严格的锁保护。大部分软中断处理程序都通过采取单处理器数据(仅属于某一个处理器的数据,因此根本不需要加锁)或其他一些技巧来避免显式地加锁,从而提供更出色的性能。
3. 触发你的软中断
- 7.2 下半部和推后执行的工作_软中断
- 中断下半部和推后执行的工作
- 7.4 下半部和推后执行的工作_工作队列
- 7.1 下半部和推后执行的工作_下半部
- 下半部和推后执行的工作
- 下半部和推后执行的工作(续)
- 下半部和推后执行的工作
- 下半部和推后执行的工作--tasklet
- 下半部和推后执行的工作
- 7.2 下半部和推后执行的工作_tasklet
- 下半部和推后执行的工作-工作队列机制
- 中断 下半部及下半部推后的工作
- linux 的下半部和推后执行的工作---第一篇
- linux下半部和推后执行的工作----第二篇
- 第八章 下半部和推后执行的工作
- 《linux内核设计与实现》阅读笔记 第六章 下半部和推后执行的工作
- Linux内核设计与实现读书笔记(6)-下半部和推后执行的工作
- 《Linux内核设计与实现》——下半部和推后执行的工作
- Linux系统调用接口、系统调用例程和内核服务例程之间的关系
- [ 持续改进 ] 建立QCC改进体系,全面提升测试效率
- web.xml定义项
- 80386在保护模式下的中断和异
- 80386在保护模式下的中断和异
- 7.2 下半部和推后执行的工作_软中断
- 80386在保护模式下的中断和异
- 南航空姐
- LIMIT=limit*4k+0fffh
- 阿里巴巴面试算法题目:有无序的实数列V[N],要求求里面大小相邻的实数的差的最大值,关键是要求线性空间和线性时间
- 轻松实现类MSDN 2002界面
- 珍重
- socket 简单实例1.服务器代码
- 论调用约定