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」

AcpiDbgLayer

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 手冊。