Linux中断(interrupt)子系统
文章平均质量分 82
wangpengqi
这个作者很懒,什么都没留下…
展开
-
Linux中断(interrupt)子系统之一:中断系统基本原理
这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层。内核版本基于3.3。虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变。 /****************************************************转载 2013-03-07 13:57:47 · 713 阅读 · 0 评论 -
内核中的notification chain浅析
内核中的很多子系统都是联系很紧密的,因此有可能某个子系统的某些事件,其他多个子系统都很感兴趣,此时就需要用到notification chain. 举个具体的例子,比如说一台主机由于某个网卡的损坏或其他原因不能使用,从而导致连接此网卡的网络不能使用,这个时侯就是notification chain.来通知路由表去除这个网络的路由表项。 notification chain就是一个链转载 2013-08-01 17:10:18 · 663 阅读 · 0 评论 -
linux中request_region()函数的分析
linux中request_region()函数的分析 struct resource ioport_resource = {.name= "PCI IO",.start= 0,.end= IO_SPACE_LIMIT, //IO_SPACE_LIMIT = 0xffffffff.flags= IORESOURCE_IO,转载 2013-06-05 11:14:33 · 6294 阅读 · 0 评论 -
linux-2.6内核模块引用计数的实现(try_module_get和module_put)
linux-2.6内核模块引用计数的实现作者:刘洪涛,华清远见嵌入式学院金牌讲师。 一、模块使用计数的背景知识 模块是一种可以在内核运行过程中动态加载、卸载的内核功能组件。2.6内核中模块的命名方式为*.ko。模块在被使用时,是不允许被卸载的。编程时需要用“使用计数”来描述模块是否在被使用。二、2.4内核使用计数的实现方法 2.4内核中,转载 2013-06-09 17:46:07 · 755 阅读 · 0 评论 -
Linux输入子系统:输入设备编程指南 -- input-programming.txt
输入设备编程指南(Programming input drivers)~~~~~~~~~~~~~~~~~~~~~~~~~1. 新建一个输入设备驱动程序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1.0 一个最简单的例子~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~转载 2013-03-13 15:15:09 · 800 阅读 · 0 评论 -
Linux中断(interrupt)子系统之三:中断流控处理层
1. 中断流控层简介早期的内核版本中,几乎所有的中断都是由__do_IRQ函数进行处理,但是,因为各种中断请求的电气特性会有所不同,又或者中断控制器的特性也不同,这会导致以下这些处理也会有所不同:何时对中断控制器发出ack回应;mask_irq和unmask_irq的处理;中断控制器是否需要eoi回应?何时打开cpu的本地irq中断?以便允许irq的嵌套;中断数据结构的同转载 2013-03-07 16:31:21 · 817 阅读 · 0 评论 -
linux input子系统分析--概述与数据结构
linux input子系统分析--概述与数据结构 Input子系统处理输入事务,任何输入设备的驱动程序都可以通过Input输入子系统提供的接口注册到内核,利用子系统提供的功能来与用户空间交互。输入设备一般包括键盘,鼠标,触摸屏等,在内核中都是以输入设备出现的。下面分析input输入子系统的结构,以及功能实现。一. Input子系统结构与功能实现 1. Input子转载 2013-03-12 14:29:26 · 767 阅读 · 0 评论 -
Linux中断(interrupt)子系统之二:arch相关的硬件封装层
Linux的通用中断子系统的一个设计原则就是把底层的硬件实现尽可能地隐藏起来,使得驱动程序的开发人员不用关注底层的实现,要实现这个目标,内核的开发者们必须把硬件相关的内容剥离出来,然后定义一些列标准的接口供上层访问,上层的开发人员只要知道这些接口即可完成对中断的进一步处理和控制。对底层的封装主要包括两部分:实现不同体系结构中断入口,这部分代码通常用asm实现;中断控制器进行封装和实现;转载 2013-03-07 15:05:21 · 934 阅读 · 0 评论 -
Linux中断(interrupt)子系统之四:驱动程序接口层 & 中断通用逻辑层
在本系列文章的第一篇:Linux中断(interrupt)子系统之一:中断系统基本原理,我把通用中断子系统分为了4个层次,其中的驱动程序接口层和中断通用逻辑层的界限实际上不是很明确,因为中断通用逻辑层的很多接口,既可以被驱动程序使用,也可以被硬件封装层使用,所以我把这两部分的内容放在一起进行讨论。本章我将会讨论这两层对外提供的标准接口和内部实现机制,几乎所有的接口都是围绕着irq_desc转载 2013-03-08 10:43:28 · 674 阅读 · 0 评论 -
内核中的中断处理
首先来看当网络接收帧到达时,设备如何唤醒驱动。 1 轮询 也就是内核不断的监测相应的寄存器,从而得到是否有网络帧到来。 2中断 当有数据时,设备执行一个硬件中断,然后内核调用相应的处理函数。这种处理当网络在高负载的情况时,效率会很低(中断太频繁)。并且会引起receive-livelock.这是因为内核处理输入帧分为了两部分,一部分是驱动复制帧到输入队列,一部分是内核执转载 2013-08-01 18:32:20 · 1300 阅读 · 0 评论