3.8. 系统事件
ACPI 包含一个用于即插即用、热管理和电源管理事件的通用事件模型。该事件模型由两个寄存器组成:事件状态寄存器和事件使能寄存器。
当事件发生时,核心逻辑会在状态寄存器中设置一位以指示该事件。如果使能寄存器中的相应位被设置,核心逻辑将置位 SCI 以向 OS 发出信号。当 OS 接收到该中断时,它将运行与事件状态寄存器中所有置位的位相对应的控制方法。这些控制方法使用 AML 命令告诉 OS 发生了什么事件。
例如,假设一台机器将其所有即插即用、热管理和电源管理事件都连接到核心逻辑中的同一个引脚。事件状态寄存器和事件使能寄存器则各自只有一位:与该事件引脚对应的那一位。
当系统对接时,核心逻辑会设置状态位并发出 SCI 信号。OS 看到状态位已设置后,会运行该位对应的控制方法。该控制方法检查硬件并确定该事件是一个对接事件(例如)。然后它向 OS 发出信号,表明发生了一个对接事件,并且可以具体告诉 OS 新设备将在设备层次结构中的何处出现。
由于事件模型寄存器是通用化的,它们可以描述许多不同的平台实现。上面的单引脚模型只是一个示例。另一种设计可能将即插即用、热管理和电源管理事件连接到三个不同的引脚,因此会有三个状态位(以及三个使能位)。还有一种设计可能将每个单独事件连接到其自己的引脚和状态位。这种与单引脚设计相对的另一极端设计允许非常复杂的硬件,但控制方法却非常简单。事件布线方式可能有无数种变化。然而,请注意,必须小心确保如果多个事件共享一个信号,则能够在相应的事件处理控制方法中确定是哪个事件生成了该信号,从而允许发送正确的设备通知。