`
java-mans
  • 浏览: 11453412 次
文章分类
社区版块
存档分类
最新评论

IRQ共享原理

 
阅读更多

IRQ lines are a limited resource. A simple way to increase the number of devices a system can host is to allow multiple devices to share a common IRQ. Normally, each driver registers its own handler to the kernel for that IRQ. Instead of having the kernel receive the interrupt notification, find the right device, and invoke its handler, the kernel simply invokes all the handlers of those devices that registered for the same shared IRQ. It is up to the handlers to filter spurious invocations, such as by reading a registry on their devices.

--《Understanding Linux Network Internals》

当一个中断到来之后,内核会“唤醒”所有该中断的"订阅者",让他们各自查询自己的设备寄存器,以确定当前中断是不是自己的设备发出的。代价:每个订阅者都需要做一次查询。

因此,共享IRQ是需要付出代价的。对于慢速设备,这个代价可能很大。为了解决这一问题,这些设备可以将中断注册为不可共享的,其余“订阅者”想使用该中断的时候就会被拒绝。当然,这一方案并不治本,因为系统中断号总数量有限,不可能人人都注册成不可共享的形式。

分享到:
评论

相关推荐

    电调源码 开源ESC32

    ESC32开源电调 源码与原理图,此源码采用RTT操作系统,CAN PWM操作方式 ,本人已用PWM方式成功驱动起来,CAN 暂且还没做测试。 此资料是 啊嘉 开源出来的,好资料不敢独享,稍加整理放到这与大家共享。

    学ARM和学单片机一样简单12

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单15

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单4

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单3

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单9

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单2

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单11

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单7

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单5

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单13

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单6

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单14

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    学ARM和学单片机一样简单8

    (8)、演示开发板与PC机通过NFS实现文件共享 10、块设备-USB主设备CH375驱动编程(122分钟)(第十讲) (1)、USB驱动框架简介 (2)、CH375-hw.h、Ch375-hcd.c程序讲解 (3)、LINUX内核的配置 (4)、设备...

    Windows内核安全与驱动开发光盘源码

    2.1.2 共享的内核空间 17 2.1.3 无处不在的内核模块 18 2.2 数据类型 19 2.2.1 基本数据类型 19 2.2.2 返回状态 19 2.2.3 字符串 20 2.3 重要的数据结构 21 2.3.1 驱动对象 21 2.3.2 设备对象 22 2.3.3 ...

    Windows内核安全驱动开发(随书光盘)

    2.1.2 共享的内核空间 17 2.1.3 无处不在的内核模块 18 2.2 数据类型 19 2.2.1 基本数据类型 19 2.2.2 返回状态 19 2.2.3 字符串 20 2.3 重要的数据结构 21 2.3.1 驱动对象 21 2.3.2 设备对象 22 2.3.3 ...

    寒江独钓-Windows内核安全编程(高清完整版).part1

    2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 数据类型 21 2.2.1 基本数据类型 21 2.2.2 返回状态 22 2.2.3 字符串 23 2.3 重要的数据结构 23 2.3.1 驱动对象 23 2.3.2 设备对象 25 2.3.3 请求 26 2.4 ...

    寒江独钓-Windows内核安全编程(高清完整版).part7

    2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 数据类型 21 2.2.1 基本数据类型 21 2.2.2 返回状态 22 2.2.3 字符串 23 2.3 重要的数据结构 23 2.3.1 驱动对象 23 2.3.2 设备对象 25 2.3.3 请求 26 2.4 ...

    寒江独钓-Windows内核安全编程(高清完整版).part2

    2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 数据类型 21 2.2.1 基本数据类型 21 2.2.2 返回状态 22 2.2.3 字符串 23 2.3 重要的数据结构 23 2.3.1 驱动对象 23 2.3.2 设备对象 25 2.3.3 请求 26 2.4 ...

    寒江独钓-Windows内核安全编程(高清完整版).part4

    2.1.2 共享的内核空间 19 2.1.3 无处不在的内核模块 20 2.2 数据类型 21 2.2.1 基本数据类型 21 2.2.2 返回状态 22 2.2.3 字符串 23 2.3 重要的数据结构 23 2.3.1 驱动对象 23 2.3.2 设备对象 25 2.3.3 请求 26 2.4 ...

Global site tag (gtag.js) - Google Analytics