转自:http://blog.chinaunix.net/uid-20768928-id-5077401.html 在LINUX RS485的使用过程中,由于各种原因,最后不得不使用中断底半部机制的方法来进行实现此功能.先讲两个小故事来描述一下,遇到的问题.也是因为自己对底半部机制理解得不透彻.这些故事的前提都是在串口中断中,一定条件后去完成某件事情,但时间上不能超过5ms. 故事一,最开始想到的是用workqueue.印象中workqueue 就是用来做这种事的,并且还记得可以延时一段时间再来…
参考: Linux下半部处理之软中断 linux中断底半部机制 <深入理解Linux内核>软中断/tasklet/工作队列 软中断和tasklet介绍 详解操作系统中断 Linux内核:中断.软中断.tasklet 为了提高系统的响应能力和并发能力,Linux将中断处理分了上半部和下半部.当一个中断产生,调用该中断对应的处理程序(上半部),然后告诉系统,对应的后半部可以执行了,中断处理程序立即返回,下半部会在合适的时机由操作系统调用.这样一来就大大的减少了中断处理所需要的时间. 中断上半部处理…
最近在做一个arm+linux平台的视频驱动.本来这个驱动应该是做板子的第三方提供的,结果对方软件实力很差,自己做不了这个东西,外包给了一个暑期兼职的在读博士.学生嘛,只做过实验,没做过产品,给出的东西自然和产品的实际需要相去十万八千里.博士同学给我们的驱动甚至是从未编译过的,充满了"unsigned void "这样可笑的语法错误,不得已跑到北平追着那厮现场联调,最后所谓的“调通”,也仅仅是寄存器配置正确而已. 视频驱动的输出是连续的帧数据,必须要有完善的缓冲.跳帧和同步阻塞机制.而…
一.中断处理为什么要下半部?Linux在中断处理中间中断处理分了上半部和下半部,目的就是提高系统的响应能力和并发能力.通俗一点来讲:当一个中断产生,调用该中断对应的处理程序(上半部)然后告诉系统,对应的后半部可以执行了.然后中断处理程序就返回,下半部会在合适的时机有系统调用.这样一来就大大的减少了中断处理所需要的时间. 二.那些工作应该放在上半部,那些应该放在下半部?没有严格的规则,只有一些提示:1.对时间非常敏感,放在上半部.2.与硬件相关的,放在上半部.3.不能被其他中断打断的工作,放在上半…
本文档只介绍中断编程所需的函数及应用,中断完整处理流程应参考文档<linux中断处理流程>,可参考文档<linux内核对中断的处理方式>对中断初步了解. 本文档基于3.14内核. 一. 申请和释放中断 一般在设备驱动模块的初始化中申请中断,在模块卸载函数中释放中断. // linux/irqreturn.h /** * enum irqreturn * @IRQ_NONE interrupt was not from this device * @IRQ_HANDLED inter…
文章目录 中断上半部.下半部的概念 实现中断下半部的三种方法 软中断 软中断模版 tasklet tasklet函数模版 工作队列 工作队列函数模版 进程上下文和中断上下文 软中断和硬中断的区别 硬中断.软中断和信号的区别 中断上半部.下半部的概念   设备的中断会打断内核进程中的正常调度和运行,系统对更高吞吐率的追求势必要求中断服务程序尽量短小精悍.但是,这个良好的愿望往往与现实并不吻合.在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理.   下…
http://blog.csdn.net/yuesichiu/article/details/8286469 设备的中断会打断内核中进程的正常调度和运行,系统对更高吞吐率的追求势必要求中断服务程序尽可能地短小精悍.但是,这个良好的愿望往往与现实并不吻合.在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能要进行较大量的耗时处理. 为了在中断执行时间尽可能短和中断处理需完成大量工作之间找到一个平衡点,Linux 将中断处理程序分解为两个半部:顶半部(top  half)和底半…
1.软中断机制  不能以模块形式出现   使用起来不够灵活2.tasklet  核心数据结构       struct tasklet_struct      {          function          data          ....      }    1)定义tasklet变量  2)初始化tasklet变量     DECLARE_TASKLET //定义并初始化tasklet变量    3)使用tasklet变量登记底半部    注意事项:      tasklet登…
原文:http://rensanshi.blog.163.com/blog/static/21395510820136282224877/ 设备的中断会打断内核中进程的正常调度和运行,系统对更高吞吐率的追求势必 要求中断服务程序尽可能地短小精悍.但是,这个良好的愿望往往与现实并不吻合. 在大多数真实的系统中,当中断到来时,要完成的工作往往并不会是短小的,它可能 要进行较大量的耗时处理. 为了在中断执行时间尽可能短和中断处理需完成大量工作之间找到一个平衡点,Linux 将中断 处理程序分解为两个半…
[一].中断底半部 1. 软中断    --->>>  执行在中断上下文  --->>>  会被中断打断,不会被软中断或进程打断  --->>> 可以完成耗时操作        2. tasklet     --->>>  执行在中断上下文  --->>>  会被中断打断,不会被软中断或进程打断  --->>> 可以完成耗时操作        3. 工作队列  --->>>  执行…