diff --git a/kernel/include/kernel/ACPI/AML/Namespace.h b/kernel/include/kernel/ACPI/AML/Namespace.h index 66a65654..7809795c 100644 --- a/kernel/include/kernel/ACPI/AML/Namespace.h +++ b/kernel/include/kernel/ACPI/AML/Namespace.h @@ -22,7 +22,7 @@ namespace Kernel::ACPI::AML { if (path.size() < canonical_path->size() + 1) continue; - if (path[canonical_path->size()] != '.') + if (canonical_path->size() != 1 && path[canonical_path->size()] != '.') continue; if (path.sv().substring(0, canonical_path->size()) != canonical_path->sv()) continue; diff --git a/kernel/include/kernel/ACPI/AML/Package.h b/kernel/include/kernel/ACPI/AML/Package.h index e9899f92..0001186d 100644 --- a/kernel/include/kernel/ACPI/AML/Package.h +++ b/kernel/include/kernel/ACPI/AML/Package.h @@ -102,11 +102,13 @@ namespace Kernel::ACPI::AML AML_DEBUG_PRINTLN(""); for (const auto& element : elements) { - AML_DEBUG_PRINT_INDENT(indent + 1); if (element) - element->debug_print(0); + element->debug_print(indent + 1); else + { + AML_DEBUG_PRINT_INDENT(indent + 1); AML_DEBUG_PRINT("Uninitialized"); + } AML_DEBUG_PRINTLN(""); } AML_DEBUG_PRINT_INDENT(indent); diff --git a/kernel/include/kernel/ACPI/AML/Processor.h b/kernel/include/kernel/ACPI/AML/Processor.h index 0fff2b34..382d6829 100644 --- a/kernel/include/kernel/ACPI/AML/Processor.h +++ b/kernel/include/kernel/ACPI/AML/Processor.h @@ -68,7 +68,16 @@ namespace Kernel::ACPI::AML virtual void debug_print(int indent) const override { AML_DEBUG_PRINT_INDENT(indent); - AML_DEBUG_PRINT("Processor {} (ID: {}, PBlkAddr: 0x{H}, PBlkLen: {})", name, id, pblk_addr, pblk_len); + AML_DEBUG_PRINTLN("Processor {} (ID: {}, PBlkAddr: 0x{H}, PBlkLen: {}) {", name, id, pblk_addr, pblk_len); + Namespace::root_namespace()->for_each_child(scope, + [&](const auto&, const auto& child) + { + child->debug_print(indent + 1); + AML_DEBUG_PRINTLN(""); + } + ); + AML_DEBUG_PRINT_INDENT(indent); + AML_DEBUG_PRINT("}"); } }; diff --git a/kernel/include/kernel/ACPI/AML/ThermalZone.h b/kernel/include/kernel/ACPI/AML/ThermalZone.h index 5c707c2a..44f0def8 100644 --- a/kernel/include/kernel/ACPI/AML/ThermalZone.h +++ b/kernel/include/kernel/ACPI/AML/ThermalZone.h @@ -46,7 +46,16 @@ namespace Kernel::ACPI::AML virtual void debug_print(int indent) const override { AML_DEBUG_PRINT_INDENT(indent); - AML_DEBUG_PRINT("ThermalZone {}", name); + AML_DEBUG_PRINT("ThermalZone {} {", name); + Namespace::root_namespace()->for_each_child(scope, + [&](const auto&, const auto& child) + { + child->debug_print(indent + 1); + AML_DEBUG_PRINTLN(""); + } + ); + AML_DEBUG_PRINT_INDENT(indent); + AML_DEBUG_PRINT("}"); } }; diff --git a/kernel/kernel/ACPI/AML/NamedObject.cpp b/kernel/kernel/ACPI/AML/NamedObject.cpp index 72b0c1be..ef8ad39e 100644 --- a/kernel/kernel/ACPI/AML/NamedObject.cpp +++ b/kernel/kernel/ACPI/AML/NamedObject.cpp @@ -33,8 +33,10 @@ namespace Kernel::ACPI void AML::Name::debug_print(int indent) const { AML_DEBUG_PRINT_INDENT(indent); - AML_DEBUG_PRINT("Name {} { ", name); - object->debug_print(0); + AML_DEBUG_PRINTLN("Name {} { ", name); + object->debug_print(indent + 1); + AML_DEBUG_PRINTLN(""); + AML_DEBUG_PRINT_INDENT(indent); AML_DEBUG_PRINT("}"); } diff --git a/kernel/kernel/ACPI/AML/Namespace.cpp b/kernel/kernel/ACPI/AML/Namespace.cpp index 47dba7d1..30480ac3 100644 --- a/kernel/kernel/ACPI/AML/Namespace.cpp +++ b/kernel/kernel/ACPI/AML/Namespace.cpp @@ -28,11 +28,10 @@ namespace Kernel::ACPI LockGuard _(m_object_mutex); AML_DEBUG_PRINT_INDENT(indent); AML_DEBUG_PRINTLN("Namespace {} {", name); - for (auto& [path, child] : m_objects) - { + for_each_child(scope, [&](const auto&, const auto& child) { child->debug_print(indent + 1); AML_DEBUG_PRINTLN(""); - } + }); AML_DEBUG_PRINT_INDENT(indent); AML_DEBUG_PRINT("}"); }