diff --git a/Kernel/Firmware/ACPI/Parser.cpp b/Kernel/Firmware/ACPI/Parser.cpp index ea3458824b..706cfa284f 100644 --- a/Kernel/Firmware/ACPI/Parser.cpp +++ b/Kernel/Firmware/ACPI/Parser.cpp @@ -67,14 +67,7 @@ UNMAP_AFTER_INIT ACPISysFSComponent::ACPISysFSComponent(NonnullOwnPtr t { } -UNMAP_AFTER_INIT NonnullRefPtr ACPISysFSDirectory::must_create(FirmwareSysFSDirectory& firmware_directory) -{ - auto acpi_directory = MUST(adopt_nonnull_ref_or_enomem(new (nothrow) ACPISysFSDirectory(firmware_directory))); - return acpi_directory; -} - -UNMAP_AFTER_INIT ACPISysFSDirectory::ACPISysFSDirectory(FirmwareSysFSDirectory& firmware_directory) - : SysFSDirectory(firmware_directory) +UNMAP_AFTER_INIT void ACPISysFSDirectory::find_tables_and_register_them_as_components() { NonnullRefPtrVector components; size_t ssdt_count = 0; @@ -99,6 +92,18 @@ UNMAP_AFTER_INIT ACPISysFSDirectory::ACPISysFSDirectory(FirmwareSysFSDirectory& } } +UNMAP_AFTER_INIT NonnullRefPtr ACPISysFSDirectory::must_create(FirmwareSysFSDirectory& firmware_directory) +{ + auto acpi_directory = MUST(adopt_nonnull_ref_or_enomem(new (nothrow) ACPISysFSDirectory(firmware_directory))); + acpi_directory->find_tables_and_register_them_as_components(); + return acpi_directory; +} + +UNMAP_AFTER_INIT ACPISysFSDirectory::ACPISysFSDirectory(FirmwareSysFSDirectory& firmware_directory) + : SysFSDirectory(firmware_directory) +{ +} + void Parser::enumerate_static_tables(Function callback) { for (auto& p_table : m_sdt_pointers) { diff --git a/Kernel/Firmware/ACPI/Parser.h b/Kernel/Firmware/ACPI/Parser.h index b00525221e..ee300cf9c3 100644 --- a/Kernel/Firmware/ACPI/Parser.h +++ b/Kernel/Firmware/ACPI/Parser.h @@ -26,6 +26,7 @@ public: static NonnullRefPtr must_create(FirmwareSysFSDirectory& firmware_directory); private: + void find_tables_and_register_them_as_components(); explicit ACPISysFSDirectory(FirmwareSysFSDirectory& firmware_directory); };