diff options
-rw-r--r-- | Kernel/Bus/PCI/Access.cpp | 3 | ||||
-rw-r--r-- | Kernel/GlobalProcessExposed.cpp | 7 | ||||
-rw-r--r-- | Kernel/ProcessExposed.h | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/Kernel/Bus/PCI/Access.cpp b/Kernel/Bus/PCI/Access.cpp index f33191106f..67c3cea1f2 100644 --- a/Kernel/Bus/PCI/Access.cpp +++ b/Kernel/Bus/PCI/Access.cpp @@ -17,6 +17,7 @@ #include <Kernel/Memory/MemoryManager.h> #include <Kernel/Memory/Region.h> #include <Kernel/Memory/TypedMapping.h> +#include <Kernel/ProcessExposed.h> #include <Kernel/Sections.h> namespace Kernel::PCI { @@ -95,6 +96,7 @@ UNMAP_AFTER_INIT bool Access::find_and_register_pci_host_bridges_from_acpi_mcfg_ UNMAP_AFTER_INIT bool Access::initialize_for_multiple_pci_domains(PhysicalAddress mcfg_table) { VERIFY(!Access::is_initialized()); + ProcFSComponentRegistry::the().root_directory().add_pci_node({}); auto* access = new Access(); if (!access->find_and_register_pci_host_bridges_from_acpi_mcfg_table(mcfg_table)) return false; @@ -106,6 +108,7 @@ UNMAP_AFTER_INIT bool Access::initialize_for_multiple_pci_domains(PhysicalAddres UNMAP_AFTER_INIT bool Access::initialize_for_one_pci_domain() { VERIFY(!Access::is_initialized()); + ProcFSComponentRegistry::the().root_directory().add_pci_node({}); auto* access = new Access(); auto host_bridge = HostBridge::must_create_with_io_access(); access->add_host_controller(move(host_bridge)); diff --git a/Kernel/GlobalProcessExposed.cpp b/Kernel/GlobalProcessExposed.cpp index 1353389577..a84331ebf1 100644 --- a/Kernel/GlobalProcessExposed.cpp +++ b/Kernel/GlobalProcessExposed.cpp @@ -9,6 +9,7 @@ #include <Kernel/Arch/x86/InterruptDisabler.h> #include <Kernel/Arch/x86/ProcessorInfo.h> #include <Kernel/Bus/PCI/API.h> +#include <Kernel/Bus/PCI/Access.h> #include <Kernel/CommandLine.h> #include <Kernel/Devices/DeviceManagement.h> #include <Kernel/Devices/HID/HIDManagement.h> @@ -949,6 +950,11 @@ UNMAP_AFTER_INIT ProcFSSystemDirectory::ProcFSSystemDirectory(const ProcFSRootDi { } +UNMAP_AFTER_INIT void ProcFSRootDirectory::add_pci_node(Badge<PCI::Access>) +{ + m_components.append(ProcFSPCI::must_create()); +} + UNMAP_AFTER_INIT NonnullRefPtr<ProcFSRootDirectory> ProcFSRootDirectory::must_create() { auto directory = adopt_ref(*new (nothrow) ProcFSRootDirectory); @@ -961,7 +967,6 @@ UNMAP_AFTER_INIT NonnullRefPtr<ProcFSRootDirectory> ProcFSRootDirectory::must_cr directory->m_components.append(ProcFSDmesg::must_create()); directory->m_components.append(ProcFSInterrupts::must_create()); directory->m_components.append(ProcFSKeymap::must_create()); - directory->m_components.append(ProcFSPCI::must_create()); directory->m_components.append(ProcFSDevices::must_create()); directory->m_components.append(ProcFSUptime::must_create()); directory->m_components.append(ProcFSCommandLine::must_create()); diff --git a/Kernel/ProcessExposed.h b/Kernel/ProcessExposed.h index f42e8ac735..bd19d862c6 100644 --- a/Kernel/ProcessExposed.h +++ b/Kernel/ProcessExposed.h @@ -138,12 +138,18 @@ protected: mutable Mutex m_lock { "ProcFSLink" }; }; +namespace PCI { +class Access; +} + class ProcFSRootDirectory final : public ProcFSExposedDirectory { friend class ProcFSComponentRegistry; public: virtual ErrorOr<NonnullRefPtr<ProcFSExposedComponent>> lookup(StringView name) override; static NonnullRefPtr<ProcFSRootDirectory> must_create(); + + void add_pci_node(Badge<PCI::Access>); virtual ~ProcFSRootDirectory(); private: |