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中存在与操作系统无关的部分。ACPICA User Guide and Programmer Reference 翻译3

2.2 ACPICA子系统架构

        ACPICA子系统分为几个逻辑模块或者说几个子部分。每个模块实现了一个服务或者一组与之相关的服务。本部分描述每一个子模块,并且确定这些子模块使用的外部接口的类,确定这些类与这些子模块之间的关系,确定这些接口的名称。

        这些子模块在ACPI的实现中,都是与操作系统无关的。并且可以用于其他所有的操作系统。这些模块都是ANSI C源代码的方式实现的,能够编译或者整合到OS相关的ACPI驱动和子系统中(或者编译、整合成任何对于host OS可用的包中)。

       下表显示ACPICA子系统中的各个子模块和这些子模块之间的关系。AML翻译器作为其他模块的基石,其他服务都是基于AML翻译器来实现的。ACPICA User Guide and Programmer Reference 翻译3

       

 

       

相关文章:

  • 2021-12-06
  • 2021-08-18
  • 2021-11-23
  • 2021-09-06
  • 2021-07-20
  • 2021-07-17
  • 2021-07-22
猜你喜欢
  • 2021-04-30
  • 2021-12-01
  • 2021-10-11
  • 2021-10-28
  • 2022-01-28
  • 2021-10-31
  • 2021-11-12
相关资源
相似解决方案