ACPI 调试

ACPICA 调试接口

如需开启 ACPICA 的调试输出,请将“enable_acpi_debug = true”构建参数传递给 GN。启用此选项后,ACPICA 会使用两个全局变量来控制调试输出。

AcpiDbgLevel

AcpiDbgLevel 是在 third_party/lib/acpica/source/include/acpica/acoutput.h 中定义、前缀为“ACPI_LV_”的位图。为方便起见,我们在下面提供了一些预定义的详细程度级别:ACPI_LV_VERBOSITY1、ACPI_LV_VERBOSITY2、ACPI_LV_VERBOSITY3。这些控件控制要记录的跟踪事件类型。例如,如果要跟踪所有函数调用和互斥操作,可以将 AcpiDbgLevel 设置为

“ACPI_LV_FUNCTIONS | ACPI_LV_MUTEX”

AcpiDbg 图层

AcpiDbgLayer 是在 third_party/lib/acpica/source/include/acpica/acoutput.h 中定义的值的位图。这些值没有公共前缀,但被列为“组件 ID”。这些参数用于控制要跟踪的 ACPICA 的哪些子模块。例如,如需跟踪命名空间逻辑和执行器,您可以将 AcpiDbgLayer 设置为

“ACPI_NAMESPACE | ACPI_EXECUTOR”

设置这些值

您可以在一个位置轻松设置我们在 third_party/lib/acpica/source/os_specific/service_layers/osfuchsia.cpp 中定义的 AcpiOsInitialize 方法。一种可能有用的方法是,将 AcpiOsInitialize 中的这两个值都归零,并在调用相关 ACPICA 之前立即将其设置为非零值。

AcpiDebugTrace

ACPIA API 中还有一个名为 AcpiDebugTrace 的方法。它应该支持按 4 个字符的命名空间名称跟踪特定的 ACPI 方法(但不将范围限定为特定节点)。如需了解详情,请参阅 ACPICA 手册。