ACPICA User Guide and Programmer Reference 翻译4

2.2.1 ACPI表管理

        此模块管理所有ACPI表,例如,RSDT/XSDT,FADT, FACS,DSDT, SSDT等等。这些表可以从固件程序提供,也可以由主操作系统提供。此模块的管理功能包括:

  • ACPI 表校验
  • ACPI表安装和卸载
  • 使用ACPI表

2.2.2对ACPI表的初始使用

        很多情况下,系统/内核的初始化的较早阶段需要一些ACPI表。例如,在硬件被初始化之前,需要ECDT和MADT表。因此,可能在内核动态内存(和虚拟内存)可用之前,就需要初始化与ACPI表相关的内容。

        为了能使初始化正常进行,ACPICA表管理模块被设计成为一个独立的模块,这个模块可以独立于ACPICA子系统的其他部分而被初始化和使用。在任意一个特定的时间,仅仅需要一个内存映射而不需要动态内存,这个模块就能被执行。(这句话啥意思,我也没明白)。

2.2.3 AML翻译器

        AML翻译器负责解析和执行由计算机系统厂商提供的AML代码。其他大部分服务都是以AML翻译器作为基础而建立的。因此,没有直接调用翻译器的外部接口。AML翻译器为其他功能模块提供的服务包含如下内容:

  • ACPI表解析
  • 执行AML控制方法
  • Evaluation of Namespace Objects

2.2.4 命名空间管理

        命名空间模块在AML翻译器的基础上提供ACPI命名空间服务。命名空间管理模块负责创建和管理内部的ACPI命名空间。这些服务包括:

  • 根据ACPI表初始化命名空间
  • 设备枚举
  • 使用命名空间
  • 使用ACPI数据和ACPI表

2.2.5 资源管理

        资源管理模块在命名空间和AML翻译器的基础上提供对资源的请求和配置的服务。这些服务包括:

  • 获取、设置当前的资源
  • 获取可能有的资源
  • 获取IRQ路由表
  • 获取电源依赖关系

2.2.6 ACPI硬件管理

        硬件管理模块负责对ACPi寄存器、时钟和其他ACPI相关的硬件的控制。模块提供的服务包括:

  • 使用ACPI状态寄存器和使能寄存器
  • 使用ACPI寄存器(通常就是对ACPI寄存器的读和写)
  • 使用电源管理时钟
  • 使能/失能ACPI模式
  • 全局锁
  • 睡眠模式转换(S态)

2.2.7事件处理

        事件控制模块管理ACPI系统控制中断(SCI)。ACPI时钟、fixed事件和通用事件(GPEs)复用SCI中断。此模块还负责分派通知(notification)和管理地址空间/操作域事件。此模块提供的服务如下:

  • 使能/失能ACPI事件(fixed事件,GPEs)
  • 处理Fxied事件(安装、卸载和分派)
  • 处理通用事件(安装、卸载和分派)
  • 处理notify(安装、卸载和分派)
  • 处理地址空间和操作域(安装、卸载和分派)

2.2.8Host 操作系统到ACPI子系统的请求

        主操作系统能够直接使用以Acpi开头的外部接口来请求ACPI服务。

        ACPI提供的实际的服务(以及对这些服务的请求),对于不同的操作系统来说都是不同的。然而,大部分OS对ACPI功能的请求都会包含在以下几类中:启动时服务,device load time 功能和运行时服务。

       下图显示了OS到ACPICA请求的服务流程。

ACPICA User Guide and Programmer Reference 翻译4