1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:48:11 +00:00

Kernel: Unify BIOS and ACPI components in the SysFS firmware directory

Both should reside in the SysFS firmware directory which is normally
located in /sys/firmware.
Also, apply some OOM-safety patterns when creating the BIOS and ACPI
directories.
This commit is contained in:
Liav A 2021-09-11 11:19:33 +03:00 committed by Andreas Kling
parent 9132596b8e
commit 33f033066c
8 changed files with 82 additions and 18 deletions

View file

@ -7,6 +7,7 @@
#include <AK/Format.h>
#include <AK/StringView.h>
#include <AK/Try.h>
#include <Kernel/Arch/x86/InterruptDisabler.h>
#include <Kernel/Bus/PCI/API.h>
#include <Kernel/Debug.h>
@ -63,14 +64,14 @@ UNMAP_AFTER_INIT ACPISysFSComponent::ACPISysFSComponent(String name, PhysicalAdd
{
}
UNMAP_AFTER_INIT void ACPISysFSDirectory::initialize()
UNMAP_AFTER_INIT KResultOr<NonnullRefPtr<ACPISysFSDirectory>> ACPISysFSDirectory::try_create(FirmwareSysFSDirectory& firmware_directory)
{
auto acpi_directory = adopt_ref(*new (nothrow) ACPISysFSDirectory());
SysFSComponentRegistry::the().register_new_component(acpi_directory);
auto acpi_directory = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) ACPISysFSDirectory(firmware_directory)));
return acpi_directory;
}
UNMAP_AFTER_INIT ACPISysFSDirectory::ACPISysFSDirectory()
: SysFSDirectory("acpi", SysFSComponentRegistry::the().root_directory())
UNMAP_AFTER_INIT ACPISysFSDirectory::ACPISysFSDirectory(FirmwareSysFSDirectory& firmware_directory)
: SysFSDirectory("acpi", firmware_directory)
{
NonnullRefPtrVector<SysFSComponent> components;
size_t ssdt_count = 0;