1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 22:27:42 +00:00

Kernel: Replace "Folder" => "Directory" everywhere

Folders are a GUI concept, file systems have directories. :^)
This commit is contained in:
Andreas Kling 2021-07-11 01:33:40 +02:00
parent 5ec3f5433e
commit 805319ed30
13 changed files with 165 additions and 165 deletions

View file

@ -60,13 +60,13 @@ UNMAP_AFTER_INIT ExposedComponent::ExposedComponent(String name, PhysicalAddress
{ {
} }
UNMAP_AFTER_INIT void ExposedFolder::initialize() UNMAP_AFTER_INIT void ExposedDirectory::initialize()
{ {
auto acpi_folder = adopt_ref(*new (nothrow) ExposedFolder()); auto acpi_folder = adopt_ref(*new (nothrow) ExposedDirectory());
SysFSComponentRegistry::the().register_new_component(acpi_folder); SysFSComponentRegistry::the().register_new_component(acpi_folder);
} }
UNMAP_AFTER_INIT ExposedFolder::ExposedFolder() UNMAP_AFTER_INIT ExposedDirectory::ExposedDirectory()
: SysFSDirectory("acpi", SysFSComponentRegistry::the().root_folder()) : SysFSDirectory("acpi", SysFSComponentRegistry::the().root_folder())
{ {
NonnullRefPtrVector<SysFSComponent> components; NonnullRefPtrVector<SysFSComponent> components;

View file

@ -17,12 +17,12 @@
namespace Kernel { namespace Kernel {
namespace ACPI { namespace ACPI {
class ExposedFolder : public SysFSDirectory { class ExposedDirectory : public SysFSDirectory {
public: public:
static void initialize(); static void initialize();
private: private:
ExposedFolder(); ExposedDirectory();
}; };
class ExposedComponent : public SysFSComponent { class ExposedComponent : public SysFSComponent {

View file

@ -75,32 +75,32 @@ OwnPtr<KBuffer> SMBIOSExposedTable::try_to_generate_buffer() const
return KBuffer::try_create_with_bytes(Span<u8> { dmi_blob.ptr(), m_smbios_structure_table_length }); return KBuffer::try_create_with_bytes(Span<u8> { dmi_blob.ptr(), m_smbios_structure_table_length });
} }
UNMAP_AFTER_INIT void BIOSExposedFolder::set_dmi_64_bit_entry_initialization_values() UNMAP_AFTER_INIT void BIOSExposedDirectory::set_dmi_64_bit_entry_initialization_values()
{ {
dbgln("BIOSExposedFolder: SMBIOS 64bit Entry point @ {}", m_dmi_entry_point); dbgln("BIOSExposedDirectory: SMBIOS 64bit Entry point @ {}", m_dmi_entry_point);
auto smbios_entry = map_typed<SMBIOS::EntryPoint64bit>(m_dmi_entry_point, SMBIOS_SEARCH_AREA_SIZE); auto smbios_entry = map_typed<SMBIOS::EntryPoint64bit>(m_dmi_entry_point, SMBIOS_SEARCH_AREA_SIZE);
m_smbios_structure_table = PhysicalAddress(smbios_entry.ptr()->table_ptr); m_smbios_structure_table = PhysicalAddress(smbios_entry.ptr()->table_ptr);
m_dmi_entry_point_length = smbios_entry.ptr()->length; m_dmi_entry_point_length = smbios_entry.ptr()->length;
m_smbios_structure_table_length = smbios_entry.ptr()->table_maximum_size; m_smbios_structure_table_length = smbios_entry.ptr()->table_maximum_size;
} }
UNMAP_AFTER_INIT void BIOSExposedFolder::set_dmi_32_bit_entry_initialization_values() UNMAP_AFTER_INIT void BIOSExposedDirectory::set_dmi_32_bit_entry_initialization_values()
{ {
dbgln("BIOSExposedFolder: SMBIOS 32bit Entry point @ {}", m_dmi_entry_point); dbgln("BIOSExposedDirectory: SMBIOS 32bit Entry point @ {}", m_dmi_entry_point);
auto smbios_entry = map_typed<SMBIOS::EntryPoint32bit>(m_dmi_entry_point, SMBIOS_SEARCH_AREA_SIZE); auto smbios_entry = map_typed<SMBIOS::EntryPoint32bit>(m_dmi_entry_point, SMBIOS_SEARCH_AREA_SIZE);
m_smbios_structure_table = PhysicalAddress(smbios_entry.ptr()->legacy_structure.smbios_table_ptr); m_smbios_structure_table = PhysicalAddress(smbios_entry.ptr()->legacy_structure.smbios_table_ptr);
m_dmi_entry_point_length = smbios_entry.ptr()->length; m_dmi_entry_point_length = smbios_entry.ptr()->length;
m_smbios_structure_table_length = smbios_entry.ptr()->legacy_structure.smboios_table_length; m_smbios_structure_table_length = smbios_entry.ptr()->legacy_structure.smboios_table_length;
} }
UNMAP_AFTER_INIT void BIOSExposedFolder::initialize() UNMAP_AFTER_INIT void BIOSExposedDirectory::initialize()
{ {
auto bios_folder = adopt_ref(*new (nothrow) BIOSExposedFolder()); auto bios_folder = adopt_ref(*new (nothrow) BIOSExposedDirectory());
SysFSComponentRegistry::the().register_new_component(bios_folder); SysFSComponentRegistry::the().register_new_component(bios_folder);
bios_folder->create_components(); bios_folder->create_components();
} }
void BIOSExposedFolder::create_components() void BIOSExposedDirectory::create_components()
{ {
auto dmi_entry_point = DMIEntryPointExposedBlob::create(m_dmi_entry_point, m_dmi_entry_point_length); auto dmi_entry_point = DMIEntryPointExposedBlob::create(m_dmi_entry_point, m_dmi_entry_point_length);
m_components.append(dmi_entry_point); m_components.append(dmi_entry_point);
@ -108,16 +108,16 @@ void BIOSExposedFolder::create_components()
m_components.append(smbios_table); m_components.append(smbios_table);
} }
size_t BIOSExposedFolder::dmi_entry_point_length() const size_t BIOSExposedDirectory::dmi_entry_point_length() const
{ {
return m_dmi_entry_point_length; return m_dmi_entry_point_length;
} }
size_t BIOSExposedFolder::smbios_structure_table_length() const size_t BIOSExposedDirectory::smbios_structure_table_length() const
{ {
return m_smbios_structure_table_length; return m_smbios_structure_table_length;
} }
UNMAP_AFTER_INIT void BIOSExposedFolder::initialize_dmi_exposer() UNMAP_AFTER_INIT void BIOSExposedDirectory::initialize_dmi_exposer()
{ {
VERIFY(!(m_dmi_entry_point.is_null())); VERIFY(!(m_dmi_entry_point.is_null()));
if (m_using_64bit_dmi_entry_point) { if (m_using_64bit_dmi_entry_point) {
@ -125,16 +125,16 @@ UNMAP_AFTER_INIT void BIOSExposedFolder::initialize_dmi_exposer()
} else { } else {
set_dmi_32_bit_entry_initialization_values(); set_dmi_32_bit_entry_initialization_values();
} }
dbgln("BIOSExposedFolder: Data table @ {}", m_smbios_structure_table); dbgln("BIOSExposedDirectory: Data table @ {}", m_smbios_structure_table);
} }
OwnPtr<KBuffer> BIOSExposedFolder::smbios_structure_table() const OwnPtr<KBuffer> BIOSExposedDirectory::smbios_structure_table() const
{ {
auto dmi_blob = map_typed<u8>(m_smbios_structure_table, m_smbios_structure_table_length); auto dmi_blob = map_typed<u8>(m_smbios_structure_table, m_smbios_structure_table_length);
return KBuffer::try_create_with_bytes(Span<u8> { dmi_blob.ptr(), m_smbios_structure_table_length }); return KBuffer::try_create_with_bytes(Span<u8> { dmi_blob.ptr(), m_smbios_structure_table_length });
} }
UNMAP_AFTER_INIT BIOSExposedFolder::BIOSExposedFolder() UNMAP_AFTER_INIT BIOSExposedDirectory::BIOSExposedDirectory()
: SysFSDirectory("bios", SysFSComponentRegistry::the().root_folder()) : SysFSDirectory("bios", SysFSComponentRegistry::the().root_folder())
{ {
auto entry_32bit = find_dmi_entry32bit_point(); auto entry_32bit = find_dmi_entry32bit_point();
@ -150,12 +150,12 @@ UNMAP_AFTER_INIT BIOSExposedFolder::BIOSExposedFolder()
initialize_dmi_exposer(); initialize_dmi_exposer();
} }
UNMAP_AFTER_INIT Optional<PhysicalAddress> BIOSExposedFolder::find_dmi_entry64bit_point() UNMAP_AFTER_INIT Optional<PhysicalAddress> BIOSExposedDirectory::find_dmi_entry64bit_point()
{ {
return map_bios().find_chunk_starting_with("_SM3_", 16); return map_bios().find_chunk_starting_with("_SM3_", 16);
} }
UNMAP_AFTER_INIT Optional<PhysicalAddress> BIOSExposedFolder::find_dmi_entry32bit_point() UNMAP_AFTER_INIT Optional<PhysicalAddress> BIOSExposedDirectory::find_dmi_entry32bit_point()
{ {
return map_bios().find_chunk_starting_with("_SM_", 16); return map_bios().find_chunk_starting_with("_SM_", 16);
} }

View file

@ -92,7 +92,7 @@ private:
size_t m_smbios_structure_table_length; size_t m_smbios_structure_table_length;
}; };
class BIOSExposedFolder : public SysFSDirectory { class BIOSExposedDirectory : public SysFSDirectory {
public: public:
static void initialize(); static void initialize();
@ -104,7 +104,7 @@ private:
size_t dmi_entry_point_length() const; size_t dmi_entry_point_length() const;
size_t smbios_structure_table_length() const; size_t smbios_structure_table_length() const;
BIOSExposedFolder(); BIOSExposedDirectory();
void set_dmi_64_bit_entry_initialization_values(); void set_dmi_64_bit_entry_initialization_values();
void set_dmi_32_bit_entry_initialization_values(); void set_dmi_32_bit_entry_initialization_values();

View file

@ -69,11 +69,11 @@ static constexpr u16 UHCI_PORTSC_SUSPEND = 0x1000;
static constexpr u8 UHCI_NUMBER_OF_ISOCHRONOUS_TDS = 128; static constexpr u8 UHCI_NUMBER_OF_ISOCHRONOUS_TDS = 128;
static constexpr u16 UHCI_NUMBER_OF_FRAMES = 1024; static constexpr u16 UHCI_NUMBER_OF_FRAMES = 1024;
class ProcFSUSBBusFolder; class ProcFSUSBBusDirectory;
static ProcFSUSBBusFolder* s_procfs_usb_bus_folder; static ProcFSUSBBusDirectory* s_procfs_usb_bus_folder;
class ProcFSUSBDeviceInformation : public ProcFSGlobalInformation { class ProcFSUSBDeviceInformation : public ProcFSGlobalInformation {
friend class ProcFSUSBBusFolder; friend class ProcFSUSBBusDirectory;
public: public:
virtual ~ProcFSUSBDeviceInformation() override {}; virtual ~ProcFSUSBDeviceInformation() override {};
@ -115,7 +115,7 @@ protected:
RefPtr<USB::Device> m_device; RefPtr<USB::Device> m_device;
}; };
class ProcFSUSBBusFolder final : public ProcFSExposedFolder { class ProcFSUSBBusDirectory final : public ProcFSExposedDirectory {
friend class ProcFSComponentsRegistrar; friend class ProcFSComponentsRegistrar;
public: public:
@ -128,7 +128,7 @@ public:
virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override; virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override;
private: private:
ProcFSUSBBusFolder(const ProcFSBusDirectory&); ProcFSUSBBusDirectory(const ProcFSBusDirectory&);
RefPtr<ProcFSUSBDeviceInformation> device_node_for(USB::Device& device); RefPtr<ProcFSUSBDeviceInformation> device_node_for(USB::Device& device);
@ -136,12 +136,12 @@ private:
mutable SpinLock<u8> m_lock; mutable SpinLock<u8> m_lock;
}; };
KResultOr<size_t> ProcFSUSBBusFolder::entries_count() const KResultOr<size_t> ProcFSUSBBusDirectory::entries_count() const
{ {
ScopedSpinLock lock(m_lock); ScopedSpinLock lock(m_lock);
return m_device_nodes.size_slow(); return m_device_nodes.size_slow();
} }
KResult ProcFSUSBBusFolder::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const KResult ProcFSUSBBusDirectory::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const
{ {
ScopedSpinLock lock(m_lock); ScopedSpinLock lock(m_lock);
auto parent_folder = m_parent_folder.strong_ref(); auto parent_folder = m_parent_folder.strong_ref();
@ -156,7 +156,7 @@ KResult ProcFSUSBBusFolder::traverse_as_directory(unsigned fsid, Function<bool(F
} }
return KSuccess; return KSuccess;
} }
RefPtr<ProcFSExposedComponent> ProcFSUSBBusFolder::lookup(StringView name) RefPtr<ProcFSExposedComponent> ProcFSUSBBusDirectory::lookup(StringView name)
{ {
ScopedSpinLock lock(m_lock); ScopedSpinLock lock(m_lock);
for (auto& device_node : m_device_nodes) { for (auto& device_node : m_device_nodes) {
@ -167,7 +167,7 @@ RefPtr<ProcFSExposedComponent> ProcFSUSBBusFolder::lookup(StringView name)
return {}; return {};
} }
RefPtr<ProcFSUSBDeviceInformation> ProcFSUSBBusFolder::device_node_for(USB::Device& device) RefPtr<ProcFSUSBDeviceInformation> ProcFSUSBBusDirectory::device_node_for(USB::Device& device)
{ {
RefPtr<USB::Device> checked_device = device; RefPtr<USB::Device> checked_device = device;
for (auto& device_node : m_device_nodes) { for (auto& device_node : m_device_nodes) {
@ -177,14 +177,14 @@ RefPtr<ProcFSUSBDeviceInformation> ProcFSUSBBusFolder::device_node_for(USB::Devi
return {}; return {};
} }
void ProcFSUSBBusFolder::plug(USB::Device& new_device) void ProcFSUSBBusDirectory::plug(USB::Device& new_device)
{ {
ScopedSpinLock lock(m_lock); ScopedSpinLock lock(m_lock);
auto device_node = device_node_for(new_device); auto device_node = device_node_for(new_device);
VERIFY(!device_node); VERIFY(!device_node);
m_device_nodes.append(ProcFSUSBDeviceInformation::create(new_device)); m_device_nodes.append(ProcFSUSBDeviceInformation::create(new_device));
} }
void ProcFSUSBBusFolder::unplug(USB::Device& deleted_device) void ProcFSUSBBusDirectory::unplug(USB::Device& deleted_device)
{ {
ScopedSpinLock lock(m_lock); ScopedSpinLock lock(m_lock);
auto device_node = device_node_for(deleted_device); auto device_node = device_node_for(deleted_device);
@ -192,14 +192,14 @@ void ProcFSUSBBusFolder::unplug(USB::Device& deleted_device)
device_node->m_list_node.remove(); device_node->m_list_node.remove();
} }
UNMAP_AFTER_INIT ProcFSUSBBusFolder::ProcFSUSBBusFolder(const ProcFSBusDirectory& buses_folder) UNMAP_AFTER_INIT ProcFSUSBBusDirectory::ProcFSUSBBusDirectory(const ProcFSBusDirectory& buses_folder)
: ProcFSExposedFolder("usb"sv, buses_folder) : ProcFSExposedDirectory("usb"sv, buses_folder)
{ {
} }
UNMAP_AFTER_INIT void ProcFSUSBBusFolder::initialize() UNMAP_AFTER_INIT void ProcFSUSBBusDirectory::initialize()
{ {
auto folder = adopt_ref(*new ProcFSUSBBusFolder(ProcFSComponentsRegistrar::the().buses_folder())); auto folder = adopt_ref(*new ProcFSUSBBusDirectory(ProcFSComponentsRegistrar::the().buses_folder()));
ProcFSComponentsRegistrar::the().register_new_bus_folder(folder); ProcFSComponentsRegistrar::the().register_new_bus_folder(folder);
s_procfs_usb_bus_folder = folder; s_procfs_usb_bus_folder = folder;
} }
@ -221,7 +221,7 @@ UNMAP_AFTER_INIT void UHCIController::detect()
// FIXME: We create the /proc/bus/usb representation here, but it should really be handled // FIXME: We create the /proc/bus/usb representation here, but it should really be handled
// in a more broad singleton than this once we refactor things in USB subsystem. // in a more broad singleton than this once we refactor things in USB subsystem.
ProcFSUSBBusFolder::initialize(); ProcFSUSBBusDirectory::initialize();
PCI::enumerate([&](const PCI::Address& address, PCI::ID id) { PCI::enumerate([&](const PCI::Address& address, PCI::ID id) {
if (address.is_null()) if (address.is_null())

View file

@ -33,7 +33,7 @@ UNMAP_AFTER_INIT void ProcFSComponentsRegistrar::initialize()
} }
UNMAP_AFTER_INIT ProcFSComponentsRegistrar::ProcFSComponentsRegistrar() UNMAP_AFTER_INIT ProcFSComponentsRegistrar::ProcFSComponentsRegistrar()
: m_root_folder(ProcFSRootFolder::must_create()) : m_root_folder(ProcFSRootDirectory::must_create())
{ {
} }
@ -42,7 +42,7 @@ const ProcFSBusDirectory& ProcFSComponentsRegistrar::buses_folder() const
return *m_root_folder->m_buses_folder; return *m_root_folder->m_buses_folder;
} }
void ProcFSComponentsRegistrar::register_new_bus_folder(ProcFSExposedFolder& new_bus_folder) void ProcFSComponentsRegistrar::register_new_bus_folder(ProcFSExposedDirectory& new_bus_folder)
{ {
VERIFY(!m_root_folder->m_buses_folder.is_null()); VERIFY(!m_root_folder->m_buses_folder.is_null());
m_root_folder->m_buses_folder->m_components.append(new_bus_folder); m_root_folder->m_buses_folder->m_components.append(new_bus_folder);
@ -51,7 +51,7 @@ void ProcFSComponentsRegistrar::register_new_bus_folder(ProcFSExposedFolder& new
void ProcFSComponentsRegistrar::register_new_process(Process& new_process) void ProcFSComponentsRegistrar::register_new_process(Process& new_process)
{ {
Locker locker(m_lock); Locker locker(m_lock);
m_root_folder->m_process_folders.append(ProcFSProcessFolder::create(new_process)); m_root_folder->m_process_folders.append(ProcFSProcessDirectory::create(new_process));
} }
void ProcFSComponentsRegistrar::unregister_process(Process& deleted_process) void ProcFSComponentsRegistrar::unregister_process(Process& deleted_process)
@ -59,8 +59,8 @@ void ProcFSComponentsRegistrar::unregister_process(Process& deleted_process)
auto process_folder = m_root_folder->process_folder_for(deleted_process).release_nonnull(); auto process_folder = m_root_folder->process_folder_for(deleted_process).release_nonnull();
process_folder->prepare_for_deletion(); process_folder->prepare_for_deletion();
process_folder->m_list_node.remove(); process_folder->m_list_node.remove();
dbgln_if(PROCFS_DEBUG, "ProcFSExposedFolder ref_count now: {}", process_folder->ref_count()); dbgln_if(PROCFS_DEBUG, "ProcFSExposedDirectory ref_count now: {}", process_folder->ref_count());
// Note: Let's ensure we are the last holder of the ProcFSProcessFolder object before it can be deleted for good // Note: Let's ensure we are the last holder of the ProcFSProcessDirectory object before it can be deleted for good
VERIFY(process_folder->ref_count() == 1); VERIFY(process_folder->ref_count() == 1);
} }

View file

@ -25,7 +25,7 @@ UNMAP_AFTER_INIT void SysFSComponentRegistry::initialize()
} }
UNMAP_AFTER_INIT SysFSComponentRegistry::SysFSComponentRegistry() UNMAP_AFTER_INIT SysFSComponentRegistry::SysFSComponentRegistry()
: m_root_folder(SysFSRootFolder::create()) : m_root_folder(SysFSRootDirectory::create())
{ {
} }
@ -35,12 +35,12 @@ UNMAP_AFTER_INIT void SysFSComponentRegistry::register_new_component(SysFSCompon
m_root_folder->m_components.append(component); m_root_folder->m_components.append(component);
} }
NonnullRefPtr<SysFSRootFolder> SysFSRootFolder::create() NonnullRefPtr<SysFSRootDirectory> SysFSRootDirectory::create()
{ {
return adopt_ref(*new (nothrow) SysFSRootFolder); return adopt_ref(*new (nothrow) SysFSRootDirectory);
} }
KResult SysFSRootFolder::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const KResult SysFSRootDirectory::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const
{ {
Locker locker(SysFSComponentRegistry::the().get_lock()); Locker locker(SysFSComponentRegistry::the().get_lock());
callback({ ".", { fsid, component_index() }, 0 }); callback({ ".", { fsid, component_index() }, 0 });
@ -53,7 +53,7 @@ KResult SysFSRootFolder::traverse_as_directory(unsigned fsid, Function<bool(File
return KSuccess; return KSuccess;
} }
SysFSRootFolder::SysFSRootFolder() SysFSRootDirectory::SysFSRootDirectory()
: SysFSDirectory(".") : SysFSDirectory(".")
{ {
} }

View file

@ -12,15 +12,15 @@
namespace Kernel { namespace Kernel {
class SysFSRootFolder final : public SysFSDirectory { class SysFSRootDirectory final : public SysFSDirectory {
friend class SysFSComponentRegistry; friend class SysFSComponentRegistry;
public: public:
static NonnullRefPtr<SysFSRootFolder> create(); static NonnullRefPtr<SysFSRootDirectory> create();
virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override; virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
private: private:
SysFSRootFolder(); SysFSRootDirectory();
}; };
class SysFSComponentRegistry { class SysFSComponentRegistry {
@ -37,7 +37,7 @@ public:
private: private:
Lock m_lock; Lock m_lock;
NonnullRefPtr<SysFSRootFolder> m_root_folder; NonnullRefPtr<SysFSRootDirectory> m_root_folder;
}; };
class SysFS final : public FileSystem { class SysFS final : public FileSystem {

View file

@ -158,20 +158,20 @@ private:
} }
}; };
class ProcFSNetworkDirectory : public ProcFSExposedFolder { class ProcFSNetworkDirectory : public ProcFSExposedDirectory {
public: public:
static NonnullRefPtr<ProcFSNetworkDirectory> must_create(const ProcFSRootFolder& parent_folder); static NonnullRefPtr<ProcFSNetworkDirectory> must_create(const ProcFSRootDirectory& parent_folder);
private: private:
ProcFSNetworkDirectory(const ProcFSRootFolder& parent_folder); ProcFSNetworkDirectory(const ProcFSRootDirectory& parent_folder);
}; };
class ProcFSSystemDirectory : public ProcFSExposedFolder { class ProcFSSystemDirectory : public ProcFSExposedDirectory {
public: public:
static NonnullRefPtr<ProcFSSystemDirectory> must_create(const ProcFSRootFolder& parent_folder); static NonnullRefPtr<ProcFSSystemDirectory> must_create(const ProcFSRootDirectory& parent_folder);
private: private:
ProcFSSystemDirectory(const ProcFSRootFolder& parent_folder); ProcFSSystemDirectory(const ProcFSRootDirectory& parent_folder);
}; };
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSAdapters> ProcFSAdapters::must_create() UNMAP_AFTER_INIT NonnullRefPtr<ProcFSAdapters> ProcFSAdapters::must_create()
@ -195,7 +195,7 @@ UNMAP_AFTER_INIT NonnullRefPtr<ProcFSUDP> ProcFSUDP::must_create()
return adopt_ref_if_nonnull(new (nothrow) ProcFSUDP).release_nonnull(); return adopt_ref_if_nonnull(new (nothrow) ProcFSUDP).release_nonnull();
} }
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSNetworkDirectory> ProcFSNetworkDirectory::must_create(const ProcFSRootFolder& parent_folder) UNMAP_AFTER_INIT NonnullRefPtr<ProcFSNetworkDirectory> ProcFSNetworkDirectory::must_create(const ProcFSRootDirectory& parent_folder)
{ {
auto folder = adopt_ref(*new (nothrow) ProcFSNetworkDirectory(parent_folder)); auto folder = adopt_ref(*new (nothrow) ProcFSNetworkDirectory(parent_folder));
folder->m_components.append(ProcFSAdapters::must_create()); folder->m_components.append(ProcFSAdapters::must_create());
@ -226,8 +226,8 @@ UNMAP_AFTER_INIT ProcFSUDP::ProcFSUDP()
: ProcFSGlobalInformation("udp"sv) : ProcFSGlobalInformation("udp"sv)
{ {
} }
UNMAP_AFTER_INIT ProcFSNetworkDirectory::ProcFSNetworkDirectory(const ProcFSRootFolder& parent_folder) UNMAP_AFTER_INIT ProcFSNetworkDirectory::ProcFSNetworkDirectory(const ProcFSRootDirectory& parent_folder)
: ProcFSExposedFolder("net"sv, parent_folder) : ProcFSExposedDirectory("net"sv, parent_folder)
{ {
} }
@ -318,12 +318,12 @@ UNMAP_AFTER_INIT ProcFSCapsLockRemap::ProcFSCapsLockRemap()
{ {
} }
class ProcFSSelfProcessFolder final : public ProcFSExposedLink { class ProcFSSelfProcessDirectory final : public ProcFSExposedLink {
public: public:
static NonnullRefPtr<ProcFSSelfProcessFolder> must_create(); static NonnullRefPtr<ProcFSSelfProcessDirectory> must_create();
private: private:
ProcFSSelfProcessFolder(); ProcFSSelfProcessDirectory();
virtual bool acquire_link(KBufferBuilder& builder) override virtual bool acquire_link(KBufferBuilder& builder) override
{ {
builder.appendff("{}", Process::current()->pid().value()); builder.appendff("{}", Process::current()->pid().value());
@ -701,9 +701,9 @@ private:
} }
}; };
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSSelfProcessFolder> ProcFSSelfProcessFolder::must_create() UNMAP_AFTER_INIT NonnullRefPtr<ProcFSSelfProcessDirectory> ProcFSSelfProcessDirectory::must_create()
{ {
return adopt_ref_if_nonnull(new (nothrow) ProcFSSelfProcessFolder()).release_nonnull(); return adopt_ref_if_nonnull(new (nothrow) ProcFSSelfProcessDirectory()).release_nonnull();
} }
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSDiskUsage> ProcFSDiskUsage::must_create() UNMAP_AFTER_INIT NonnullRefPtr<ProcFSDiskUsage> ProcFSDiskUsage::must_create()
{ {
@ -758,7 +758,7 @@ UNMAP_AFTER_INIT NonnullRefPtr<ProcFSProfile> ProcFSProfile::must_create()
return adopt_ref_if_nonnull(new (nothrow) ProcFSProfile).release_nonnull(); return adopt_ref_if_nonnull(new (nothrow) ProcFSProfile).release_nonnull();
} }
UNMAP_AFTER_INIT ProcFSSelfProcessFolder::ProcFSSelfProcessFolder() UNMAP_AFTER_INIT ProcFSSelfProcessDirectory::ProcFSSelfProcessDirectory()
: ProcFSExposedLink("self"sv) : ProcFSExposedLink("self"sv)
{ {
} }
@ -815,13 +815,13 @@ UNMAP_AFTER_INIT ProcFSProfile::ProcFSProfile()
{ {
} }
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSBusDirectory> ProcFSBusDirectory::must_create(const ProcFSRootFolder& parent_folder) UNMAP_AFTER_INIT NonnullRefPtr<ProcFSBusDirectory> ProcFSBusDirectory::must_create(const ProcFSRootDirectory& parent_folder)
{ {
auto folder = adopt_ref(*new (nothrow) ProcFSBusDirectory(parent_folder)); auto folder = adopt_ref(*new (nothrow) ProcFSBusDirectory(parent_folder));
return folder; return folder;
} }
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSSystemDirectory> ProcFSSystemDirectory::must_create(const ProcFSRootFolder& parent_folder) UNMAP_AFTER_INIT NonnullRefPtr<ProcFSSystemDirectory> ProcFSSystemDirectory::must_create(const ProcFSRootDirectory& parent_folder)
{ {
auto folder = adopt_ref(*new (nothrow) ProcFSSystemDirectory(parent_folder)); auto folder = adopt_ref(*new (nothrow) ProcFSSystemDirectory(parent_folder));
folder->m_components.append(ProcFSDumpKmallocStacks::must_create(folder)); folder->m_components.append(ProcFSDumpKmallocStacks::must_create(folder));
@ -830,19 +830,19 @@ UNMAP_AFTER_INIT NonnullRefPtr<ProcFSSystemDirectory> ProcFSSystemDirectory::mus
return folder; return folder;
} }
UNMAP_AFTER_INIT ProcFSBusDirectory::ProcFSBusDirectory(const ProcFSRootFolder& parent_folder) UNMAP_AFTER_INIT ProcFSBusDirectory::ProcFSBusDirectory(const ProcFSRootDirectory& parent_folder)
: ProcFSExposedFolder("bus"sv, parent_folder) : ProcFSExposedDirectory("bus"sv, parent_folder)
{ {
} }
UNMAP_AFTER_INIT ProcFSSystemDirectory::ProcFSSystemDirectory(const ProcFSRootFolder& parent_folder) UNMAP_AFTER_INIT ProcFSSystemDirectory::ProcFSSystemDirectory(const ProcFSRootDirectory& parent_folder)
: ProcFSExposedFolder("sys"sv, parent_folder) : ProcFSExposedDirectory("sys"sv, parent_folder)
{ {
} }
UNMAP_AFTER_INIT NonnullRefPtr<ProcFSRootFolder> ProcFSRootFolder::must_create() UNMAP_AFTER_INIT NonnullRefPtr<ProcFSRootDirectory> ProcFSRootDirectory::must_create()
{ {
auto folder = adopt_ref(*new (nothrow) ProcFSRootFolder); auto folder = adopt_ref(*new (nothrow) ProcFSRootDirectory);
folder->m_components.append(ProcFSSelfProcessFolder::must_create()); folder->m_components.append(ProcFSSelfProcessDirectory::must_create());
folder->m_components.append(ProcFSDiskUsage::must_create()); folder->m_components.append(ProcFSDiskUsage::must_create());
folder->m_components.append(ProcFSMemoryStatus::must_create()); folder->m_components.append(ProcFSMemoryStatus::must_create());
folder->m_components.append(ProcFSOverallProcesses::must_create()); folder->m_components.append(ProcFSOverallProcesses::must_create());
@ -865,7 +865,7 @@ UNMAP_AFTER_INIT NonnullRefPtr<ProcFSRootFolder> ProcFSRootFolder::must_create()
return folder; return folder;
} }
KResult ProcFSRootFolder::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const KResult ProcFSRootDirectory::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const
{ {
Locker locker(ProcFSComponentsRegistrar::the().m_lock); Locker locker(ProcFSComponentsRegistrar::the().m_lock);
callback({ ".", { fsid, component_index() }, 0 }); callback({ ".", { fsid, component_index() }, 0 });
@ -882,9 +882,9 @@ KResult ProcFSRootFolder::traverse_as_directory(unsigned fsid, Function<bool(Fil
return KSuccess; return KSuccess;
} }
RefPtr<ProcFSExposedComponent> ProcFSRootFolder::lookup(StringView name) RefPtr<ProcFSExposedComponent> ProcFSRootDirectory::lookup(StringView name)
{ {
if (auto candidate = ProcFSExposedFolder::lookup(name); !candidate.is_null()) if (auto candidate = ProcFSExposedDirectory::lookup(name); !candidate.is_null())
return candidate; return candidate;
for (auto& component : m_process_folders) { for (auto& component : m_process_folders) {
@ -895,16 +895,16 @@ RefPtr<ProcFSExposedComponent> ProcFSRootFolder::lookup(StringView name)
return {}; return {};
} }
UNMAP_AFTER_INIT ProcFSRootFolder::ProcFSRootFolder() UNMAP_AFTER_INIT ProcFSRootDirectory::ProcFSRootDirectory()
: ProcFSExposedFolder("."sv) : ProcFSExposedDirectory("."sv)
{ {
} }
UNMAP_AFTER_INIT ProcFSRootFolder::~ProcFSRootFolder() UNMAP_AFTER_INIT ProcFSRootDirectory::~ProcFSRootDirectory()
{ {
} }
RefPtr<ProcFSProcessFolder> ProcFSRootFolder::process_folder_for(Process& process) RefPtr<ProcFSProcessDirectory> ProcFSRootDirectory::process_folder_for(Process& process)
{ {
RefPtr<Process> checked_process = process; RefPtr<Process> checked_process = process;
for (auto& folder : m_process_folders) { for (auto& folder : m_process_folders) {

View file

@ -47,12 +47,12 @@ ProcFSExposedComponent::ProcFSExposedComponent(StringView name, InodeIndex preal
m_name = KString::try_create(name); m_name = KString::try_create(name);
} }
ProcFSExposedFolder::ProcFSExposedFolder(StringView name) ProcFSExposedDirectory::ProcFSExposedDirectory(StringView name)
: ProcFSExposedComponent(name) : ProcFSExposedComponent(name)
{ {
} }
ProcFSExposedFolder::ProcFSExposedFolder(StringView name, const ProcFSExposedFolder& parent_folder) ProcFSExposedDirectory::ProcFSExposedDirectory(StringView name, const ProcFSExposedDirectory& parent_folder)
: ProcFSExposedComponent(name) : ProcFSExposedComponent(name)
, m_parent_folder(parent_folder) , m_parent_folder(parent_folder)
{ {
@ -220,17 +220,17 @@ NonnullRefPtr<Inode> ProcFSExposedComponent::to_inode(const ProcFS& procfs_insta
return ProcFSInode::create(procfs_instance, *this); return ProcFSInode::create(procfs_instance, *this);
} }
NonnullRefPtr<Inode> ProcFSExposedFolder::to_inode(const ProcFS& procfs_instance) const NonnullRefPtr<Inode> ProcFSExposedDirectory::to_inode(const ProcFS& procfs_instance) const
{ {
return ProcFSDirectoryInode::create(procfs_instance, *this); return ProcFSDirectoryInode::create(procfs_instance, *this);
} }
void ProcFSExposedFolder::add_component(const ProcFSExposedComponent&) void ProcFSExposedDirectory::add_component(const ProcFSExposedComponent&)
{ {
TODO(); TODO();
} }
RefPtr<ProcFSExposedComponent> ProcFSExposedFolder::lookup(StringView name) RefPtr<ProcFSExposedComponent> ProcFSExposedDirectory::lookup(StringView name)
{ {
for (auto& component : m_components) { for (auto& component : m_components) {
if (component.name() == name) { if (component.name() == name) {
@ -240,7 +240,7 @@ RefPtr<ProcFSExposedComponent> ProcFSExposedFolder::lookup(StringView name)
return {}; return {};
} }
KResult ProcFSExposedFolder::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const KResult ProcFSExposedDirectory::traverse_as_directory(unsigned fsid, Function<bool(FileSystem::DirectoryEntryView const&)> callback) const
{ {
Locker locker(ProcFSComponentsRegistrar::the().m_lock); Locker locker(ProcFSComponentsRegistrar::the().m_lock);
auto parent_folder = m_parent_folder.strong_ref(); auto parent_folder = m_parent_folder.strong_ref();

View file

@ -23,16 +23,16 @@ namespace Kernel {
class ProcFS; class ProcFS;
class ProcFSExposedComponent; class ProcFSExposedComponent;
class ProcFSExposedFolder; class ProcFSExposedDirectory;
class ProcFSRootFolder; class ProcFSRootDirectory;
class ProcFSBusDirectory; class ProcFSBusDirectory;
class ProcFSSystemBoolean; class ProcFSSystemBoolean;
class ProcFSComponentsRegistrar { class ProcFSComponentsRegistrar {
friend class ProcFS; friend class ProcFS;
friend class ProcFSExposedComponent; friend class ProcFSExposedComponent;
friend class ProcFSExposedFolder; friend class ProcFSExposedDirectory;
friend class ProcFSRootFolder; friend class ProcFSRootDirectory;
public: public:
static ProcFSComponentsRegistrar& the(); static ProcFSComponentsRegistrar& the();
@ -42,18 +42,18 @@ public:
InodeIndex allocate_inode_index() const; InodeIndex allocate_inode_index() const;
ProcFSComponentsRegistrar(); ProcFSComponentsRegistrar();
void register_new_bus_folder(ProcFSExposedFolder&); void register_new_bus_folder(ProcFSExposedDirectory&);
const ProcFSBusDirectory& buses_folder() const; const ProcFSBusDirectory& buses_folder() const;
void register_new_process(Process&); void register_new_process(Process&);
void unregister_process(Process&); void unregister_process(Process&);
ProcFSRootFolder& root_folder() { return *m_root_folder; } ProcFSRootDirectory& root_folder() { return *m_root_folder; }
private: private:
Lock m_lock; Lock m_lock;
NonnullRefPtr<ProcFSRootFolder> m_root_folder; NonnullRefPtr<ProcFSRootDirectory> m_root_folder;
}; };
class ProcFSExposedComponent : public RefCounted<ProcFSExposedComponent> { class ProcFSExposedComponent : public RefCounted<ProcFSExposedComponent> {
@ -92,10 +92,10 @@ private:
InodeIndex m_component_index {}; InodeIndex m_component_index {};
}; };
class ProcFSExposedFolder class ProcFSExposedDirectory
: public ProcFSExposedComponent : public ProcFSExposedComponent
, public Weakable<ProcFSExposedFolder> { , public Weakable<ProcFSExposedDirectory> {
friend class ProcFSProcessFolder; friend class ProcFSProcessDirectory;
friend class ProcFSComponentsRegistrar; friend class ProcFSComponentsRegistrar;
public: public:
@ -115,10 +115,10 @@ public:
virtual NonnullRefPtr<Inode> to_inode(const ProcFS& procfs_instance) const override final; virtual NonnullRefPtr<Inode> to_inode(const ProcFS& procfs_instance) const override final;
protected: protected:
explicit ProcFSExposedFolder(StringView name); explicit ProcFSExposedDirectory(StringView name);
ProcFSExposedFolder(StringView name, const ProcFSExposedFolder& parent_folder); ProcFSExposedDirectory(StringView name, const ProcFSExposedDirectory& parent_folder);
NonnullRefPtrVector<ProcFSExposedComponent> m_components; NonnullRefPtrVector<ProcFSExposedComponent> m_components;
WeakPtr<ProcFSExposedFolder> m_parent_folder; WeakPtr<ProcFSExposedDirectory> m_parent_folder;
}; };
class ProcFSExposedLink : public ProcFSExposedComponent { class ProcFSExposedLink : public ProcFSExposedComponent {
@ -134,13 +134,13 @@ protected:
mutable Lock m_lock { "ProcFSLink" }; mutable Lock m_lock { "ProcFSLink" };
}; };
class ProcFSRootFolder; class ProcFSRootDirectory;
class ProcFSProcessInformation; class ProcFSProcessInformation;
class ProcFSProcessFolder final class ProcFSProcessDirectory final
: public ProcFSExposedFolder { : public ProcFSExposedDirectory {
friend class ProcFSComponentsRegistrar; friend class ProcFSComponentsRegistrar;
friend class ProcFSRootFolder; friend class ProcFSRootDirectory;
friend class ProcFSProcessInformation; friend class ProcFSProcessInformation;
friend class ProcFSProcessPledge; friend class ProcFSProcessPledge;
friend class ProcFSProcessUnveil; friend class ProcFSProcessUnveil;
@ -155,7 +155,7 @@ class ProcFSProcessFolder final
friend class ProcFSProcessStacks; friend class ProcFSProcessStacks;
public: public:
static NonnullRefPtr<ProcFSProcessFolder> create(const Process&); static NonnullRefPtr<ProcFSProcessDirectory> create(const Process&);
NonnullRefPtr<Process> associated_process() { return m_associated_process; } NonnullRefPtr<Process> associated_process() { return m_associated_process; }
virtual uid_t owner_user() const override { return m_associated_process->uid(); } virtual uid_t owner_user() const override { return m_associated_process->uid(); }
@ -165,40 +165,40 @@ public:
private: private:
void on_attach(); void on_attach();
IntrusiveListNode<ProcFSProcessFolder, RefPtr<ProcFSProcessFolder>> m_list_node; IntrusiveListNode<ProcFSProcessDirectory, RefPtr<ProcFSProcessDirectory>> m_list_node;
explicit ProcFSProcessFolder(const Process&); explicit ProcFSProcessDirectory(const Process&);
NonnullRefPtr<Process> m_associated_process; NonnullRefPtr<Process> m_associated_process;
}; };
class ProcFSRootFolder; class ProcFSRootDirectory;
class ProcFSBusDirectory : public ProcFSExposedFolder { class ProcFSBusDirectory : public ProcFSExposedDirectory {
friend class ProcFSComponentsRegistrar; friend class ProcFSComponentsRegistrar;
public: public:
static NonnullRefPtr<ProcFSBusDirectory> must_create(const ProcFSRootFolder& parent_folder); static NonnullRefPtr<ProcFSBusDirectory> must_create(const ProcFSRootDirectory& parent_folder);
private: private:
ProcFSBusDirectory(const ProcFSRootFolder& parent_folder); ProcFSBusDirectory(const ProcFSRootDirectory& parent_folder);
}; };
class ProcFSRootFolder final : public ProcFSExposedFolder { class ProcFSRootDirectory final : public ProcFSExposedDirectory {
friend class ProcFSComponentsRegistrar; friend class ProcFSComponentsRegistrar;
public: public:
virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override; virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override;
RefPtr<ProcFSProcessFolder> process_folder_for(Process&); RefPtr<ProcFSProcessDirectory> process_folder_for(Process&);
static NonnullRefPtr<ProcFSRootFolder> must_create(); static NonnullRefPtr<ProcFSRootDirectory> must_create();
virtual ~ProcFSRootFolder(); virtual ~ProcFSRootDirectory();
private: private:
virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override; virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
ProcFSRootFolder(); ProcFSRootDirectory();
RefPtr<ProcFSBusDirectory> m_buses_folder; RefPtr<ProcFSBusDirectory> m_buses_folder;
IntrusiveList<ProcFSProcessFolder, RefPtr<ProcFSProcessFolder>, &ProcFSProcessFolder::m_list_node> m_process_folders; IntrusiveList<ProcFSProcessDirectory, RefPtr<ProcFSProcessDirectory>, &ProcFSProcessDirectory::m_list_node> m_process_folders;
}; };
class ProcFSGlobalInformation : public ProcFSExposedComponent { class ProcFSGlobalInformation : public ProcFSExposedComponent {
@ -247,7 +247,7 @@ public:
virtual gid_t owner_group() const override { return m_parent_folder.strong_ref()->m_associated_process->gid(); } virtual gid_t owner_group() const override { return m_parent_folder.strong_ref()->m_associated_process->gid(); }
protected: protected:
ProcFSProcessInformation(StringView name, const ProcFSProcessFolder& process_folder) ProcFSProcessInformation(StringView name, const ProcFSProcessDirectory& process_folder)
: ProcFSExposedComponent(name) : ProcFSExposedComponent(name)
, m_parent_folder(process_folder) , m_parent_folder(process_folder)
{ {
@ -256,7 +256,7 @@ protected:
virtual KResult refresh_data(FileDescription&) const override; virtual KResult refresh_data(FileDescription&) const override;
virtual bool output(KBufferBuilder& builder) = 0; virtual bool output(KBufferBuilder& builder) = 0;
WeakPtr<ProcFSProcessFolder> m_parent_folder; WeakPtr<ProcFSProcessDirectory> m_parent_folder;
mutable SpinLock<u8> m_refresh_lock; mutable SpinLock<u8> m_refresh_lock;
}; };

View file

@ -20,13 +20,13 @@ class ProcFSProcessStacks;
class ProcFSThreadStack final : public ProcFSProcessInformation { class ProcFSThreadStack final : public ProcFSProcessInformation {
public: public:
// Note: We pass const ProcFSProcessStacks& to enforce creation with this type of folder // Note: We pass const ProcFSProcessStacks& to enforce creation with this type of folder
static NonnullRefPtr<ProcFSThreadStack> create(const ProcFSProcessFolder& process_folder, const ProcFSProcessStacks&, const Thread& thread) static NonnullRefPtr<ProcFSThreadStack> create(const ProcFSProcessDirectory& process_folder, const ProcFSProcessStacks&, const Thread& thread)
{ {
return adopt_ref(*new (nothrow) ProcFSThreadStack(process_folder, thread)); return adopt_ref(*new (nothrow) ProcFSThreadStack(process_folder, thread));
} }
private: private:
explicit ProcFSThreadStack(const ProcFSProcessFolder& process_folder, const Thread& thread) explicit ProcFSThreadStack(const ProcFSProcessDirectory& process_folder, const Thread& thread)
: ProcFSProcessInformation(String::formatted("{}", thread.tid()), process_folder) : ProcFSProcessInformation(String::formatted("{}", thread.tid()), process_folder)
, m_associated_thread(thread) , m_associated_thread(thread)
{ {
@ -53,7 +53,7 @@ private:
NonnullRefPtr<Thread> m_associated_thread; NonnullRefPtr<Thread> m_associated_thread;
}; };
class ProcFSProcessStacks final : public ProcFSExposedFolder { class ProcFSProcessStacks final : public ProcFSExposedDirectory {
// Note: This folder is special, because everything that is created here is dynamic! // Note: This folder is special, because everything that is created here is dynamic!
// This means we don't register anything in the m_components Vector, and every inode // This means we don't register anything in the m_components Vector, and every inode
// is created in runtime when called to get it // is created in runtime when called to get it
@ -65,7 +65,7 @@ public:
virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override; virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override; virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override;
static NonnullRefPtr<ProcFSProcessStacks> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessStacks> create(const ProcFSProcessDirectory& parent_folder)
{ {
auto folder = adopt_ref(*new (nothrow) ProcFSProcessStacks(parent_folder)); auto folder = adopt_ref(*new (nothrow) ProcFSProcessStacks(parent_folder));
return folder; return folder;
@ -73,17 +73,17 @@ public:
virtual void prepare_for_deletion() override virtual void prepare_for_deletion() override
{ {
ProcFSExposedFolder::prepare_for_deletion(); ProcFSExposedDirectory::prepare_for_deletion();
m_process_folder.clear(); m_process_folder.clear();
} }
private: private:
ProcFSProcessStacks(const ProcFSProcessFolder& parent_folder) ProcFSProcessStacks(const ProcFSProcessDirectory& parent_folder)
: ProcFSExposedFolder("stacks"sv, parent_folder) : ProcFSExposedDirectory("stacks"sv, parent_folder)
, m_process_folder(parent_folder) , m_process_folder(parent_folder)
{ {
} }
WeakPtr<ProcFSProcessFolder> m_process_folder; WeakPtr<ProcFSProcessDirectory> m_process_folder;
mutable Lock m_lock; mutable Lock m_lock;
}; };
@ -156,7 +156,7 @@ private:
NonnullRefPtr<FileDescription> m_associated_file_description; NonnullRefPtr<FileDescription> m_associated_file_description;
}; };
class ProcFSProcessFileDescriptions final : public ProcFSExposedFolder { class ProcFSProcessFileDescriptions final : public ProcFSExposedDirectory {
// Note: This folder is special, because everything that is created here is dynamic! // Note: This folder is special, because everything that is created here is dynamic!
// This means we don't register anything in the m_components Vector, and every inode // This means we don't register anything in the m_components Vector, and every inode
// is created in runtime when called to get it // is created in runtime when called to get it
@ -168,24 +168,24 @@ public:
virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override; virtual KResult traverse_as_directory(unsigned, Function<bool(FileSystem::DirectoryEntryView const&)>) const override;
virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override; virtual RefPtr<ProcFSExposedComponent> lookup(StringView name) override;
static NonnullRefPtr<ProcFSProcessFileDescriptions> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessFileDescriptions> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessFileDescriptions(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessFileDescriptions(parent_folder));
} }
virtual void prepare_for_deletion() override virtual void prepare_for_deletion() override
{ {
ProcFSExposedFolder::prepare_for_deletion(); ProcFSExposedDirectory::prepare_for_deletion();
m_process_folder.clear(); m_process_folder.clear();
} }
private: private:
explicit ProcFSProcessFileDescriptions(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessFileDescriptions(const ProcFSProcessDirectory& parent_folder)
: ProcFSExposedFolder("fd"sv, parent_folder) : ProcFSExposedDirectory("fd"sv, parent_folder)
, m_process_folder(parent_folder) , m_process_folder(parent_folder)
{ {
} }
WeakPtr<ProcFSProcessFolder> m_process_folder; WeakPtr<ProcFSProcessDirectory> m_process_folder;
mutable Lock m_lock; mutable Lock m_lock;
}; };
@ -244,13 +244,13 @@ RefPtr<ProcFSExposedComponent> ProcFSProcessFileDescriptions::lookup(StringView
class ProcFSProcessPledge final : public ProcFSProcessInformation { class ProcFSProcessPledge final : public ProcFSProcessInformation {
public: public:
static NonnullRefPtr<ProcFSProcessPledge> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessPledge> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessPledge(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessPledge(parent_folder));
} }
private: private:
explicit ProcFSProcessPledge(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessPledge(const ProcFSProcessDirectory& parent_folder)
: ProcFSProcessInformation("pledge"sv, parent_folder) : ProcFSProcessInformation("pledge"sv, parent_folder)
{ {
} }
@ -280,13 +280,13 @@ private:
class ProcFSProcessUnveil final : public ProcFSProcessInformation { class ProcFSProcessUnveil final : public ProcFSProcessInformation {
public: public:
static NonnullRefPtr<ProcFSProcessUnveil> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessUnveil> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessUnveil(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessUnveil(parent_folder));
} }
private: private:
explicit ProcFSProcessUnveil(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessUnveil(const ProcFSProcessDirectory& parent_folder)
: ProcFSProcessInformation("unveil"sv, parent_folder) : ProcFSProcessInformation("unveil"sv, parent_folder)
{ {
} }
@ -321,13 +321,13 @@ private:
class ProcFSProcessPerformanceEvents final : public ProcFSProcessInformation { class ProcFSProcessPerformanceEvents final : public ProcFSProcessInformation {
public: public:
static NonnullRefPtr<ProcFSProcessPerformanceEvents> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessPerformanceEvents> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessPerformanceEvents(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessPerformanceEvents(parent_folder));
} }
private: private:
explicit ProcFSProcessPerformanceEvents(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessPerformanceEvents(const ProcFSProcessDirectory& parent_folder)
: ProcFSProcessInformation("perf_events"sv, parent_folder) : ProcFSProcessInformation("perf_events"sv, parent_folder)
{ {
} }
@ -348,13 +348,13 @@ private:
class ProcFSProcessOverallFileDescriptions final : public ProcFSProcessInformation { class ProcFSProcessOverallFileDescriptions final : public ProcFSProcessInformation {
public: public:
static NonnullRefPtr<ProcFSProcessOverallFileDescriptions> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessOverallFileDescriptions> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessOverallFileDescriptions(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessOverallFileDescriptions(parent_folder));
} }
private: private:
explicit ProcFSProcessOverallFileDescriptions(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessOverallFileDescriptions(const ProcFSProcessDirectory& parent_folder)
: ProcFSProcessInformation("fds"sv, parent_folder) : ProcFSProcessInformation("fds"sv, parent_folder)
{ {
} }
@ -398,13 +398,13 @@ private:
class ProcFSProcessRoot final : public ProcFSExposedLink { class ProcFSProcessRoot final : public ProcFSExposedLink {
public: public:
static NonnullRefPtr<ProcFSProcessRoot> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessRoot> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessRoot(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessRoot(parent_folder));
} }
private: private:
explicit ProcFSProcessRoot(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessRoot(const ProcFSProcessDirectory& parent_folder)
: ProcFSExposedLink("root"sv) : ProcFSExposedLink("root"sv)
, m_parent_process_directory(parent_folder) , m_parent_process_directory(parent_folder)
{ {
@ -417,18 +417,18 @@ private:
builder.append_bytes(parent_folder->m_associated_process->root_directory_relative_to_global_root().absolute_path().to_byte_buffer()); builder.append_bytes(parent_folder->m_associated_process->root_directory_relative_to_global_root().absolute_path().to_byte_buffer());
return true; return true;
} }
WeakPtr<ProcFSProcessFolder> m_parent_process_directory; WeakPtr<ProcFSProcessDirectory> m_parent_process_directory;
}; };
class ProcFSProcessVirtualMemory final : public ProcFSProcessInformation { class ProcFSProcessVirtualMemory final : public ProcFSProcessInformation {
public: public:
static NonnullRefPtr<ProcFSProcessRoot> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessRoot> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessVirtualMemory(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessVirtualMemory(parent_folder));
} }
private: private:
explicit ProcFSProcessVirtualMemory(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessVirtualMemory(const ProcFSProcessDirectory& parent_folder)
: ProcFSProcessInformation("vm"sv, parent_folder) : ProcFSProcessInformation("vm"sv, parent_folder)
{ {
} }
@ -484,13 +484,13 @@ private:
class ProcFSProcessCurrentWorkDirectory final : public ProcFSExposedLink { class ProcFSProcessCurrentWorkDirectory final : public ProcFSExposedLink {
public: public:
static NonnullRefPtr<ProcFSProcessCurrentWorkDirectory> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessCurrentWorkDirectory> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessCurrentWorkDirectory(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessCurrentWorkDirectory(parent_folder));
} }
private: private:
explicit ProcFSProcessCurrentWorkDirectory(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessCurrentWorkDirectory(const ProcFSProcessDirectory& parent_folder)
: ProcFSExposedLink("cwd"sv) : ProcFSExposedLink("cwd"sv)
, m_parent_process_directory(parent_folder) , m_parent_process_directory(parent_folder)
{ {
@ -504,12 +504,12 @@ private:
return true; return true;
} }
WeakPtr<ProcFSProcessFolder> m_parent_process_directory; WeakPtr<ProcFSProcessDirectory> m_parent_process_directory;
}; };
class ProcFSProcessBinary final : public ProcFSExposedLink { class ProcFSProcessBinary final : public ProcFSExposedLink {
public: public:
static NonnullRefPtr<ProcFSProcessBinary> create(const ProcFSProcessFolder& parent_folder) static NonnullRefPtr<ProcFSProcessBinary> create(const ProcFSProcessDirectory& parent_folder)
{ {
return adopt_ref(*new (nothrow) ProcFSProcessBinary(parent_folder)); return adopt_ref(*new (nothrow) ProcFSProcessBinary(parent_folder));
} }
@ -525,7 +525,7 @@ public:
} }
private: private:
explicit ProcFSProcessBinary(const ProcFSProcessFolder& parent_folder) explicit ProcFSProcessBinary(const ProcFSProcessDirectory& parent_folder)
: ProcFSExposedLink("exe"sv) : ProcFSExposedLink("exe"sv)
, m_parent_process_directory(parent_folder) , m_parent_process_directory(parent_folder)
{ {
@ -542,10 +542,10 @@ private:
return true; return true;
} }
WeakPtr<ProcFSProcessFolder> m_parent_process_directory; WeakPtr<ProcFSProcessDirectory> m_parent_process_directory;
}; };
void ProcFSProcessFolder::on_attach() void ProcFSProcessDirectory::on_attach()
{ {
VERIFY(m_components.size() == 0); VERIFY(m_components.size() == 0);
m_components.append(ProcFSProcessPledge::create(*this)); m_components.append(ProcFSProcessPledge::create(*this));
@ -560,30 +560,30 @@ void ProcFSProcessFolder::on_attach()
m_components.append(ProcFSProcessStacks::create(*this)); m_components.append(ProcFSProcessStacks::create(*this));
} }
RefPtr<ProcFSExposedComponent> ProcFSProcessFolder::lookup(StringView name) RefPtr<ProcFSExposedComponent> ProcFSProcessDirectory::lookup(StringView name)
{ {
// Note: we need to allocate all sub components when doing a lookup, because // Note: we need to allocate all sub components when doing a lookup, because
// for some reason, the caller may not call ProcFSInode::attach method before calling this. // for some reason, the caller may not call ProcFSInode::attach method before calling this.
if (m_components.size() == 0) if (m_components.size() == 0)
on_attach(); on_attach();
return ProcFSExposedFolder::lookup(name); return ProcFSExposedDirectory::lookup(name);
} }
KResult ProcFSProcessFolder::refresh_data(FileDescription&) const KResult ProcFSProcessDirectory::refresh_data(FileDescription&) const
{ {
if (m_components.size() != 0) if (m_components.size() != 0)
return KSuccess; return KSuccess;
const_cast<ProcFSProcessFolder&>(*this).on_attach(); const_cast<ProcFSProcessDirectory&>(*this).on_attach();
return KSuccess; return KSuccess;
} }
NonnullRefPtr<ProcFSProcessFolder> ProcFSProcessFolder::create(const Process& process) NonnullRefPtr<ProcFSProcessDirectory> ProcFSProcessDirectory::create(const Process& process)
{ {
return adopt_ref_if_nonnull(new (nothrow) ProcFSProcessFolder(process)).release_nonnull(); return adopt_ref_if_nonnull(new (nothrow) ProcFSProcessDirectory(process)).release_nonnull();
} }
ProcFSProcessFolder::ProcFSProcessFolder(const Process& process) ProcFSProcessDirectory::ProcFSProcessDirectory(const Process& process)
: ProcFSExposedFolder(String::formatted("{:d}", process.pid().value()), ProcFSComponentsRegistrar::the().root_folder()) : ProcFSExposedDirectory(String::formatted("{:d}", process.pid().value()), ProcFSComponentsRegistrar::the().root_folder())
, m_associated_process(process) , m_associated_process(process)
{ {
} }

View file

@ -236,8 +236,8 @@ void init_stage2(void*)
USB::UHCIController::detect(); USB::UHCIController::detect();
BIOSExposedFolder::initialize(); BIOSExposedDirectory::initialize();
ACPI::ExposedFolder::initialize(); ACPI::ExposedDirectory::initialize();
VirtIO::detect(); VirtIO::detect();