对于中断, PCI 是容易处理的. 在 Linux 启动时, 计算机的固件已经分配一个唯一的中 断号给设备, 并且驱动只需要使用它. 中断号被存储于配置寄存器 60 (PCI_INTERRUPT_LINE), 它是一个字节宽. 这允许最多 256 个中断线, 但是实际的限制 依赖于使用 CPU. 驱动不必费心去检查中断号, 因为在 PCI_INTERRUPT_LINE 中找到的值 保证是正确的一个.

如果设备不支持中断, 寄存器 61 (PCI_INTERRUPT_PIN) 是 0; 否则, 它是非零的值. 但 是, 因为驱动知道设备是否是被中断驱动的, 它常常不需要读 PCI_INTERRUPT_PIN.

因此, 用来处理中断的 PCI 特定的代码需要读配置字节来获得保存在一个局部变量中的 中断号, 如同在下面代码中显示的. 除此之外, 在第 10 章的信息适用.

result = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &myirq); if (result)

{

/* deal with error */

}

本节剩下的提供了额外的信息给好奇的读者, 但是对编写程序不必要.

一个 PCI 连接器有 4 个中断线, 并且外设板可使用任何一个或者多个. 每个管脚被独立 连接到主板的中断控制器中, 因此中断可被共享而没有任何电路上的问题. 中断控制器接 着负责映射中断线(引脚)到处理器的硬件; 这种依赖平台的操作留给控制器以便在总线自 身上获得平台独立性.

位于 PCI_INTERRUPT_PIN 的只读的配置寄存器用来告知计算机实际上使用哪个管脚. 值 得记住每个设备板可有多到 8 个设备; 每个设备使用一个单个中断脚并且在它的配置寄 存器中报告它. 在同一个设备板上的不同设备可使用不同的中断脚或者共享同一个.

PCI_INTERRUPT_LINE 寄存器, 另一方面, 是读/写的. 当启动计算机, 固件扫描它的 PCI 设备并为每个设备设置寄存器固件中断脚是如何连接给它的 PCI 槽位. 这个值由固件分 配, 因为只有固件知道主板如何连接不同的中断脚到处理器. 对于设备驱动, 但是, PCI_INTERRUPT_LINE 寄存器是只读的. 有趣的是, 近期的 Linux 内核版本在某些情况下 可分配中断线, 不用依靠 BIOS.

pci 中断冲突_Linux 内核PCI 中断相关推荐

  1. c51两个定时器中断冲突_STM32定时器与中断整理

    目录 1.系统异常中断 2.外部中断(全部) 3.优先级 5.如何开关中断示例 6.抢断优先级.响应优先级说明 7.定时器说明 7.1基本定时器 7.2高级/通用定时器 7.3定时器拓展补充-主要特性 ...

  2. pci 中断冲突_PCI设备中断冲突的基本解决办法

    目前SCO还算不上是一个可以共享中断的系统,如果两个不同种类的PCI设备中断号重复,轻则冲突的设备不能正常使用,重则导致系统突然当掉,如果有冲突,当系统引导或使用hwconfig -ch就提示有冲突时 ...

  3. 上下文保存 中断_Linux内核中断顶半部和底半部的理解

    @[toc] 中断上半部.下半部的概念   设备的中断会打断内核进程中的正常调度和运行,系统对更高吞吐率的追求势必要求中断服务程序尽量短小精悍.但是,这个良好的愿望往往与现实并不吻合.在大多数真实的系 ...

  4. Linux2.6内核PCI驱动程序开发

    一,PCI相关数据结构说明 1.1struct pci_driver 这个数据结构在文件/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用 ...

  5. 更新Linux维护的PCI硬件数据库,Bus options (PCI etc.)总线选项 - Linux-4.4-x86_64 内核配置选项...

    Support mmconfig PCI config space access CONFIG_PCI_MMCONFIG 允许通过mmconfig方式访问PCI config space,这种访问方式 ...

  6. Linux内核实现中断和中断处理(二)

    第一部分移步传送门召唤!!:http://www.cnblogs.com/lenomirei/p/5562086.html 上回说了Linux内核实现中断会把中断分为两部分进行处理,上回讲了上部分,这 ...

  7. linux内核 sin头文件,Linux内核中中断request_irq详解--中断共享问题解决

    .函数原型如下: 2.4 内核 int request_irq (unsignedintirq,void (*handler)(int,void*,structpt_regs*),unsignedlo ...

  8. 32获取外部中断状态_Linux中断一网打尽(1) — 中断及其初始化

    1 中断是什么 既然叫中断, 那我们首先就会想到这个中断是中断谁?想一想计算机最核心的部分是什么?没错, CPU, 计算机上绝大部分的计算都在CPU中完成,因此这个中断也就是中断CPU当前的运行,让C ...

  9. 一个进程在执行过程中可以被中断事件打断_Linux操作系统:中断类型和中断的作用...

    1.中断的概念 中断对于操作系统非常重要,它就好像机器中的齿轮,驱动各部件的动作.所以,许多人称操作系统是由"中断驱动"的. 所谓中断是指CPU对系统发生的某个事件做出的一种反应, ...

最新文章

  1. c语言程序段的流程图怎么画,大家帮我看看这个程序的流程图怎么画,谢了
  2. linux 安全审计
  3. 开启log4net内部调试
  4. qt插件开发python_Qt5 Matplotlib设计器插件
  5. 防抖 节流_坚持造轮子第二天 防抖与节流
  6. 极客大学架构师训练营--编程的未来 面向对象 依赖倒置原则 -- 第二次作业
  7. rust 使用fltk 的小问题
  8. 栈和队列的共同点和不同点
  9. 对焦(调焦),变焦区别
  10. 困难时拉你一把的图片_在你遇到的困难时,总会有人拉你一把、你命中有这样的贵人吗?...
  11. 英文Essay写作中存在哪些门道?
  12. 常用电源管理稳压IC一览
  13. R语言学习(六)——关联规则分析
  14. 浪潮集团执行总裁王洪添一行莅临柏睿数据公司商讨战略合作
  15. 对学生公寓部建议和意见_部门管理建议和意见 宿舍管理意见和建议
  16. DPlayer视频播放器使用方法介绍
  17. 【洛谷题解】P1255 数楼梯
  18. 【图像检测】手指指尖的图像采集与检测附matlab代码
  19. lanker php 大码,松哥教你 隐藏PHP文件后门的技巧
  20. 【雷达基础知识】-------德雅村支书第二更(浅谈dB的计算以及波段的划分[L,S,C,X等波段])(原创内容,转载请标注德雅村支书)

热门文章

  1. 用Python构建个性化智能闹钟
  2. 双目视觉测距原理,数学推导及三维重建资源
  3. 基于锚框与无需锚框的通用物体检测算法
  4. 硬核教程:五步掌握用VSCode进行高效Python开发
  5. 一篇适合新手的深度学习综述
  6. 强化学习与3D视觉结合新突破:高效能在线码垛机器人
  7. 理解shared_ptrT
  8. springMVC 使用WebApplicationContext获取ApplicationContext对象
  9. squid与varnish
  10. jetty作为内嵌服务器自启动