2.1.3.2 主操作系统交互方式
主操作系统(hos operating system)直接调用ACPICA子系统的以Acpi开头的接口函数来请求ACPI服务。
当ACPICA子系统需要调用操作系统服务的时候,它都是通过调用操作系统服务层(OSL)来实现的。OSL层调用操作系统服务或者OSL代替ACPICA子系统(与操作系统无关部分)调用操作系统服务时,都是由OSL层向上调(calls up)用到主操作系统。所有与host相关的调用都局限于OSL内。与操作系统无关的ACPICA基础代码中不包含操作系统相关的代码。
2.1.3.3 OSL交互方式
OSL实现了与操作系统相关部分的接口,这些接口是以AcpiOs开头的函数。这些接口函数为ACPICA提供常用的操作系统服务, 例如,内存分配、互斥、硬件操作和I/O。ACPICA使用这些接口来调用操作系统服务,这种方式是与操作系统无关的。因此, OSL会调用主操作系统的服务来实现以AcpiOs开头的接口。
2.1.3.4 ACPI子系统交互方式
ACPICA子系统实现了一系列外部接口,host OS可以直接调用这些接口,host使用ACPI服务时,这些以Acpi开头的函数是实际其作用的函数。当Acpi服务运行时需要使用操作系统服务时,ACPICA子系统会调用固定以AcpiOs开头的函数,以这种方式间接向OS提需求。
下图以各种架构元素之间的控制流来显示各种架构之间的关系。注意,ACPICA中与操作系统无关的部分绝不会直接调用host服务,而是调用OSL层中以AcpiOs开头的接口函数。这就实现了ACPICA中存在与操作系统无关的部分。