编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

设备中断

I/O 总线以两种常用方法来实现中断:向量化轮询。这两种方法通常都会提供总线中断优先级别。向量化设备还会提供中断向量。轮询设备则不提供中断向量。

为了与不断发展的总线技术保持同步,Oracle Solaris OS 已经得到了增强,可适应更新类型的中断以及已经使用多年的较为传统的中断。具体来说,操作系统目前可识别三种类型的中断:

  • 传统中断传统固定中断是指使用早期总线技术的中断。使用这些技术,可通过一个或多个“带外”(即,独立于总线的主线)连线的外部管脚来发送中断信号。较新的总线技术(如 PCI Express)通过带内机制模拟传统中断来维持软件兼容性。主机 OS 将这些模仿中断视为传统中断。

  • 消息告知中断-消息告知中断 (message-signalled interrupt, MSI) 使用带内消息而不是使用管脚,可在主桥 (host bridge) 中确定中断的地址。(有关主桥 (host bridge) 的更多信息,请参见PCI Local Bus。)MSI 可以将数据与中断消息一起发送。每个 MSI 都不是共享的,这样可以保证指定给某一设备的 MSI 在系统中是唯一的。一个 PCI 函数最多可以请求 32 条 MSI 消息。

  • 扩展消息告知中断-扩展消息告知中断 (Extended Message-Signalled Interrupt, MSI-X) 是 MSI 的增强版本。MSI-X 中断具有以下新增的优点:

    • 支持 2048 条而不是 32 条消息

    • 针对每条消息支持独立的消息地址和消息数据

    • 支持按消息屏蔽

    • 软件分配的向量少于硬件请求的向量时可具有更大灵活性。软件可以在多个 MSI-X 插槽中重用相同的 MSI-X 地址和数据。


注 - 一些较新的总线技术(如 PCI Express)要求使用 MSI,但是可以使用 INTx 仿真来处理传统中断。INTx 仿真用于实现兼容性,但是这并不被认为是好的做法。