diff --git a/Kernel/Bus/PCI/SysFSPCI.cpp b/Kernel/Bus/PCI/SysFSPCI.cpp index a2980b2972..dfcc7b52f2 100644 --- a/Kernel/Bus/PCI/SysFSPCI.cpp +++ b/Kernel/Bus/PCI/SysFSPCI.cpp @@ -15,21 +15,24 @@ namespace Kernel::PCI { UNMAP_AFTER_INIT NonnullRefPtr PCIDeviceSysFSDirectory::create(const SysFSDirectory& parent_directory, Address address) { - return adopt_ref(*new (nothrow) PCIDeviceSysFSDirectory(parent_directory, address)); + // FIXME: Handle allocation failure gracefully + auto device_name = MUST(KString::try_create(String::formatted("{:04x}:{:02x}:{:02x}.{}", address.domain(), address.bus(), address.device(), address.function()))); + return adopt_ref(*new (nothrow) PCIDeviceSysFSDirectory(move(device_name), parent_directory, address)); } -UNMAP_AFTER_INIT PCIDeviceSysFSDirectory::PCIDeviceSysFSDirectory(const SysFSDirectory& parent_directory, Address address) - : SysFSDirectory(String::formatted("{:04x}:{:02x}:{:02x}.{}", address.domain(), address.bus(), address.device(), address.function()), parent_directory) +UNMAP_AFTER_INIT PCIDeviceSysFSDirectory::PCIDeviceSysFSDirectory(NonnullOwnPtr device_directory_name, const SysFSDirectory& parent_directory, Address address) + : SysFSDirectory(parent_directory) , m_address(address) + , m_device_directory_name(move(device_directory_name)) { - m_components.append(PCIDeviceAttributeSysFSComponent::create("vendor"sv, *this, PCI::RegisterOffset::VENDOR_ID, 2)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("device_id"sv, *this, PCI::RegisterOffset::DEVICE_ID, 2)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("class"sv, *this, PCI::RegisterOffset::CLASS, 1)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("subclass"sv, *this, PCI::RegisterOffset::SUBCLASS, 1)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("revision"sv, *this, PCI::RegisterOffset::REVISION_ID, 1)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("progif"sv, *this, PCI::RegisterOffset::PROG_IF, 1)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("subsystem_vendor"sv, *this, PCI::RegisterOffset::SUBSYSTEM_VENDOR_ID, 2)); - m_components.append(PCIDeviceAttributeSysFSComponent::create("subsystem_id"sv, *this, PCI::RegisterOffset::SUBSYSTEM_ID, 2)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::VENDOR_ID, 2)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::DEVICE_ID, 2)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::CLASS, 1)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::SUBCLASS, 1)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::REVISION_ID, 1)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::PROG_IF, 1)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::SUBSYSTEM_VENDOR_ID, 2)); + m_components.append(PCIDeviceAttributeSysFSComponent::create(*this, PCI::RegisterOffset::SUBSYSTEM_ID, 2)); } UNMAP_AFTER_INIT void PCIBusSysFSDirectory::initialize() @@ -39,7 +42,7 @@ UNMAP_AFTER_INIT void PCIBusSysFSDirectory::initialize() } UNMAP_AFTER_INIT PCIBusSysFSDirectory::PCIBusSysFSDirectory() - : SysFSDirectory("pci", SysFSComponentRegistry::the().buses_directory()) + : SysFSDirectory(SysFSComponentRegistry::the().buses_directory()) { PCI::enumerate([&](DeviceIdentifier const& device_identifier) { auto pci_device = PCI::PCIDeviceSysFSDirectory::create(*this, device_identifier.address()); @@ -47,13 +50,37 @@ UNMAP_AFTER_INIT PCIBusSysFSDirectory::PCIBusSysFSDirectory() }); } -NonnullRefPtr PCIDeviceAttributeSysFSComponent::create(StringView name, const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width) +StringView PCIDeviceAttributeSysFSComponent::name() const { - return adopt_ref(*new (nothrow) PCIDeviceAttributeSysFSComponent(name, device, offset, field_bytes_width)); + switch (m_offset) { + case PCI::RegisterOffset::VENDOR_ID: + return "vendor"sv; + case PCI::RegisterOffset::DEVICE_ID: + return "device_id"sv; + case PCI::RegisterOffset::CLASS: + return "class"sv; + case PCI::RegisterOffset::SUBCLASS: + return "subclass"sv; + case PCI::RegisterOffset::REVISION_ID: + return "revision"sv; + case PCI::RegisterOffset::PROG_IF: + return "progif"sv; + case PCI::RegisterOffset::SUBSYSTEM_VENDOR_ID: + return "subsystem_vendor"sv; + case PCI::RegisterOffset::SUBSYSTEM_ID: + return "subsystem_id"sv; + default: + VERIFY_NOT_REACHED(); + } } -PCIDeviceAttributeSysFSComponent::PCIDeviceAttributeSysFSComponent(StringView name, const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width) - : SysFSComponent(name) +NonnullRefPtr PCIDeviceAttributeSysFSComponent::create(const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width) +{ + return adopt_ref(*new (nothrow) PCIDeviceAttributeSysFSComponent(device, offset, field_bytes_width)); +} + +PCIDeviceAttributeSysFSComponent::PCIDeviceAttributeSysFSComponent(const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width) + : SysFSComponent() , m_device(device) , m_offset(offset) , m_field_bytes_width(field_bytes_width) diff --git a/Kernel/Bus/PCI/SysFSPCI.h b/Kernel/Bus/PCI/SysFSPCI.h index f7c9a7e967..4f549c45c3 100644 --- a/Kernel/Bus/PCI/SysFSPCI.h +++ b/Kernel/Bus/PCI/SysFSPCI.h @@ -15,6 +15,7 @@ namespace Kernel::PCI { class PCIBusSysFSDirectory final : public SysFSDirectory { public: static void initialize(); + virtual StringView name() const override { return "pci"sv; } private: PCIBusSysFSDirectory(); @@ -25,22 +26,28 @@ public: static NonnullRefPtr create(const SysFSDirectory&, Address); const Address& address() const { return m_address; } + virtual StringView name() const override { return m_device_directory_name->view(); } + private: - PCIDeviceSysFSDirectory(const SysFSDirectory&, Address); + PCIDeviceSysFSDirectory(NonnullOwnPtr device_directory_name, const SysFSDirectory&, Address); Address m_address; + + NonnullOwnPtr m_device_directory_name; }; class PCIDeviceAttributeSysFSComponent : public SysFSComponent { public: - static NonnullRefPtr create(StringView name, const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width); + static NonnullRefPtr create(const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width); virtual ErrorOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const override; virtual ~PCIDeviceAttributeSysFSComponent() {}; + virtual StringView name() const override; + protected: ErrorOr> try_to_generate_buffer() const; - PCIDeviceAttributeSysFSComponent(StringView name, const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width); + PCIDeviceAttributeSysFSComponent(const PCIDeviceSysFSDirectory& device, PCI::RegisterOffset offset, size_t field_bytes_width); NonnullRefPtr m_device; PCI::RegisterOffset m_offset; size_t m_field_bytes_width; diff --git a/Kernel/Bus/USB/SysFSUSB.cpp b/Kernel/Bus/USB/SysFSUSB.cpp index 67c8995744..e4fc0a67ef 100644 --- a/Kernel/Bus/USB/SysFSUSB.cpp +++ b/Kernel/Bus/USB/SysFSUSB.cpp @@ -13,9 +13,10 @@ namespace Kernel::USB { static SysFSUSBBusDirectory* s_procfs_usb_bus_directory; -SysFSUSBDeviceInformation::SysFSUSBDeviceInformation(USB::Device& device) - : SysFSComponent(String::number(device.address())) +SysFSUSBDeviceInformation::SysFSUSBDeviceInformation(NonnullOwnPtr device_name, USB::Device& device) + : SysFSComponent() , m_device(device) + , m_device_name(move(device_name)) { } @@ -150,7 +151,7 @@ SysFSUSBBusDirectory& SysFSUSBBusDirectory::the() } UNMAP_AFTER_INIT SysFSUSBBusDirectory::SysFSUSBBusDirectory(SysFSBusDirectory& buses_directory) - : SysFSDirectory("usb"sv, buses_directory) + : SysFSDirectory(buses_directory) { } @@ -163,7 +164,8 @@ UNMAP_AFTER_INIT void SysFSUSBBusDirectory::initialize() NonnullRefPtr SysFSUSBDeviceInformation::create(USB::Device& device) { - return adopt_ref(*new SysFSUSBDeviceInformation(device)); + auto device_name = KString::must_create(String::number(device.address())); + return adopt_ref(*new SysFSUSBDeviceInformation(move(device_name), device)); } } diff --git a/Kernel/Bus/USB/SysFSUSB.h b/Kernel/Bus/USB/SysFSUSB.h index 066254dcc9..87a5b8857e 100644 --- a/Kernel/Bus/USB/SysFSUSB.h +++ b/Kernel/Bus/USB/SysFSUSB.h @@ -20,11 +20,12 @@ public: virtual ~SysFSUSBDeviceInformation() override; static NonnullRefPtr create(USB::Device&); + virtual StringView name() const override { return m_device_name->view(); } RefPtr device() const { return m_device; } protected: - explicit SysFSUSBDeviceInformation(USB::Device& device); + SysFSUSBDeviceInformation(NonnullOwnPtr device_name, USB::Device& device); virtual ErrorOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; @@ -36,6 +37,7 @@ private: ErrorOr try_generate(KBufferBuilder&); virtual ErrorOr refresh_data(OpenFileDescription& description) const override; mutable Mutex m_lock { "SysFSUSBDeviceInformation" }; + NonnullOwnPtr m_device_name; }; class SysFSUSBBusDirectory final : public SysFSDirectory { @@ -43,6 +45,8 @@ public: static void initialize(); static SysFSUSBBusDirectory& the(); + virtual StringView name() const override { return "usb"sv; } + void plug(USB::Device&); void unplug(USB::Device&); diff --git a/Kernel/Devices/Device.cpp b/Kernel/Devices/Device.cpp index 766086ce83..3e32f85f16 100644 --- a/Kernel/Devices/Device.cpp +++ b/Kernel/Devices/Device.cpp @@ -15,11 +15,14 @@ namespace Kernel { NonnullRefPtr SysFSDeviceComponent::must_create(Device const& device) { - return adopt_ref_if_nonnull(new SysFSDeviceComponent(device)).release_nonnull(); + // FIXME: Handle allocation failure gracefully + auto device_name = MUST(KString::try_create(String::formatted("{}:{}", device.major(), device.minor()))); + return adopt_ref_if_nonnull(new SysFSDeviceComponent(move(device_name), device)).release_nonnull(); } -SysFSDeviceComponent::SysFSDeviceComponent(Device const& device) - : SysFSComponent(String::formatted("{}:{}", device.major(), device.minor())) +SysFSDeviceComponent::SysFSDeviceComponent(NonnullOwnPtr major_minor_formatted_device_name, Device const& device) + : SysFSComponent() , m_block_device(device.is_block_device()) + , m_major_minor_formatted_device_name(move(major_minor_formatted_device_name)) { VERIFY(device.is_block_device() || device.is_character_device()); } @@ -32,7 +35,7 @@ UNMAP_AFTER_INIT NonnullRefPtr SysFSDevicesDirectory::mus return devices_directory; } SysFSDevicesDirectory::SysFSDevicesDirectory(SysFSRootDirectory const& root_directory) - : SysFSDirectory("dev"sv, root_directory) + : SysFSDirectory(root_directory) { } @@ -41,7 +44,7 @@ NonnullRefPtr SysFSBlockDevicesDirectory::must_creat return adopt_ref_if_nonnull(new SysFSBlockDevicesDirectory(devices_directory)).release_nonnull(); } SysFSBlockDevicesDirectory::SysFSBlockDevicesDirectory(SysFSDevicesDirectory const& devices_directory) - : SysFSDirectory("block"sv, devices_directory) + : SysFSDirectory(devices_directory) { } @@ -79,7 +82,7 @@ NonnullRefPtr SysFSCharacterDevicesDirectory::mu return adopt_ref_if_nonnull(new SysFSCharacterDevicesDirectory(devices_directory)).release_nonnull(); } SysFSCharacterDevicesDirectory::SysFSCharacterDevicesDirectory(SysFSDevicesDirectory const& devices_directory) - : SysFSDirectory("char"sv, devices_directory) + : SysFSDirectory(devices_directory) { } ErrorOr SysFSCharacterDevicesDirectory::traverse_as_directory(FileSystemID fsid, Function(FileSystem::DirectoryEntryView const&)> callback) const diff --git a/Kernel/FileSystem/SysFS.cpp b/Kernel/FileSystem/SysFS.cpp index b3c30d7e07..46ea5d9b8d 100644 --- a/Kernel/FileSystem/SysFS.cpp +++ b/Kernel/FileSystem/SysFS.cpp @@ -60,7 +60,6 @@ ErrorOr SysFSRootDirectory::traverse_as_directory(FileSystemID fsid, Funct } SysFSRootDirectory::SysFSRootDirectory() - : SysFSDirectory(".") { auto buses_directory = SysFSBusDirectory::must_create(*this); auto devices_directory = SysFSDevicesDirectory::must_create(*this); @@ -252,7 +251,7 @@ UNMAP_AFTER_INIT NonnullRefPtr SysFSBusDirectory::must_create } UNMAP_AFTER_INIT SysFSBusDirectory::SysFSBusDirectory(SysFSRootDirectory const& parent_directory) - : SysFSDirectory("bus"sv, parent_directory) + : SysFSDirectory(parent_directory) { } diff --git a/Kernel/FileSystem/SysFS.h b/Kernel/FileSystem/SysFS.h index 00daf60e05..fb50384158 100644 --- a/Kernel/FileSystem/SysFS.h +++ b/Kernel/FileSystem/SysFS.h @@ -18,6 +18,7 @@ class SysFSRootDirectory final : public SysFSDirectory { friend class SysFSComponentRegistry; public: + virtual StringView name() const override { return "."sv; } static NonnullRefPtr create(); virtual ErrorOr traverse_as_directory(FileSystemID, Function(FileSystem::DirectoryEntryView const&)>) const override; @@ -33,17 +34,20 @@ class SysFSDeviceComponent final public: static NonnullRefPtr must_create(Device const&); - + virtual StringView name() const override { return m_major_minor_formatted_device_name->view(); } bool is_block_device() const { return m_block_device; } private: - explicit SysFSDeviceComponent(Device const&); + SysFSDeviceComponent(NonnullOwnPtr major_minor_formatted_device_name, Device const&); IntrusiveListNode> m_list_node; bool m_block_device; + + NonnullOwnPtr m_major_minor_formatted_device_name; }; class SysFSDevicesDirectory final : public SysFSDirectory { public: + virtual StringView name() const override { return "dev"sv; } static NonnullRefPtr must_create(SysFSRootDirectory const&); private: @@ -52,6 +56,7 @@ private: class SysFSBlockDevicesDirectory final : public SysFSDirectory { public: + virtual StringView name() const override { return "block"sv; } static NonnullRefPtr must_create(SysFSDevicesDirectory const&); virtual ErrorOr traverse_as_directory(FileSystemID, Function(FileSystem::DirectoryEntryView const&)>) const override; virtual RefPtr lookup(StringView name) override; @@ -62,6 +67,7 @@ private: class SysFSCharacterDevicesDirectory final : public SysFSDirectory { public: + virtual StringView name() const override { return "char"sv; } static NonnullRefPtr must_create(SysFSDevicesDirectory const&); virtual ErrorOr traverse_as_directory(FileSystemID, Function(FileSystem::DirectoryEntryView const&)>) const override; virtual RefPtr lookup(StringView name) override; @@ -74,6 +80,7 @@ class SysFSBusDirectory : public SysFSDirectory { friend class SysFSComponentRegistry; public: + virtual StringView name() const override { return "bus"sv; } static NonnullRefPtr must_create(SysFSRootDirectory const&); private: diff --git a/Kernel/FileSystem/SysFSComponent.cpp b/Kernel/FileSystem/SysFSComponent.cpp index 49f8b08a3a..df8be7646d 100644 --- a/Kernel/FileSystem/SysFSComponent.cpp +++ b/Kernel/FileSystem/SysFSComponent.cpp @@ -20,9 +20,8 @@ static size_t allocate_inode_index() return s_next_inode_index.value(); } -SysFSComponent::SysFSComponent(StringView name) - : m_name(KString::try_create(name).release_value()) // FIXME: Handle KString allocation failure. - , m_component_index(allocate_inode_index()) +SysFSComponent::SysFSComponent() + : m_component_index(allocate_inode_index()) { } @@ -55,13 +54,8 @@ RefPtr SysFSDirectory::lookup(StringView name) return {}; } -SysFSDirectory::SysFSDirectory(StringView name) - : SysFSComponent(name) -{ -} - -SysFSDirectory::SysFSDirectory(StringView name, SysFSDirectory const& parent_directory) - : SysFSComponent(name) +SysFSDirectory::SysFSDirectory(SysFSDirectory const& parent_directory) + : SysFSComponent() , m_parent_directory(parent_directory) { } diff --git a/Kernel/FileSystem/SysFSComponent.h b/Kernel/FileSystem/SysFSComponent.h index 4209802566..179f704ea4 100644 --- a/Kernel/FileSystem/SysFSComponent.h +++ b/Kernel/FileSystem/SysFSComponent.h @@ -25,7 +25,7 @@ struct SysFSInodeData : public OpenFileDescriptionData { class SysFSComponent : public RefCounted { public: - virtual StringView name() const { return m_name->view(); } + virtual StringView name() const = 0; virtual ErrorOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { return Error::from_errno(ENOTIMPL); } virtual ErrorOr traverse_as_directory(FileSystemID, Function(FileSystem::DirectoryEntryView const&)>) const { VERIFY_NOT_REACHED(); } virtual RefPtr lookup(StringView) { VERIFY_NOT_REACHED(); }; @@ -42,10 +42,9 @@ public: virtual ~SysFSComponent() = default; protected: - explicit SysFSComponent(StringView name); + SysFSComponent(); private: - NonnullOwnPtr m_name; InodeIndex m_component_index {}; }; @@ -57,8 +56,8 @@ public: virtual ErrorOr> to_inode(SysFS const& sysfs_instance) const override final; protected: - explicit SysFSDirectory(StringView name); - SysFSDirectory(StringView name, SysFSDirectory const& parent_directory); + SysFSDirectory() = default; + explicit SysFSDirectory(SysFSDirectory const& parent_directory); NonnullRefPtrVector m_components; RefPtr m_parent_directory; }; diff --git a/Kernel/Firmware/ACPI/Parser.cpp b/Kernel/Firmware/ACPI/Parser.cpp index 745af138e8..7671957b1b 100644 --- a/Kernel/Firmware/ACPI/Parser.cpp +++ b/Kernel/Firmware/ACPI/Parser.cpp @@ -34,9 +34,11 @@ void Parser::must_initialize(PhysicalAddress rsdp, PhysicalAddress fadt, u8 irq_ VERIFY(s_acpi_parser); } -UNMAP_AFTER_INIT NonnullRefPtr ACPISysFSComponent::create(String name, PhysicalAddress paddr, size_t table_size) +UNMAP_AFTER_INIT NonnullRefPtr ACPISysFSComponent::create(StringView name, PhysicalAddress paddr, size_t table_size) { - return adopt_ref(*new (nothrow) ACPISysFSComponent(name, paddr, table_size)); + // FIXME: Handle allocation failure gracefully + auto table_name = KString::must_create(name); + return adopt_ref(*new (nothrow) ACPISysFSComponent(move(table_name), paddr, table_size)); } ErrorOr ACPISysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const @@ -57,10 +59,11 @@ ErrorOr> ACPISysFSComponent::try_to_generate_buffer() con return KBuffer::try_create_with_bytes(Span { acpi_blob.ptr(), m_length }); } -UNMAP_AFTER_INIT ACPISysFSComponent::ACPISysFSComponent(String name, PhysicalAddress paddr, size_t table_size) - : SysFSComponent(name) +UNMAP_AFTER_INIT ACPISysFSComponent::ACPISysFSComponent(NonnullOwnPtr table_name, PhysicalAddress paddr, size_t table_size) + : SysFSComponent() , m_paddr(paddr) , m_length(table_size) + , m_table_name(move(table_name)) { } @@ -71,7 +74,7 @@ UNMAP_AFTER_INIT ErrorOr> ACPISysFSDirectory:: } UNMAP_AFTER_INIT ACPISysFSDirectory::ACPISysFSDirectory(FirmwareSysFSDirectory& firmware_directory) - : SysFSDirectory("acpi", firmware_directory) + : SysFSDirectory(firmware_directory) { NonnullRefPtrVector components; size_t ssdt_count = 0; diff --git a/Kernel/Firmware/ACPI/Parser.h b/Kernel/Firmware/ACPI/Parser.h index fc3e4bda36..af0a4cd78f 100644 --- a/Kernel/Firmware/ACPI/Parser.h +++ b/Kernel/Firmware/ACPI/Parser.h @@ -22,6 +22,7 @@ namespace Kernel::ACPI { class ACPISysFSDirectory : public SysFSDirectory { public: + virtual StringView name() const override { return "acpi"sv; } static ErrorOr> try_create(FirmwareSysFSDirectory& firmware_directory); private: @@ -30,16 +31,17 @@ private: class ACPISysFSComponent : public SysFSComponent { public: - static NonnullRefPtr create(String name, PhysicalAddress, size_t table_size); - + static NonnullRefPtr create(StringView name, PhysicalAddress, size_t table_size); + virtual StringView name() const override { return m_table_name->view(); } virtual ErrorOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const override; protected: ErrorOr> try_to_generate_buffer() const; - ACPISysFSComponent(String name, PhysicalAddress, size_t table_size); + ACPISysFSComponent(NonnullOwnPtr table_name, PhysicalAddress, size_t table_size); PhysicalAddress m_paddr; size_t m_length; + NonnullOwnPtr m_table_name; }; class Parser final : public IRQHandler { diff --git a/Kernel/Firmware/BIOS.cpp b/Kernel/Firmware/BIOS.cpp index dd99a92b6d..8f633aa03b 100644 --- a/Kernel/Firmware/BIOS.cpp +++ b/Kernel/Firmware/BIOS.cpp @@ -24,8 +24,7 @@ UNMAP_AFTER_INIT NonnullRefPtr DMIEntryPointExposedBlo return adopt_ref(*new (nothrow) DMIEntryPointExposedBlob(dmi_entry_point, blob_size)); } -UNMAP_AFTER_INIT BIOSSysFSComponent::BIOSSysFSComponent(StringView name) - : SysFSComponent(name) +UNMAP_AFTER_INIT BIOSSysFSComponent::BIOSSysFSComponent() { } @@ -42,7 +41,7 @@ ErrorOr BIOSSysFSComponent::read_bytes(off_t offset, size_t count, UserO } UNMAP_AFTER_INIT DMIEntryPointExposedBlob::DMIEntryPointExposedBlob(PhysicalAddress dmi_entry_point, size_t blob_size) - : BIOSSysFSComponent("smbios_entry_point"sv) + : BIOSSysFSComponent() , m_dmi_entry_point(dmi_entry_point) , m_dmi_entry_point_length(blob_size) { @@ -60,7 +59,7 @@ UNMAP_AFTER_INIT NonnullRefPtr SMBIOSExposedTable::create(Ph } UNMAP_AFTER_INIT SMBIOSExposedTable::SMBIOSExposedTable(PhysicalAddress smbios_structure_table, size_t smbios_structure_table_length) - : BIOSSysFSComponent("DMI"sv) + : BIOSSysFSComponent() , m_smbios_structure_table(smbios_structure_table) , m_smbios_structure_table_length(smbios_structure_table_length) { @@ -127,7 +126,7 @@ UNMAP_AFTER_INIT void BIOSSysFSDirectory::initialize_dmi_exposer() } UNMAP_AFTER_INIT BIOSSysFSDirectory::BIOSSysFSDirectory(FirmwareSysFSDirectory& firmware_directory) - : SysFSDirectory("bios", firmware_directory) + : SysFSDirectory(firmware_directory) { auto entry_32bit = find_dmi_entry32bit_point(); if (entry_32bit.has_value()) { diff --git a/Kernel/Firmware/BIOS.h b/Kernel/Firmware/BIOS.h index 55618393f8..57699300b6 100644 --- a/Kernel/Firmware/BIOS.h +++ b/Kernel/Firmware/BIOS.h @@ -66,11 +66,12 @@ public: protected: virtual ErrorOr> try_to_generate_buffer() const = 0; - explicit BIOSSysFSComponent(StringView name); + BIOSSysFSComponent(); }; class DMIEntryPointExposedBlob : public BIOSSysFSComponent { public: + virtual StringView name() const override { return "smbios_entry_point"sv; } static NonnullRefPtr create(PhysicalAddress dmi_entry_point, size_t blob_size); private: @@ -82,6 +83,7 @@ private: class SMBIOSExposedTable : public BIOSSysFSComponent { public: + virtual StringView name() const override { return "DMI"sv; } static NonnullRefPtr create(PhysicalAddress, size_t blob_size); private: @@ -94,6 +96,7 @@ private: class BIOSSysFSDirectory : public SysFSDirectory { public: + virtual StringView name() const override { return "bios"sv; } static ErrorOr> try_create(FirmwareSysFSDirectory&); void create_components(); diff --git a/Kernel/Firmware/PowerStateSwitch.cpp b/Kernel/Firmware/PowerStateSwitch.cpp index f76b415f07..8e33ce5a5e 100644 --- a/Kernel/Firmware/PowerStateSwitch.cpp +++ b/Kernel/Firmware/PowerStateSwitch.cpp @@ -26,7 +26,7 @@ UNMAP_AFTER_INIT NonnullRefPtr PowerStateSwitchNode::must_ } UNMAP_AFTER_INIT PowerStateSwitchNode::PowerStateSwitchNode(FirmwareSysFSDirectory&) - : SysFSComponent("power_state") + : SysFSComponent() { } diff --git a/Kernel/Firmware/PowerStateSwitch.h b/Kernel/Firmware/PowerStateSwitch.h index 7e167539fa..03cff3e82a 100644 --- a/Kernel/Firmware/PowerStateSwitch.h +++ b/Kernel/Firmware/PowerStateSwitch.h @@ -22,6 +22,7 @@ namespace Kernel { class PowerStateSwitchNode final : public SysFSComponent { public: + virtual StringView name() const override { return "power_state"sv; } static NonnullRefPtr must_create(FirmwareSysFSDirectory&); virtual mode_t permissions() const override; virtual ErrorOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) override; diff --git a/Kernel/Firmware/SysFSFirmware.cpp b/Kernel/Firmware/SysFSFirmware.cpp index 0691255133..7cacebda97 100644 --- a/Kernel/Firmware/SysFSFirmware.cpp +++ b/Kernel/Firmware/SysFSFirmware.cpp @@ -32,7 +32,7 @@ void FirmwareSysFSDirectory::create_components() } UNMAP_AFTER_INIT FirmwareSysFSDirectory::FirmwareSysFSDirectory() - : SysFSDirectory("firmware", SysFSComponentRegistry::the().root_directory()) + : SysFSDirectory(SysFSComponentRegistry::the().root_directory()) { } diff --git a/Kernel/Firmware/SysFSFirmware.h b/Kernel/Firmware/SysFSFirmware.h index 9203e6ca94..b2e0adee02 100644 --- a/Kernel/Firmware/SysFSFirmware.h +++ b/Kernel/Firmware/SysFSFirmware.h @@ -13,6 +13,7 @@ namespace Kernel { class FirmwareSysFSDirectory : public SysFSDirectory { public: + virtual StringView name() const override { return "firmware"sv; } static void initialize(); void create_components();