ACPI 偵錯

ACPICA 偵錯介面

如要開啟 ACPICA 的偵錯輸出內容,請將「enable_acpi_debug = true」建構引數傳遞至 GN。啟用這個選項後,ACPICA 會使用兩個全域變數來控制偵錯輸出。

AcpiDbgLevel

AcpiDbgLevel 是在 third_party/acpica/src/source/include/acpica/acoutput.h 中定義的值的點陣圖,前置字串為「ACPI_LV_」。為方便起見,系統預先定義了幾個詳細程度:ACPI_LV_VERBOSITY1、ACPI_LV_VERBOSITY2、ACPI_LV_VERBOSITY3。這些控制要記錄的追蹤事件類型。舉例來說,如要追蹤所有函式呼叫和互斥鎖作業,您可以將 AcpiDbgLevel 設為

「ACPI_LV_FUNCTIONS | ACPI_LV_MUTEX」

AcpiDbgLayer

AcpiDbgLayer 是在 third_party/acpica/src/source/include/acpica/acoutput.h 中定義的值點陣圖。這些值沒有共同前置字串,但會列為「元件 ID」。這些控制項會決定要追蹤 ACPICA 的哪些子模組。舉例來說,如要追蹤命名空間邏輯和執行器,您可以將 AcpiDbgLayer 設為

「ACPI_NAMESPACE | ACPI_EXECUTOR」

設定這些值

在 third_party/acpica/src/source/os_specific/service_layers/osfuchsia.cpp 中定義的 AcpiOsInitialize 方法中,即可輕鬆設定這些項目。其中一個實用技巧是將 AcpiOsInitialize 中的兩個值都歸零,並在呼叫感興趣的 ACPICA 之前,將其設為非零值。

AcpiDebugTrace

ACPIA API 中還有一個名為 AcpiDebugTrace 的方法。據說支援依 4 個字元的命名空間名稱追蹤特定 ACPI 方法 (但不適用於特定節點)。詳情請參閱 ACPICA 手冊。