diff --git a/Kernel/ACPI/Parser.cpp b/Kernel/ACPI/Parser.cpp index e989d3a654..06f3147584 100644 --- a/Kernel/ACPI/Parser.cpp +++ b/Kernel/ACPI/Parser.cpp @@ -31,7 +31,7 @@ UNMAP_AFTER_INIT NonnullRefPtr ACPISysFSComponent::create(St return adopt_ref(*new (nothrow) ACPISysFSComponent(name, paddr, table_size)); } -KResultOr ACPISysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr ACPISysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const { auto blob = try_to_generate_buffer(); if (!blob) diff --git a/Kernel/ACPI/Parser.h b/Kernel/ACPI/Parser.h index bd6d837544..3b046cee1b 100644 --- a/Kernel/ACPI/Parser.h +++ b/Kernel/ACPI/Parser.h @@ -28,7 +28,7 @@ class ACPISysFSComponent : public SysFSComponent { public: static NonnullRefPtr create(String name, PhysicalAddress, size_t table_size); - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const override; protected: OwnPtr try_to_generate_buffer() const; diff --git a/Kernel/Arch/PC/BIOS.cpp b/Kernel/Arch/PC/BIOS.cpp index 54203831e5..703437b24c 100644 --- a/Kernel/Arch/PC/BIOS.cpp +++ b/Kernel/Arch/PC/BIOS.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include #include @@ -29,7 +29,7 @@ UNMAP_AFTER_INIT BIOSSysFSComponent::BIOSSysFSComponent(String name) { } -KResultOr BIOSSysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr BIOSSysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const { auto blob = try_to_generate_buffer(); if (!blob) diff --git a/Kernel/Arch/PC/BIOS.h b/Kernel/Arch/PC/BIOS.h index 2981df91c6..5eeae707d6 100644 --- a/Kernel/Arch/PC/BIOS.h +++ b/Kernel/Arch/PC/BIOS.h @@ -60,7 +60,7 @@ Memory::MappedROM map_ebda(); class BIOSSysFSComponent : public SysFSComponent { public: - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const override; protected: virtual OwnPtr try_to_generate_buffer() const = 0; diff --git a/Kernel/Bus/PCI/SysFSPCI.cpp b/Kernel/Bus/PCI/SysFSPCI.cpp index 3a7506c5ff..56a0f6ec9b 100644 --- a/Kernel/Bus/PCI/SysFSPCI.cpp +++ b/Kernel/Bus/PCI/SysFSPCI.cpp @@ -60,7 +60,7 @@ PCIDeviceAttributeSysFSComponent::PCIDeviceAttributeSysFSComponent(String name, { } -KResultOr PCIDeviceAttributeSysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr PCIDeviceAttributeSysFSComponent::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const { auto blob = try_to_generate_buffer(); if (!blob) diff --git a/Kernel/Bus/PCI/SysFSPCI.h b/Kernel/Bus/PCI/SysFSPCI.h index c32eb094c5..e6ddd35216 100644 --- a/Kernel/Bus/PCI/SysFSPCI.h +++ b/Kernel/Bus/PCI/SysFSPCI.h @@ -37,7 +37,7 @@ class PCIDeviceAttributeSysFSComponent : public SysFSComponent { public: static NonnullRefPtr create(String name, const PCIDeviceSysFSDirectory& device, size_t offset, size_t field_bytes_width); - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const override; virtual ~PCIDeviceAttributeSysFSComponent() {}; protected: diff --git a/Kernel/Bus/USB/SysFSUSB.cpp b/Kernel/Bus/USB/SysFSUSB.cpp index bd4549e10e..3e23d7fce7 100644 --- a/Kernel/Bus/USB/SysFSUSB.cpp +++ b/Kernel/Bus/USB/SysFSUSB.cpp @@ -47,7 +47,7 @@ KResult SysFSUSBDeviceInformation::try_generate(KBufferBuilder& builder) return KSuccess; } -KResult SysFSUSBDeviceInformation::refresh_data(FileDescription& description) const +KResult SysFSUSBDeviceInformation::refresh_data(OpenFileDescription& description) const { MutexLocker lock(m_lock); auto& cached_data = description.data(); @@ -63,7 +63,7 @@ KResult SysFSUSBDeviceInformation::refresh_data(FileDescription& description) co return KSuccess; } -KResultOr SysFSUSBDeviceInformation::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const +KResultOr SysFSUSBDeviceInformation::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const { dbgln_if(PROCFS_DEBUG, "SysFSUSBDeviceInformation @ {}: read_bytes offset: {} count: {}", name(), offset, count); diff --git a/Kernel/Bus/USB/SysFSUSB.h b/Kernel/Bus/USB/SysFSUSB.h index 674c0ff0d6..69b91136fc 100644 --- a/Kernel/Bus/USB/SysFSUSB.h +++ b/Kernel/Bus/USB/SysFSUSB.h @@ -26,7 +26,7 @@ public: protected: explicit SysFSUSBDeviceInformation(USB::Device& device); - virtual KResultOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; IntrusiveListNode> m_list_node; @@ -34,7 +34,7 @@ protected: private: KResult try_generate(KBufferBuilder&); - virtual KResult refresh_data(FileDescription& description) const override; + virtual KResult refresh_data(OpenFileDescription& description) const override; mutable Mutex m_lock { "SysFSUSBDeviceInformation" }; }; diff --git a/Kernel/Bus/VirtIO/ConsolePort.cpp b/Kernel/Bus/VirtIO/ConsolePort.cpp index 853a819369..d05b5d7193 100644 --- a/Kernel/Bus/VirtIO/ConsolePort.cpp +++ b/Kernel/Bus/VirtIO/ConsolePort.cpp @@ -86,12 +86,12 @@ void ConsolePort::handle_queue_update(Badge, u16 queue_index) } } -bool ConsolePort::can_read(const FileDescription&, size_t) const +bool ConsolePort::can_read(const OpenFileDescription&, size_t) const { return m_receive_buffer->used_bytes() > 0; } -KResultOr ConsolePort::read(FileDescription& desc, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr ConsolePort::read(OpenFileDescription& desc, u64, UserOrKernelBuffer& buffer, size_t size) { if (!size) return 0; @@ -119,12 +119,12 @@ KResultOr ConsolePort::read(FileDescription& desc, u64, UserOrKernelBuff return bytes_copied; } -bool ConsolePort::can_write(const FileDescription&, size_t) const +bool ConsolePort::can_write(const OpenFileDescription&, size_t) const { return m_console.get_queue(m_transmit_queue).has_free_slots() && m_transmit_buffer->has_space(); } -KResultOr ConsolePort::write(FileDescription& desc, u64, const UserOrKernelBuffer& data, size_t size) +KResultOr ConsolePort::write(OpenFileDescription& desc, u64, const UserOrKernelBuffer& data, size_t size) { if (!size) return 0; @@ -163,7 +163,7 @@ String ConsolePort::device_name() const return String::formatted("hvc{}p{}", m_console.device_id(), m_port); } -KResultOr> ConsolePort::open(int options) +KResultOr> ConsolePort::open(int options) { if (!m_open) m_console.send_open_control_message(m_port, true); diff --git a/Kernel/Bus/VirtIO/ConsolePort.h b/Kernel/Bus/VirtIO/ConsolePort.h index ac234730cf..041a5c54a1 100644 --- a/Kernel/Bus/VirtIO/ConsolePort.h +++ b/Kernel/Bus/VirtIO/ConsolePort.h @@ -9,7 +9,7 @@ #include #include -#include +#include #include namespace Kernel::VirtIO { @@ -34,11 +34,11 @@ private: virtual StringView class_name() const override { return "VirtIOConsolePort"; } - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual KResultOr> open(int options) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual KResultOr> open(int options) override; mode_t required_mode() const override { return 0666; } diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 41e13f95a4..b0c9d121ee 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -115,13 +115,13 @@ set(KERNEL_SOURCES FileSystem/FIFO.cpp FileSystem/File.cpp FileSystem/FileBackedFileSystem.cpp - FileSystem/FileDescription.cpp FileSystem/FileSystem.cpp FileSystem/Inode.cpp FileSystem/InodeFile.cpp FileSystem/InodeWatcher.cpp FileSystem/ISO9660FileSystem.cpp FileSystem/Mount.cpp + FileSystem/OpenFileDescription.cpp FileSystem/Plan9FileSystem.cpp FileSystem/ProcFS.cpp FileSystem/SysFS.cpp @@ -420,7 +420,7 @@ if (ENABLE_KERNEL_COVERAGE_COLLECTION) ../Kernel/Devices/KCOVDevice.cpp ../Kernel/Devices/KCOVInstance.cpp ../Kernel/FileSystem/File.cpp - ../Kernel/FileSystem/FileDescription.cpp + ../Kernel/FileSystem/OpenFileDescription.cpp ../Kernel/Heap/SlabAllocator.cpp ../Kernel/init.cpp ../Kernel/SanCov.cpp diff --git a/Kernel/ConsoleDevice.cpp b/Kernel/ConsoleDevice.cpp index 9cfd55b7f8..69d1ceff84 100644 --- a/Kernel/ConsoleDevice.cpp +++ b/Kernel/ConsoleDevice.cpp @@ -41,19 +41,19 @@ UNMAP_AFTER_INIT ConsoleDevice::~ConsoleDevice() { } -bool ConsoleDevice::can_read(const Kernel::FileDescription&, size_t) const +bool ConsoleDevice::can_read(const Kernel::OpenFileDescription&, size_t) const { return false; } -Kernel::KResultOr ConsoleDevice::read(FileDescription&, u64, Kernel::UserOrKernelBuffer&, size_t) +Kernel::KResultOr ConsoleDevice::read(OpenFileDescription&, u64, Kernel::UserOrKernelBuffer&, size_t) { // FIXME: Implement reading from the console. // Maybe we could use a ring buffer for this device? return 0; } -Kernel::KResultOr ConsoleDevice::write(FileDescription&, u64, const Kernel::UserOrKernelBuffer& data, size_t size) +Kernel::KResultOr ConsoleDevice::write(OpenFileDescription&, u64, const Kernel::UserOrKernelBuffer& data, size_t size) { if (!size) return 0; diff --git a/Kernel/ConsoleDevice.h b/Kernel/ConsoleDevice.h index c64d6fb575..c27cc0d3f7 100644 --- a/Kernel/ConsoleDevice.h +++ b/Kernel/ConsoleDevice.h @@ -23,10 +23,10 @@ public: virtual ~ConsoleDevice() override; // ^CharacterDevice - virtual bool can_read(const Kernel::FileDescription&, size_t) const override; - virtual bool can_write(const Kernel::FileDescription&, size_t) const override { return true; } - virtual Kernel::KResultOr read(FileDescription&, u64, Kernel::UserOrKernelBuffer&, size_t) override; - virtual Kernel::KResultOr write(FileDescription&, u64, const Kernel::UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const Kernel::OpenFileDescription&, size_t) const override; + virtual bool can_write(const Kernel::OpenFileDescription&, size_t) const override { return true; } + virtual Kernel::KResultOr read(OpenFileDescription&, u64, Kernel::UserOrKernelBuffer&, size_t) override; + virtual Kernel::KResultOr write(OpenFileDescription&, u64, const Kernel::UserOrKernelBuffer&, size_t) override; virtual StringView class_name() const override { return "Console"; } void put_char(char); diff --git a/Kernel/Coredump.cpp b/Kernel/Coredump.cpp index 6c07d7e9ae..42313a9615 100644 --- a/Kernel/Coredump.cpp +++ b/Kernel/Coredump.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include #include @@ -34,14 +34,14 @@ KResultOr> Coredump::try_create(NonnullRefPtr p return adopt_nonnull_own_or_enomem(new (nothrow) Coredump(move(process), move(description))); } -Coredump::Coredump(NonnullRefPtr process, NonnullRefPtr description) +Coredump::Coredump(NonnullRefPtr process, NonnullRefPtr description) : m_process(move(process)) , m_description(move(description)) , m_num_program_headers(m_process->address_space().region_count() + 1) // +1 for NOTE segment { } -KResultOr> Coredump::try_create_target_file(Process const& process, StringView output_path) +KResultOr> Coredump::try_create_target_file(Process const& process, StringView output_path) { auto output_directory = KLexicalPath::dirname(output_path); auto dump_directory = TRY(VirtualFileSystem::the().open_directory(output_directory, VirtualFileSystem::the().root_custody())); diff --git a/Kernel/Coredump.h b/Kernel/Coredump.h index 11b7e65588..18076ae024 100644 --- a/Kernel/Coredump.h +++ b/Kernel/Coredump.h @@ -21,8 +21,8 @@ public: KResult write(); private: - Coredump(NonnullRefPtr, NonnullRefPtr); - static KResultOr> try_create_target_file(Process const&, StringView output_path); + Coredump(NonnullRefPtr, NonnullRefPtr); + static KResultOr> try_create_target_file(Process const&, StringView output_path); KResult write_elf_header(); KResult write_program_headers(size_t notes_size); @@ -36,7 +36,7 @@ private: KResult create_notes_metadata_data(auto&) const; NonnullRefPtr m_process; - NonnullRefPtr m_description; + NonnullRefPtr m_description; const size_t m_num_program_headers; }; diff --git a/Kernel/Devices/Device.cpp b/Kernel/Devices/Device.cpp index 4880f332f3..38da7d3790 100644 --- a/Kernel/Devices/Device.cpp +++ b/Kernel/Devices/Device.cpp @@ -55,7 +55,7 @@ String Device::absolute_path() const return String::formatted("/dev/{}", device_name()); } -String Device::absolute_path(const FileDescription&) const +String Device::absolute_path(const OpenFileDescription&) const { return absolute_path(); } diff --git a/Kernel/Devices/Device.h b/Kernel/Devices/Device.h index 0011f4636e..e39b4e80e4 100644 --- a/Kernel/Devices/Device.h +++ b/Kernel/Devices/Device.h @@ -31,7 +31,7 @@ public: unsigned major() const { return m_major; } unsigned minor() const { return m_minor; } - virtual String absolute_path(const FileDescription&) const override; + virtual String absolute_path(const OpenFileDescription&) const override; virtual String absolute_path() const; UserID uid() const { return m_uid; } diff --git a/Kernel/Devices/FullDevice.cpp b/Kernel/Devices/FullDevice.cpp index de5aa9c344..b8b0488722 100644 --- a/Kernel/Devices/FullDevice.cpp +++ b/Kernel/Devices/FullDevice.cpp @@ -25,18 +25,18 @@ UNMAP_AFTER_INIT FullDevice::~FullDevice() { } -bool FullDevice::can_read(const FileDescription&, size_t) const +bool FullDevice::can_read(const OpenFileDescription&, size_t) const { return true; } -KResultOr FullDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr FullDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { TRY(buffer.memset(0, size)); return size; } -KResultOr FullDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size) +KResultOr FullDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t size) { if (size == 0) return 0; diff --git a/Kernel/Devices/FullDevice.h b/Kernel/Devices/FullDevice.h index 06b5fdc58c..10bde83ac2 100644 --- a/Kernel/Devices/FullDevice.h +++ b/Kernel/Devices/FullDevice.h @@ -24,10 +24,10 @@ private: FullDevice(); // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } virtual StringView class_name() const override { return "FullDevice"; } }; diff --git a/Kernel/Devices/HID/KeyboardDevice.cpp b/Kernel/Devices/HID/KeyboardDevice.cpp index b7b374cc3c..68a5efedc2 100644 --- a/Kernel/Devices/HID/KeyboardDevice.cpp +++ b/Kernel/Devices/HID/KeyboardDevice.cpp @@ -273,12 +273,12 @@ UNMAP_AFTER_INIT KeyboardDevice::~KeyboardDevice() { } -bool KeyboardDevice::can_read(const FileDescription&, size_t) const +bool KeyboardDevice::can_read(const OpenFileDescription&, size_t) const { return !m_queue.is_empty(); } -KResultOr KeyboardDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr KeyboardDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { size_t nread = 0; SpinlockLocker lock(m_queue_lock); @@ -306,12 +306,12 @@ KResultOr KeyboardDevice::read(FileDescription&, u64, UserOrKernelBuffer return nread; } -KResultOr KeyboardDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) +KResultOr KeyboardDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) { return 0; } -KResult KeyboardDevice::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult KeyboardDevice::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { switch (request) { case KEYBOARD_IOCTL_GET_NUM_LOCK: { diff --git a/Kernel/Devices/HID/KeyboardDevice.h b/Kernel/Devices/HID/KeyboardDevice.h index cbb705b605..6065474523 100644 --- a/Kernel/Devices/HID/KeyboardDevice.h +++ b/Kernel/Devices/HID/KeyboardDevice.h @@ -25,10 +25,10 @@ public: virtual ~KeyboardDevice() override; // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } // ^HIDDevice virtual Type instrument_type() const override { return Type::Keyboard; } @@ -37,7 +37,7 @@ public: virtual mode_t required_mode() const override { return 0440; } // ^File - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; virtual String device_name() const override { return String::formatted("keyboard{}", minor()); } diff --git a/Kernel/Devices/HID/MouseDevice.cpp b/Kernel/Devices/HID/MouseDevice.cpp index 6ad5658900..a3c263d570 100644 --- a/Kernel/Devices/HID/MouseDevice.cpp +++ b/Kernel/Devices/HID/MouseDevice.cpp @@ -18,13 +18,13 @@ MouseDevice::~MouseDevice() { } -bool MouseDevice::can_read(const FileDescription&, size_t) const +bool MouseDevice::can_read(const OpenFileDescription&, size_t) const { SpinlockLocker lock(m_queue_lock); return !m_queue.is_empty(); } -KResultOr MouseDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr MouseDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { VERIFY(size > 0); size_t nread = 0; @@ -48,7 +48,7 @@ KResultOr MouseDevice::read(FileDescription&, u64, UserOrKernelBuffer& b return nread; } -KResultOr MouseDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) +KResultOr MouseDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) { return 0; } diff --git a/Kernel/Devices/HID/MouseDevice.h b/Kernel/Devices/HID/MouseDevice.h index ad1c94cbe6..73105f9e89 100644 --- a/Kernel/Devices/HID/MouseDevice.h +++ b/Kernel/Devices/HID/MouseDevice.h @@ -23,10 +23,10 @@ public: virtual ~MouseDevice() override; // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } // ^HIDDevice virtual Type instrument_type() const override { return Type::Mouse; } diff --git a/Kernel/Devices/KCOVDevice.cpp b/Kernel/Devices/KCOVDevice.cpp index 82d433bda2..3dbf1fcf71 100644 --- a/Kernel/Devices/KCOVDevice.cpp +++ b/Kernel/Devices/KCOVDevice.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include @@ -61,7 +61,7 @@ void KCOVDevice::free_process() delete kcov_instance; } -KResultOr> KCOVDevice::open(int options) +KResultOr> KCOVDevice::open(int options) { auto pid = Process::current().pid(); if (proc_instance->get(pid).has_value()) @@ -73,7 +73,7 @@ KResultOr> KCOVDevice::open(int options) return File::open(options); } -KResult KCOVDevice::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult KCOVDevice::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { KResult return_value = KSuccess; auto thread = Thread::current(); @@ -127,7 +127,7 @@ KResult KCOVDevice::ioctl(FileDescription&, unsigned request, Userspace a return return_value; } -KResultOr KCOVDevice::mmap(Process& process, FileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr KCOVDevice::mmap(Process& process, OpenFileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { auto pid = process.pid(); auto maybe_kcov_instance = proc_instance->get(pid); diff --git a/Kernel/Devices/KCOVDevice.h b/Kernel/Devices/KCOVDevice.h index f2492797c7..bde9f3ce24 100644 --- a/Kernel/Devices/KCOVDevice.h +++ b/Kernel/Devices/KCOVDevice.h @@ -22,8 +22,8 @@ public: static void free_process(); // ^File - KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; - KResultOr> open(int options) override; + KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; + KResultOr> open(int options) override; // ^Device virtual mode_t required_mode() const override { return 0660; } @@ -32,12 +32,12 @@ public: protected: virtual StringView class_name() const override { return "KCOVDevice"; } - virtual bool can_read(const FileDescription&, size_t) const override final { return true; } - virtual bool can_write(const FileDescription&, size_t) const override final { return true; } + virtual bool can_read(const OpenFileDescription&, size_t) const override final { return true; } + virtual bool can_write(const OpenFileDescription&, size_t) const override final { return true; } virtual void start_request(AsyncBlockDeviceRequest& request) override final { request.complete(AsyncDeviceRequest::Failure); } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override { return EINVAL; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; } - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return EINVAL; } + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; } + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; private: KCOVDevice(); diff --git a/Kernel/Devices/MemoryDevice.cpp b/Kernel/Devices/MemoryDevice.cpp index d62b10a3ae..eb5df7ea02 100644 --- a/Kernel/Devices/MemoryDevice.cpp +++ b/Kernel/Devices/MemoryDevice.cpp @@ -27,17 +27,17 @@ UNMAP_AFTER_INIT MemoryDevice::~MemoryDevice() { } -KResultOr MemoryDevice::read(FileDescription&, u64, UserOrKernelBuffer&, size_t) +KResultOr MemoryDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) { TODO(); } -void MemoryDevice::did_seek(FileDescription&, off_t) +void MemoryDevice::did_seek(OpenFileDescription&, off_t) { TODO(); } -KResultOr MemoryDevice::mmap(Process& process, FileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr MemoryDevice::mmap(Process& process, OpenFileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { auto viewed_address = PhysicalAddress(offset); diff --git a/Kernel/Devices/MemoryDevice.h b/Kernel/Devices/MemoryDevice.h index e688390600..4c4b14acab 100644 --- a/Kernel/Devices/MemoryDevice.h +++ b/Kernel/Devices/MemoryDevice.h @@ -19,7 +19,7 @@ public: static NonnullRefPtr must_create(); ~MemoryDevice(); - virtual KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; + virtual KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; // ^Device virtual mode_t required_mode() const override { return 0660; } @@ -28,13 +28,13 @@ public: private: MemoryDevice(); virtual StringView class_name() const override { return "MemoryDevice"; } - virtual bool can_read(const FileDescription&, size_t) const override { return true; } - virtual bool can_write(const FileDescription&, size_t) const override { return false; } + virtual bool can_read(const OpenFileDescription&, size_t) const override { return true; } + virtual bool can_write(const OpenFileDescription&, size_t) const override { return false; } virtual bool is_seekable() const override { return true; } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; } - virtual void did_seek(FileDescription&, off_t) override; + virtual void did_seek(OpenFileDescription&, off_t) override; bool is_allowed_range(PhysicalAddress, Memory::VirtualRange const&) const; }; diff --git a/Kernel/Devices/NullDevice.cpp b/Kernel/Devices/NullDevice.cpp index f7093c4bb8..240f90d3f0 100644 --- a/Kernel/Devices/NullDevice.cpp +++ b/Kernel/Devices/NullDevice.cpp @@ -31,17 +31,17 @@ UNMAP_AFTER_INIT NullDevice::~NullDevice() { } -bool NullDevice::can_read(const FileDescription&, size_t) const +bool NullDevice::can_read(const OpenFileDescription&, size_t) const { return true; } -KResultOr NullDevice::read(FileDescription&, u64, UserOrKernelBuffer&, size_t) +KResultOr NullDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) { return 0; } -KResultOr NullDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t buffer_size) +KResultOr NullDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t buffer_size) { return buffer_size; } diff --git a/Kernel/Devices/NullDevice.h b/Kernel/Devices/NullDevice.h index dc4b8df1d4..143e31b4f2 100644 --- a/Kernel/Devices/NullDevice.h +++ b/Kernel/Devices/NullDevice.h @@ -25,10 +25,10 @@ public: private: // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } - virtual bool can_read(const FileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } + virtual bool can_read(const OpenFileDescription&, size_t) const override; virtual StringView class_name() const override { return "NullDevice"; } virtual bool is_seekable() const override { return true; } }; diff --git a/Kernel/Devices/RandomDevice.cpp b/Kernel/Devices/RandomDevice.cpp index 9c4503d7bc..d8116ca0dc 100644 --- a/Kernel/Devices/RandomDevice.cpp +++ b/Kernel/Devices/RandomDevice.cpp @@ -24,12 +24,12 @@ UNMAP_AFTER_INIT RandomDevice::~RandomDevice() { } -bool RandomDevice::can_read(const FileDescription&, size_t) const +bool RandomDevice::can_read(const OpenFileDescription&, size_t) const { return true; } -KResultOr RandomDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr RandomDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { return buffer.write_buffered<256>(size, [&](Bytes bytes) { get_good_random_bytes(bytes); @@ -37,7 +37,7 @@ KResultOr RandomDevice::read(FileDescription&, u64, UserOrKernelBuffer& }); } -KResultOr RandomDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size) +KResultOr RandomDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t size) { // FIXME: Use input for entropy? I guess that could be a neat feature? return size; diff --git a/Kernel/Devices/RandomDevice.h b/Kernel/Devices/RandomDevice.h index f7c66b36cb..29986d30ba 100644 --- a/Kernel/Devices/RandomDevice.h +++ b/Kernel/Devices/RandomDevice.h @@ -24,10 +24,10 @@ private: RandomDevice(); // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } virtual StringView class_name() const override { return "RandomDevice"; } }; diff --git a/Kernel/Devices/SB16.cpp b/Kernel/Devices/SB16.cpp index a22571f1a8..b0ef199a13 100644 --- a/Kernel/Devices/SB16.cpp +++ b/Kernel/Devices/SB16.cpp @@ -122,7 +122,7 @@ UNMAP_AFTER_INIT void SB16::initialize() set_sample_rate(m_sample_rate); } -KResult SB16::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult SB16::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { switch (request) { case SOUNDCARD_IOCTL_GET_SAMPLE_RATE: { @@ -190,12 +190,12 @@ void SB16::set_irq_line(u8 irq_number) change_irq_number(irq_number); } -bool SB16::can_read(FileDescription const&, size_t) const +bool SB16::can_read(OpenFileDescription const&, size_t) const { return false; } -KResultOr SB16::read(FileDescription&, u64, UserOrKernelBuffer&, size_t) +KResultOr SB16::read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) { return 0; } @@ -255,7 +255,7 @@ void SB16::wait_for_irq() disable_irq(); } -KResultOr SB16::write(FileDescription&, u64, UserOrKernelBuffer const& data, size_t length) +KResultOr SB16::write(OpenFileDescription&, u64, UserOrKernelBuffer const& data, size_t length) { if (!m_dma_region) { auto page = MM.allocate_supervisor_physical_page(); diff --git a/Kernel/Devices/SB16.h b/Kernel/Devices/SB16.h index 0d8597eb72..c886c0ef16 100644 --- a/Kernel/Devices/SB16.h +++ b/Kernel/Devices/SB16.h @@ -27,10 +27,10 @@ public: static SB16& the(); // ^CharacterDevice - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } virtual StringView purpose() const override { return class_name(); } @@ -38,7 +38,7 @@ public: virtual mode_t required_mode() const override { return 0220; } virtual String device_name() const override { return "audio"; } - virtual KResult ioctl(FileDescription&, unsigned, Userspace) override; + virtual KResult ioctl(OpenFileDescription&, unsigned, Userspace) override; private: // ^IRQHandler diff --git a/Kernel/Devices/SerialDevice.cpp b/Kernel/Devices/SerialDevice.cpp index a84491f538..1fb506d8b7 100644 --- a/Kernel/Devices/SerialDevice.cpp +++ b/Kernel/Devices/SerialDevice.cpp @@ -49,12 +49,12 @@ UNMAP_AFTER_INIT SerialDevice::~SerialDevice() { } -bool SerialDevice::can_read(const FileDescription&, size_t) const +bool SerialDevice::can_read(const OpenFileDescription&, size_t) const { return (get_line_status() & DataReady) != 0; } -KResultOr SerialDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr SerialDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { if (!size) return 0; @@ -70,12 +70,12 @@ KResultOr SerialDevice::read(FileDescription&, u64, UserOrKernelBuffer& }); } -bool SerialDevice::can_write(const FileDescription&, size_t) const +bool SerialDevice::can_write(const OpenFileDescription&, size_t) const { return (get_line_status() & EmptyTransmitterHoldingRegister) != 0; } -KResultOr SerialDevice::write(FileDescription& description, u64, const UserOrKernelBuffer& buffer, size_t size) +KResultOr SerialDevice::write(OpenFileDescription& description, u64, const UserOrKernelBuffer& buffer, size_t size) { if (!size) return 0; diff --git a/Kernel/Devices/SerialDevice.h b/Kernel/Devices/SerialDevice.h index 81aedfd8ce..48c1091a95 100644 --- a/Kernel/Devices/SerialDevice.h +++ b/Kernel/Devices/SerialDevice.h @@ -19,10 +19,10 @@ public: virtual ~SerialDevice() override; // ^CharacterDevice - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; void put_char(char); diff --git a/Kernel/Devices/ZeroDevice.cpp b/Kernel/Devices/ZeroDevice.cpp index 2e2d7af96f..880db84502 100644 --- a/Kernel/Devices/ZeroDevice.cpp +++ b/Kernel/Devices/ZeroDevice.cpp @@ -24,18 +24,18 @@ UNMAP_AFTER_INIT ZeroDevice::~ZeroDevice() { } -bool ZeroDevice::can_read(const FileDescription&, size_t) const +bool ZeroDevice::can_read(const OpenFileDescription&, size_t) const { return true; } -KResultOr ZeroDevice::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr ZeroDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { TRY(buffer.memset(0, size)); return size; } -KResultOr ZeroDevice::write(FileDescription&, u64, const UserOrKernelBuffer&, size_t size) +KResultOr ZeroDevice::write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t size) { return size; } diff --git a/Kernel/Devices/ZeroDevice.h b/Kernel/Devices/ZeroDevice.h index 69b2d377cc..46cdbd04d0 100644 --- a/Kernel/Devices/ZeroDevice.h +++ b/Kernel/Devices/ZeroDevice.h @@ -23,10 +23,10 @@ public: private: ZeroDevice(); // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } virtual StringView class_name() const override { return "ZeroDevice"; } }; diff --git a/Kernel/FileSystem/AnonymousFile.cpp b/Kernel/FileSystem/AnonymousFile.cpp index b56cd2966b..0c6ba54945 100644 --- a/Kernel/FileSystem/AnonymousFile.cpp +++ b/Kernel/FileSystem/AnonymousFile.cpp @@ -19,7 +19,7 @@ AnonymousFile::~AnonymousFile() { } -KResultOr AnonymousFile::mmap(Process& process, FileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr AnonymousFile::mmap(Process& process, OpenFileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { if (offset != 0) return EINVAL; diff --git a/Kernel/FileSystem/AnonymousFile.h b/Kernel/FileSystem/AnonymousFile.h index bbca01859d..5909763339 100644 --- a/Kernel/FileSystem/AnonymousFile.h +++ b/Kernel/FileSystem/AnonymousFile.h @@ -20,15 +20,15 @@ public: virtual ~AnonymousFile() override; - virtual KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; + virtual KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; private: virtual StringView class_name() const override { return "AnonymousFile"; } - virtual String absolute_path(const FileDescription&) const override { return ":anonymous-file:"; } - virtual bool can_read(const FileDescription&, size_t) const override { return false; } - virtual bool can_write(const FileDescription&, size_t) const override { return false; } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override { return ENOTSUP; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return ENOTSUP; } + virtual String absolute_path(const OpenFileDescription&) const override { return ":anonymous-file:"; } + virtual bool can_read(const OpenFileDescription&, size_t) const override { return false; } + virtual bool can_write(const OpenFileDescription&, size_t) const override { return false; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return ENOTSUP; } + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return ENOTSUP; } explicit AnonymousFile(NonnullRefPtr); diff --git a/Kernel/FileSystem/BlockBasedFileSystem.cpp b/Kernel/FileSystem/BlockBasedFileSystem.cpp index cfc02a650b..34bf759db6 100644 --- a/Kernel/FileSystem/BlockBasedFileSystem.cpp +++ b/Kernel/FileSystem/BlockBasedFileSystem.cpp @@ -104,7 +104,7 @@ private: bool m_dirty { false }; }; -BlockBasedFileSystem::BlockBasedFileSystem(FileDescription& file_description) +BlockBasedFileSystem::BlockBasedFileSystem(OpenFileDescription& file_description) : FileBackedFileSystem(file_description) { VERIFY(file_description.file().is_seekable()); diff --git a/Kernel/FileSystem/BlockBasedFileSystem.h b/Kernel/FileSystem/BlockBasedFileSystem.h index f9856b6c52..12f8d4ee9d 100644 --- a/Kernel/FileSystem/BlockBasedFileSystem.h +++ b/Kernel/FileSystem/BlockBasedFileSystem.h @@ -24,7 +24,7 @@ public: void flush_writes_impl(); protected: - explicit BlockBasedFileSystem(FileDescription&); + explicit BlockBasedFileSystem(OpenFileDescription&); KResult read_block(BlockIndex, UserOrKernelBuffer*, size_t count, size_t offset = 0, bool allow_cache = true) const; KResult read_blocks(BlockIndex, unsigned count, UserOrKernelBuffer&, bool allow_cache = true) const; diff --git a/Kernel/FileSystem/DevFS.cpp b/Kernel/FileSystem/DevFS.cpp index 3b2f5a12d6..b1d2a93b15 100644 --- a/Kernel/FileSystem/DevFS.cpp +++ b/Kernel/FileSystem/DevFS.cpp @@ -80,7 +80,7 @@ DevFSInode::DevFSInode(DevFS& fs) { } -KResultOr DevFSInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const +KResultOr DevFSInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } @@ -99,7 +99,7 @@ void DevFSInode::flush_metadata() { } -KResultOr DevFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*) +KResultOr DevFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*) { VERIFY_NOT_REACHED(); } @@ -149,7 +149,7 @@ DevFSLinkInode::DevFSLinkInode(DevFS& fs, NonnullOwnPtr name) { } -KResultOr DevFSLinkInode::read_bytes(off_t offset, size_t, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr DevFSLinkInode::read_bytes(off_t offset, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const { MutexLocker locker(m_inode_lock); VERIFY(offset == 0); @@ -170,7 +170,7 @@ InodeMetadata DevFSLinkInode::metadata() const return metadata; } -KResultOr DevFSLinkInode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& buffer, FileDescription*) +KResultOr DevFSLinkInode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& buffer, OpenFileDescription*) { auto new_string = TRY(buffer.try_copy_into_kstring(count)); @@ -326,7 +326,7 @@ StringView DevFSDeviceInode::name() const return m_name->view(); } -KResultOr DevFSDeviceInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const +KResultOr DevFSDeviceInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const { MutexLocker locker(m_inode_lock); VERIFY(!!description); @@ -352,7 +352,7 @@ InodeMetadata DevFSDeviceInode::metadata() const metadata.minor_device = m_attached_device->minor(); return metadata; } -KResultOr DevFSDeviceInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, FileDescription* description) +KResultOr DevFSDeviceInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, OpenFileDescription* description) { MutexLocker locker(m_inode_lock); VERIFY(!!description); diff --git a/Kernel/FileSystem/DevFS.h b/Kernel/FileSystem/DevFS.h index ddf64c4f64..9c76ba3427 100644 --- a/Kernel/FileSystem/DevFS.h +++ b/Kernel/FileSystem/DevFS.h @@ -53,11 +53,11 @@ public: protected: DevFSInode(DevFS&); - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual void flush_metadata() override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; virtual KResult add_child(Inode&, const StringView& name, mode_t) override; virtual KResult remove_child(const StringView& name) override; @@ -77,9 +77,9 @@ public: private: DevFSDeviceInode(DevFS&, Device const&, NonnullOwnPtr name); // ^Inode - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual InodeMetadata metadata() const override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override; virtual KResult chown(UserID, GroupID) override; NonnullRefPtr m_attached_device; @@ -100,9 +100,9 @@ public: protected: DevFSLinkInode(DevFS&, NonnullOwnPtr); // ^Inode - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual InodeMetadata metadata() const override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override; NonnullOwnPtr m_name; OwnPtr m_link; diff --git a/Kernel/FileSystem/DevPtsFS.cpp b/Kernel/FileSystem/DevPtsFS.cpp index fd960674ba..9543c26ff2 100644 --- a/Kernel/FileSystem/DevPtsFS.cpp +++ b/Kernel/FileSystem/DevPtsFS.cpp @@ -84,12 +84,12 @@ DevPtsFSInode::~DevPtsFSInode() { } -KResultOr DevPtsFSInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const +KResultOr DevPtsFSInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } -KResultOr DevPtsFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*) +KResultOr DevPtsFSInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*) { VERIFY_NOT_REACHED(); } diff --git a/Kernel/FileSystem/DevPtsFS.h b/Kernel/FileSystem/DevPtsFS.h index af2549a222..11a336039b 100644 --- a/Kernel/FileSystem/DevPtsFS.h +++ b/Kernel/FileSystem/DevPtsFS.h @@ -47,12 +47,12 @@ private: DevPtsFSInode(DevPtsFS&, InodeIndex, SlavePTY*); // ^Inode - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual void flush_metadata() override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; virtual KResult add_child(Inode&, const StringView& name, mode_t) override; virtual KResult remove_child(const StringView& name) override; diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index cc023aabc2..567412d45c 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include @@ -54,12 +54,12 @@ static unsigned divide_rounded_up(unsigned a, unsigned b) return (a / b) + (a % b != 0); } -KResultOr> Ext2FS::try_create(FileDescription& file_description) +KResultOr> Ext2FS::try_create(OpenFileDescription& file_description) { return adopt_nonnull_ref_or_enomem(new (nothrow) Ext2FS(file_description)); } -Ext2FS::Ext2FS(FileDescription& file_description) +Ext2FS::Ext2FS(OpenFileDescription& file_description) : BlockBasedFileSystem(file_description) { } @@ -827,7 +827,7 @@ KResultOr> Ext2FS::get_inode(InodeIdentifier inode) const return new_inode; } -KResultOr Ext2FSInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const +KResultOr Ext2FSInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const { MutexLocker inode_locker(m_inode_lock); VERIFY(offset >= 0); @@ -965,7 +965,7 @@ KResult Ext2FSInode::resize(u64 new_size) return KSuccess; } -KResultOr Ext2FSInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& data, FileDescription* description) +KResultOr Ext2FSInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& data, OpenFileDescription* description) { VERIFY(offset >= 0); diff --git a/Kernel/FileSystem/Ext2FileSystem.h b/Kernel/FileSystem/Ext2FileSystem.h index 1ed08416c0..1da3ccf9aa 100644 --- a/Kernel/FileSystem/Ext2FileSystem.h +++ b/Kernel/FileSystem/Ext2FileSystem.h @@ -38,12 +38,12 @@ public: private: // ^Inode - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual void flush_metadata() override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& data, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& data, OpenFileDescription*) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; virtual KResult add_child(Inode& child, const StringView& name, mode_t) override; virtual KResult remove_child(const StringView& name) override; @@ -89,7 +89,7 @@ public: FileSize64bits = 1 << 1, }; - static KResultOr> try_create(FileDescription&); + static KResultOr> try_create(OpenFileDescription&); virtual ~Ext2FS() override; virtual KResult initialize() override; @@ -110,7 +110,7 @@ public: private: TYPEDEF_DISTINCT_ORDERED_ID(unsigned, GroupIndex); - explicit Ext2FS(FileDescription&); + explicit Ext2FS(OpenFileDescription&); const ext2_super_block& super_block() const { return m_super_block; } const ext2_group_desc& group_descriptor(GroupIndex) const; diff --git a/Kernel/FileSystem/FIFO.cpp b/Kernel/FileSystem/FIFO.cpp index c728748326..a9cfd1e7fa 100644 --- a/Kernel/FileSystem/FIFO.cpp +++ b/Kernel/FileSystem/FIFO.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include @@ -24,15 +24,15 @@ RefPtr FIFO::try_create(UserID uid) return {}; } -KResultOr> FIFO::open_direction(FIFO::Direction direction) +KResultOr> FIFO::open_direction(FIFO::Direction direction) { - auto description = TRY(FileDescription::try_create(*this)); + auto description = TRY(OpenFileDescription::try_create(*this)); attach(direction); description->set_fifo_direction({}, direction); return description; } -KResultOr> FIFO::open_direction_blocking(FIFO::Direction direction) +KResultOr> FIFO::open_direction_blocking(FIFO::Direction direction) { MutexLocker locker(m_open_lock); @@ -101,17 +101,17 @@ void FIFO::detach(Direction direction) evaluate_block_conditions(); } -bool FIFO::can_read(const FileDescription&, size_t) const +bool FIFO::can_read(const OpenFileDescription&, size_t) const { return !m_buffer->is_empty() || !m_writers; } -bool FIFO::can_write(const FileDescription&, size_t) const +bool FIFO::can_write(const OpenFileDescription&, size_t) const { return m_buffer->space_for_writing() || !m_readers; } -KResultOr FIFO::read(FileDescription& fd, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr FIFO::read(OpenFileDescription& fd, u64, UserOrKernelBuffer& buffer, size_t size) { if (m_buffer->is_empty()) { if (!m_writers) @@ -122,7 +122,7 @@ KResultOr FIFO::read(FileDescription& fd, u64, UserOrKernelBuffer& buffe return m_buffer->read(buffer, size); } -KResultOr FIFO::write(FileDescription& fd, u64, const UserOrKernelBuffer& buffer, size_t size) +KResultOr FIFO::write(OpenFileDescription& fd, u64, const UserOrKernelBuffer& buffer, size_t size) { if (!m_readers) { Thread::current()->send_signal(SIGPIPE, &Process::current()); @@ -134,7 +134,7 @@ KResultOr FIFO::write(FileDescription& fd, u64, const UserOrKernelBuffer return m_buffer->write(buffer, size); } -String FIFO::absolute_path(const FileDescription&) const +String FIFO::absolute_path(const OpenFileDescription&) const { return String::formatted("fifo:{}", m_fifo_id); } diff --git a/Kernel/FileSystem/FIFO.h b/Kernel/FileSystem/FIFO.h index 84c35b7d44..55d2649a03 100644 --- a/Kernel/FileSystem/FIFO.h +++ b/Kernel/FileSystem/FIFO.h @@ -14,7 +14,7 @@ namespace Kernel { -class FileDescription; +class OpenFileDescription; class FIFO final : public File { public: @@ -29,8 +29,8 @@ public: UserID uid() const { return m_uid; } - KResultOr> open_direction(Direction); - KResultOr> open_direction_blocking(Direction); + KResultOr> open_direction(Direction); + KResultOr> open_direction_blocking(Direction); #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Woverloaded-virtual" @@ -40,12 +40,12 @@ public: private: // ^File - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; virtual KResult stat(::stat&) const override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override; - virtual String absolute_path(const FileDescription&) const override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; + virtual String absolute_path(const OpenFileDescription&) const override; virtual StringView class_name() const override { return "FIFO"; } virtual bool is_fifo() const override { return true; } diff --git a/Kernel/FileSystem/File.cpp b/Kernel/FileSystem/File.cpp index e9f44cefd2..ac03665b9c 100644 --- a/Kernel/FileSystem/File.cpp +++ b/Kernel/FileSystem/File.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include namespace Kernel { @@ -28,9 +28,9 @@ bool File::unref() const return true; } -KResultOr> File::open(int options) +KResultOr> File::open(int options) { - auto description = FileDescription::try_create(*this); + auto description = OpenFileDescription::try_create(*this); if (!description.is_error()) { description.value()->set_rw_mode(options); description.value()->set_file_flags(options); @@ -43,23 +43,23 @@ KResult File::close() return KSuccess; } -KResult File::ioctl(FileDescription&, unsigned, Userspace) +KResult File::ioctl(OpenFileDescription&, unsigned, Userspace) { return ENOTTY; } -KResultOr File::mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64, int, bool) +KResultOr File::mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64, int, bool) { return ENODEV; } -KResult File::attach(FileDescription&) +KResult File::attach(OpenFileDescription&) { m_attach_count++; return KSuccess; } -void File::detach(FileDescription&) +void File::detach(OpenFileDescription&) { m_attach_count--; } diff --git a/Kernel/FileSystem/File.h b/Kernel/FileSystem/File.h index 10879d0590..52e495411d 100644 --- a/Kernel/FileSystem/File.h +++ b/Kernel/FileSystem/File.h @@ -43,7 +43,7 @@ public: } }; -// File is the base class for anything that can be referenced by a FileDescription. +// File is the base class for anything that can be referenced by a OpenFileDescription. // // The most important functions in File are: // @@ -77,26 +77,26 @@ public: virtual bool unref() const; virtual ~File(); - virtual KResultOr> open(int options); + virtual KResultOr> open(int options); virtual KResult close(); - virtual bool can_read(const FileDescription&, size_t) const = 0; - virtual bool can_write(const FileDescription&, size_t) const = 0; + virtual bool can_read(const OpenFileDescription&, size_t) const = 0; + virtual bool can_write(const OpenFileDescription&, size_t) const = 0; - virtual KResult attach(FileDescription&); - virtual void detach(FileDescription&); - virtual void did_seek(FileDescription&, off_t) { } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) = 0; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) = 0; - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg); - virtual KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared); + virtual KResult attach(OpenFileDescription&); + virtual void detach(OpenFileDescription&); + virtual void did_seek(OpenFileDescription&, off_t) { } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) = 0; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) = 0; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg); + virtual KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared); virtual KResult stat(::stat&) const { return EBADF; } - virtual String absolute_path(const FileDescription&) const = 0; + virtual String absolute_path(const OpenFileDescription&) const = 0; virtual KResult truncate(u64) { return EINVAL; } - virtual KResult chown(FileDescription&, UserID, GroupID) { return EBADF; } - virtual KResult chmod(FileDescription&, mode_t) { return EBADF; } + virtual KResult chown(OpenFileDescription&, UserID, GroupID) { return EBADF; } + virtual KResult chmod(OpenFileDescription&, mode_t) { return EBADF; } virtual StringView class_name() const = 0; diff --git a/Kernel/FileSystem/FileBackedFileSystem.cpp b/Kernel/FileSystem/FileBackedFileSystem.cpp index 97f08716b4..44ee0a70ff 100644 --- a/Kernel/FileSystem/FileBackedFileSystem.cpp +++ b/Kernel/FileSystem/FileBackedFileSystem.cpp @@ -8,7 +8,7 @@ namespace Kernel { -FileBackedFileSystem::FileBackedFileSystem(FileDescription& file_description) +FileBackedFileSystem::FileBackedFileSystem(OpenFileDescription& file_description) : m_file_description(file_description) { } diff --git a/Kernel/FileSystem/FileBackedFileSystem.h b/Kernel/FileSystem/FileBackedFileSystem.h index 623c545485..95cfc42337 100644 --- a/Kernel/FileSystem/FileBackedFileSystem.h +++ b/Kernel/FileSystem/FileBackedFileSystem.h @@ -6,8 +6,8 @@ #pragma once -#include #include +#include namespace Kernel { @@ -16,17 +16,17 @@ public: virtual ~FileBackedFileSystem() override; File& file() { return m_file_description->file(); } - FileDescription& file_description() { return *m_file_description; } + OpenFileDescription& file_description() { return *m_file_description; } const File& file() const { return m_file_description->file(); } - FileDescription& file_description() const { return *m_file_description; } + OpenFileDescription& file_description() const { return *m_file_description; } protected: - explicit FileBackedFileSystem(FileDescription&); + explicit FileBackedFileSystem(OpenFileDescription&); private: virtual bool is_file_backed() const override { return true; } - mutable NonnullRefPtr m_file_description; + mutable NonnullRefPtr m_file_description; }; } diff --git a/Kernel/FileSystem/ISO9660FileSystem.cpp b/Kernel/FileSystem/ISO9660FileSystem.cpp index ed72007252..cb5dd95068 100644 --- a/Kernel/FileSystem/ISO9660FileSystem.cpp +++ b/Kernel/FileSystem/ISO9660FileSystem.cpp @@ -171,12 +171,12 @@ private: Vector m_directory_stack; }; -KResultOr> ISO9660FS::try_create(FileDescription& description) +KResultOr> ISO9660FS::try_create(OpenFileDescription& description) { return adopt_nonnull_ref_or_enomem(new (nothrow) ISO9660FS(description)); } -ISO9660FS::ISO9660FS(FileDescription& description) +ISO9660FS::ISO9660FS(OpenFileDescription& description) : BlockBasedFileSystem(description) { set_block_size(logical_sector_size); @@ -415,7 +415,7 @@ u32 ISO9660FS::calculate_directory_entry_cache_key(ISO::DirectoryRecordHeader co return LittleEndian { record.extent_location.little }; } -KResultOr ISO9660Inode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr ISO9660Inode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, OpenFileDescription*) const { MutexLocker inode_locker(m_inode_lock); @@ -514,7 +514,7 @@ void ISO9660Inode::flush_metadata() { } -KResultOr ISO9660Inode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*) +KResultOr ISO9660Inode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*) { return EROFS; } diff --git a/Kernel/FileSystem/ISO9660FileSystem.h b/Kernel/FileSystem/ISO9660FileSystem.h index fb245aa415..f3d84573b0 100644 --- a/Kernel/FileSystem/ISO9660FileSystem.h +++ b/Kernel/FileSystem/ISO9660FileSystem.h @@ -305,7 +305,7 @@ public: } }; - static KResultOr> try_create(FileDescription&); + static KResultOr> try_create(OpenFileDescription&); virtual ~ISO9660FS() override; virtual KResult initialize() override; @@ -320,7 +320,7 @@ public: KResultOr> directory_entry_for_record(Badge, ISO::DirectoryRecordHeader const* record); private: - ISO9660FS(FileDescription&); + ISO9660FS(OpenFileDescription&); KResult parse_volume_set(); KResult create_root_inode(); @@ -347,12 +347,12 @@ public: ISO9660FS const& fs() const { return static_cast(Inode::fs()); } // ^Inode - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual void flush_metadata() override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; virtual KResult add_child(Inode&, const StringView& name, mode_t) override; virtual KResult remove_child(const StringView& name) override; diff --git a/Kernel/FileSystem/Inode.cpp b/Kernel/FileSystem/Inode.cpp index 5d5b558a27..bfb7186e29 100644 --- a/Kernel/FileSystem/Inode.cpp +++ b/Kernel/FileSystem/Inode.cpp @@ -11,9 +11,9 @@ #include #include #include -#include #include #include +#include #include #include #include @@ -45,7 +45,7 @@ void Inode::sync() } } -KResultOr> Inode::read_entire(FileDescription* description) const +KResultOr> Inode::read_entire(OpenFileDescription* description) const { KBufferBuilder builder; @@ -267,7 +267,7 @@ static inline bool range_overlap(T start1, T len1, T start2, T len2) return ((start1 < start2 + len2) || len2 == 0) && ((start2 < start1 + len1) || len1 == 0); } -static inline KResult normalize_flock(FileDescription const& description, flock& lock) +static inline KResult normalize_flock(OpenFileDescription const& description, flock& lock) { off_t start; switch (lock.l_whence) { @@ -287,7 +287,7 @@ static inline KResult normalize_flock(FileDescription const& description, flock& return KSuccess; } -KResult Inode::can_apply_flock(FileDescription const& description, flock const& new_lock) const +KResult Inode::can_apply_flock(OpenFileDescription const& description, flock const& new_lock) const { VERIFY(new_lock.l_whence == SEEK_SET); @@ -314,7 +314,7 @@ KResult Inode::can_apply_flock(FileDescription const& description, flock const& return KSuccess; } -KResult Inode::apply_flock(Process const& process, FileDescription const& description, Userspace input_lock) +KResult Inode::apply_flock(Process const& process, OpenFileDescription const& description, Userspace input_lock) { flock new_lock = {}; TRY(copy_from_user(&new_lock, input_lock)); @@ -338,7 +338,7 @@ KResult Inode::apply_flock(Process const& process, FileDescription const& descri return KSuccess; } -KResult Inode::get_flock(FileDescription const& description, Userspace reference_lock) const +KResult Inode::get_flock(OpenFileDescription const& description, Userspace reference_lock) const { flock lookup = {}; TRY(copy_from_user(&lookup, reference_lock)); @@ -360,7 +360,7 @@ KResult Inode::get_flock(FileDescription const& description, Userspace r return copy_to_user(reference_lock, &lookup); } -void Inode::remove_flocks_for_description(FileDescription const& description) +void Inode::remove_flocks_for_description(OpenFileDescription const& description) { MutexLocker locker(m_inode_lock); diff --git a/Kernel/FileSystem/Inode.h b/Kernel/FileSystem/Inode.h index 3d963b2059..5c3db8f135 100644 --- a/Kernel/FileSystem/Inode.h +++ b/Kernel/FileSystem/Inode.h @@ -46,15 +46,15 @@ public: InodeIdentifier identifier() const { return { fsid(), index() }; } virtual InodeMetadata metadata() const = 0; - KResultOr> read_entire(FileDescription* = nullptr) const; + KResultOr> read_entire(OpenFileDescription* = nullptr) const; - virtual KResult attach(FileDescription&) { return KSuccess; } - virtual void detach(FileDescription&) { } - virtual void did_seek(FileDescription&, off_t) { } - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const = 0; + virtual KResult attach(OpenFileDescription&) { return KSuccess; } + virtual void detach(OpenFileDescription&) { } + virtual void did_seek(OpenFileDescription&, off_t) { } + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const = 0; virtual KResult traverse_as_directory(Function) const = 0; virtual KResultOr> lookup(StringView name) = 0; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& data, FileDescription*) = 0; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& data, OpenFileDescription*) = 0; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) = 0; virtual KResult add_child(Inode&, const StringView& name, mode_t) = 0; virtual KResult remove_child(const StringView& name) = 0; @@ -70,7 +70,7 @@ public: bool bind_socket(LocalSocket&); bool unbind_socket(); - virtual FileDescription* preopen_fd() { return nullptr; }; + virtual OpenFileDescription* preopen_fd() { return nullptr; }; bool is_metadata_dirty() const { return m_metadata_dirty; } @@ -96,10 +96,10 @@ public: NonnullRefPtr fifo(); - KResult can_apply_flock(FileDescription const&, flock const&) const; - KResult apply_flock(Process const&, FileDescription const&, Userspace); - KResult get_flock(FileDescription const&, Userspace) const; - void remove_flocks_for_description(FileDescription const&); + KResult can_apply_flock(OpenFileDescription const&, flock const&) const; + KResult apply_flock(Process const&, OpenFileDescription const&, Userspace); + KResult get_flock(OpenFileDescription const&, Userspace) const; + void remove_flocks_for_description(OpenFileDescription const&); protected: Inode(FileSystem&, InodeIndex); @@ -127,7 +127,7 @@ private: short type; off_t start; off_t len; - FileDescription const* owner; + OpenFileDescription const* owner; pid_t pid; }; diff --git a/Kernel/FileSystem/InodeFile.cpp b/Kernel/FileSystem/InodeFile.cpp index 47373cebf5..ecbdcaa05a 100644 --- a/Kernel/FileSystem/InodeFile.cpp +++ b/Kernel/FileSystem/InodeFile.cpp @@ -5,9 +5,9 @@ */ #include -#include #include #include +#include #include #include #include @@ -26,7 +26,7 @@ InodeFile::~InodeFile() { } -KResultOr InodeFile::read(FileDescription& description, u64 offset, UserOrKernelBuffer& buffer, size_t count) +KResultOr InodeFile::read(OpenFileDescription& description, u64 offset, UserOrKernelBuffer& buffer, size_t count) { if (Checked::addition_would_overflow(offset, count)) return EOVERFLOW; @@ -39,7 +39,7 @@ KResultOr InodeFile::read(FileDescription& description, u64 offset, User return nread; } -KResultOr InodeFile::write(FileDescription& description, u64 offset, const UserOrKernelBuffer& data, size_t count) +KResultOr InodeFile::write(OpenFileDescription& description, u64 offset, const UserOrKernelBuffer& data, size_t count) { if (Checked::addition_would_overflow(offset, count)) return EOVERFLOW; @@ -55,7 +55,7 @@ KResultOr InodeFile::write(FileDescription& description, u64 offset, con return nwritten; } -KResult InodeFile::ioctl(FileDescription& description, unsigned request, Userspace arg) +KResult InodeFile::ioctl(OpenFileDescription& description, unsigned request, Userspace arg) { switch (request) { case FIBMAP: { @@ -81,7 +81,7 @@ KResult InodeFile::ioctl(FileDescription& description, unsigned request, Userspa } } -KResultOr InodeFile::mmap(Process& process, FileDescription& description, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr InodeFile::mmap(Process& process, OpenFileDescription& description, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { // FIXME: If PROT_EXEC, check that the underlying file system isn't mounted noexec. RefPtr vmobject; @@ -92,7 +92,7 @@ KResultOr InodeFile::mmap(Process& process, FileDescription& de return process.address_space().allocate_region_with_vmobject(range, vmobject.release_nonnull(), offset, description.absolute_path(), prot, shared); } -String InodeFile::absolute_path(const FileDescription& description) const +String InodeFile::absolute_path(const OpenFileDescription& description) const { VERIFY_NOT_REACHED(); VERIFY(description.custody()); @@ -106,14 +106,14 @@ KResult InodeFile::truncate(u64 size) return KSuccess; } -KResult InodeFile::chown(FileDescription& description, UserID uid, GroupID gid) +KResult InodeFile::chown(OpenFileDescription& description, UserID uid, GroupID gid) { VERIFY(description.inode() == m_inode); VERIFY(description.custody()); return VirtualFileSystem::the().chown(*description.custody(), uid, gid); } -KResult InodeFile::chmod(FileDescription& description, mode_t mode) +KResult InodeFile::chmod(OpenFileDescription& description, mode_t mode) { VERIFY(description.inode() == m_inode); VERIFY(description.custody()); diff --git a/Kernel/FileSystem/InodeFile.h b/Kernel/FileSystem/InodeFile.h index cc16047dc4..8e7dd7cd8d 100644 --- a/Kernel/FileSystem/InodeFile.h +++ b/Kernel/FileSystem/InodeFile.h @@ -27,20 +27,20 @@ public: const Inode& inode() const { return *m_inode; } Inode& inode() { return *m_inode; } - virtual bool can_read(const FileDescription&, size_t) const override { return true; } - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual bool can_read(const OpenFileDescription&, size_t) const override { return true; } + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; - virtual KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; + virtual KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; virtual KResult stat(::stat& buffer) const override { return inode().metadata().stat(buffer); } - virtual String absolute_path(const FileDescription&) const override; + virtual String absolute_path(const OpenFileDescription&) const override; virtual KResult truncate(u64) override; - virtual KResult chown(FileDescription&, UserID, GroupID) override; - virtual KResult chmod(FileDescription&, mode_t) override; + virtual KResult chown(OpenFileDescription&, UserID, GroupID) override; + virtual KResult chmod(OpenFileDescription&, mode_t) override; virtual StringView class_name() const override { return "InodeFile"; } diff --git a/Kernel/FileSystem/InodeWatcher.cpp b/Kernel/FileSystem/InodeWatcher.cpp index 8edd88092f..33624ad440 100644 --- a/Kernel/FileSystem/InodeWatcher.cpp +++ b/Kernel/FileSystem/InodeWatcher.cpp @@ -22,13 +22,13 @@ InodeWatcher::~InodeWatcher() (void)close(); } -bool InodeWatcher::can_read(const FileDescription&, size_t) const +bool InodeWatcher::can_read(const OpenFileDescription&, size_t) const { MutexLocker locker(m_lock); return !m_queue.is_empty(); } -KResultOr InodeWatcher::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t buffer_size) +KResultOr InodeWatcher::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t buffer_size) { MutexLocker locker(m_lock); if (m_queue.is_empty()) @@ -81,7 +81,7 @@ KResult InodeWatcher::close() return KSuccess; } -String InodeWatcher::absolute_path(const FileDescription&) const +String InodeWatcher::absolute_path(const OpenFileDescription&) const { return String::formatted("InodeWatcher:({})", m_wd_to_watches.size()); } diff --git a/Kernel/FileSystem/InodeWatcher.h b/Kernel/FileSystem/InodeWatcher.h index 01260b2508..041e3ece77 100644 --- a/Kernel/FileSystem/InodeWatcher.h +++ b/Kernel/FileSystem/InodeWatcher.h @@ -43,14 +43,14 @@ public: static KResultOr> try_create(); virtual ~InodeWatcher() override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; // Can't write to an inode watcher. - virtual bool can_write(const FileDescription&, size_t) const override { return true; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EIO; } + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EIO; } virtual KResult close() override; - virtual String absolute_path(const FileDescription&) const override; + virtual String absolute_path(const OpenFileDescription&) const override; virtual StringView class_name() const override { return "InodeWatcher"; }; virtual bool is_inode_watcher() const override { return true; } diff --git a/Kernel/FileSystem/FileDescription.cpp b/Kernel/FileSystem/OpenFileDescription.cpp similarity index 76% rename from Kernel/FileSystem/FileDescription.cpp rename to Kernel/FileSystem/OpenFileDescription.cpp index bd0bc23f6b..05803ecfc6 100644 --- a/Kernel/FileSystem/FileDescription.cpp +++ b/Kernel/FileSystem/OpenFileDescription.cpp @@ -10,10 +10,10 @@ #include #include #include -#include #include #include #include +#include #include #include #include @@ -24,24 +24,24 @@ namespace Kernel { -KResultOr> FileDescription::try_create(Custody& custody) +KResultOr> OpenFileDescription::try_create(Custody& custody) { auto inode_file = TRY(InodeFile::create(custody.inode())); - auto description = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) FileDescription(move(inode_file)))); + auto description = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) OpenFileDescription(move(inode_file)))); description->m_custody = custody; TRY(description->attach()); return description; } -KResultOr> FileDescription::try_create(File& file) +KResultOr> OpenFileDescription::try_create(File& file) { - auto description = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) FileDescription(file))); + auto description = TRY(adopt_nonnull_ref_or_enomem(new (nothrow) OpenFileDescription(file))); TRY(description->attach()); return description; } -FileDescription::FileDescription(File& file) +OpenFileDescription::OpenFileDescription(File& file) : m_file(file) { if (file.is_inode()) @@ -50,7 +50,7 @@ FileDescription::FileDescription(File& file) m_is_directory = metadata().is_directory(); } -FileDescription::~FileDescription() +OpenFileDescription::~OpenFileDescription() { m_file->detach(*this); if (is_fifo()) @@ -64,14 +64,14 @@ FileDescription::~FileDescription() m_inode->remove_flocks_for_description(*this); } -KResult FileDescription::attach() +KResult OpenFileDescription::attach() { if (m_inode) TRY(m_inode->attach(*this)); return m_file->attach(*this); } -Thread::FileBlocker::BlockFlags FileDescription::should_unblock(Thread::FileBlocker::BlockFlags block_flags) const +Thread::FileBlocker::BlockFlags OpenFileDescription::should_unblock(Thread::FileBlocker::BlockFlags block_flags) const { using BlockFlags = Thread::FileBlocker::BlockFlags; BlockFlags unblock_flags = BlockFlags::None; @@ -92,7 +92,7 @@ Thread::FileBlocker::BlockFlags FileDescription::should_unblock(Thread::FileBloc return unblock_flags; } -KResult FileDescription::stat(::stat& buffer) +KResult OpenFileDescription::stat(::stat& buffer) { MutexLocker locker(m_lock); // FIXME: This is due to the Device class not overriding File::stat(). @@ -101,7 +101,7 @@ KResult FileDescription::stat(::stat& buffer) return m_file->stat(buffer); } -KResultOr FileDescription::seek(off_t offset, int whence) +KResultOr OpenFileDescription::seek(off_t offset, int whence) { MutexLocker locker(m_lock); if (!m_file->is_seekable()) @@ -142,21 +142,21 @@ KResultOr FileDescription::seek(off_t offset, int whence) return m_current_offset; } -KResultOr FileDescription::read(UserOrKernelBuffer& buffer, u64 offset, size_t count) +KResultOr OpenFileDescription::read(UserOrKernelBuffer& buffer, u64 offset, size_t count) { if (Checked::addition_would_overflow(offset, count)) return EOVERFLOW; return m_file->read(*this, offset, buffer, count); } -KResultOr FileDescription::write(u64 offset, UserOrKernelBuffer const& data, size_t data_size) +KResultOr OpenFileDescription::write(u64 offset, UserOrKernelBuffer const& data, size_t data_size) { if (Checked::addition_would_overflow(offset, data_size)) return EOVERFLOW; return m_file->write(*this, offset, data, data_size); } -KResultOr FileDescription::read(UserOrKernelBuffer& buffer, size_t count) +KResultOr OpenFileDescription::read(UserOrKernelBuffer& buffer, size_t count) { MutexLocker locker(m_lock); if (Checked::addition_would_overflow(m_current_offset, count)) @@ -168,7 +168,7 @@ KResultOr FileDescription::read(UserOrKernelBuffer& buffer, size_t count return nread; } -KResultOr FileDescription::write(const UserOrKernelBuffer& data, size_t size) +KResultOr OpenFileDescription::write(const UserOrKernelBuffer& data, size_t size) { MutexLocker locker(m_lock); if (Checked::addition_would_overflow(m_current_offset, size)) @@ -180,17 +180,17 @@ KResultOr FileDescription::write(const UserOrKernelBuffer& data, size_t return nwritten; } -bool FileDescription::can_write() const +bool OpenFileDescription::can_write() const { return m_file->can_write(*this, offset()); } -bool FileDescription::can_read() const +bool OpenFileDescription::can_read() const { return m_file->can_read(*this, offset()); } -KResultOr> FileDescription::read_entire_file() +KResultOr> OpenFileDescription::read_entire_file() { // HACK ALERT: (This entire function) VERIFY(m_file->is_inode()); @@ -198,7 +198,7 @@ KResultOr> FileDescription::read_entire_file() return m_inode->read_entire(this); } -KResultOr FileDescription::get_dir_entries(UserOrKernelBuffer& output_buffer, size_t size) +KResultOr OpenFileDescription::get_dir_entries(UserOrKernelBuffer& output_buffer, size_t size) { MutexLocker locker(m_lock, Mutex::Mode::Shared); if (!is_directory()) @@ -261,90 +261,90 @@ KResultOr FileDescription::get_dir_entries(UserOrKernelBuffer& output_bu return size - remaining; } -bool FileDescription::is_device() const +bool OpenFileDescription::is_device() const { return m_file->is_device(); } -const Device* FileDescription::device() const +const Device* OpenFileDescription::device() const { if (!is_device()) return nullptr; return static_cast(m_file.ptr()); } -Device* FileDescription::device() +Device* OpenFileDescription::device() { if (!is_device()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescription::is_tty() const +bool OpenFileDescription::is_tty() const { return m_file->is_tty(); } -const TTY* FileDescription::tty() const +const TTY* OpenFileDescription::tty() const { if (!is_tty()) return nullptr; return static_cast(m_file.ptr()); } -TTY* FileDescription::tty() +TTY* OpenFileDescription::tty() { if (!is_tty()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescription::is_inode_watcher() const +bool OpenFileDescription::is_inode_watcher() const { return m_file->is_inode_watcher(); } -const InodeWatcher* FileDescription::inode_watcher() const +const InodeWatcher* OpenFileDescription::inode_watcher() const { if (!is_inode_watcher()) return nullptr; return static_cast(m_file.ptr()); } -InodeWatcher* FileDescription::inode_watcher() +InodeWatcher* OpenFileDescription::inode_watcher() { if (!is_inode_watcher()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescription::is_master_pty() const +bool OpenFileDescription::is_master_pty() const { return m_file->is_master_pty(); } -const MasterPTY* FileDescription::master_pty() const +const MasterPTY* OpenFileDescription::master_pty() const { if (!is_master_pty()) return nullptr; return static_cast(m_file.ptr()); } -MasterPTY* FileDescription::master_pty() +MasterPTY* OpenFileDescription::master_pty() { if (!is_master_pty()) return nullptr; return static_cast(m_file.ptr()); } -KResult FileDescription::close() +KResult OpenFileDescription::close() { if (m_file->attach_count() > 0) return KSuccess; return m_file->close(); } -KResultOr> FileDescription::try_serialize_absolute_path() +KResultOr> OpenFileDescription::try_serialize_absolute_path() { if (m_custody) return m_custody->try_serialize_absolute_path(); @@ -352,64 +352,64 @@ KResultOr> FileDescription::try_serialize_absolute_path() return KString::try_create(m_file->absolute_path(*this)); } -String FileDescription::absolute_path() const +String OpenFileDescription::absolute_path() const { if (m_custody) return m_custody->absolute_path(); return m_file->absolute_path(*this); } -InodeMetadata FileDescription::metadata() const +InodeMetadata OpenFileDescription::metadata() const { if (m_inode) return m_inode->metadata(); return {}; } -KResultOr FileDescription::mmap(Process& process, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr OpenFileDescription::mmap(Process& process, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { MutexLocker locker(m_lock); return m_file->mmap(process, *this, range, offset, prot, shared); } -KResult FileDescription::truncate(u64 length) +KResult OpenFileDescription::truncate(u64 length) { MutexLocker locker(m_lock); return m_file->truncate(length); } -bool FileDescription::is_fifo() const +bool OpenFileDescription::is_fifo() const { return m_file->is_fifo(); } -FIFO* FileDescription::fifo() +FIFO* OpenFileDescription::fifo() { if (!is_fifo()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescription::is_socket() const +bool OpenFileDescription::is_socket() const { return m_file->is_socket(); } -Socket* FileDescription::socket() +Socket* OpenFileDescription::socket() { if (!is_socket()) return nullptr; return static_cast(m_file.ptr()); } -const Socket* FileDescription::socket() const +const Socket* OpenFileDescription::socket() const { if (!is_socket()) return nullptr; return static_cast(m_file.ptr()); } -void FileDescription::set_file_flags(u32 flags) +void OpenFileDescription::set_file_flags(u32 flags) { MutexLocker locker(m_lock); m_is_blocking = !(flags & O_NONBLOCK); @@ -418,24 +418,24 @@ void FileDescription::set_file_flags(u32 flags) m_file_flags = flags; } -KResult FileDescription::chmod(mode_t mode) +KResult OpenFileDescription::chmod(mode_t mode) { MutexLocker locker(m_lock); return m_file->chmod(*this, mode); } -KResult FileDescription::chown(UserID uid, GroupID gid) +KResult OpenFileDescription::chown(UserID uid, GroupID gid) { MutexLocker locker(m_lock); return m_file->chown(*this, uid, gid); } -FileBlockerSet& FileDescription::blocker_set() +FileBlockerSet& OpenFileDescription::blocker_set() { return m_file->blocker_set(); } -KResult FileDescription::apply_flock(Process const& process, Userspace lock) +KResult OpenFileDescription::apply_flock(Process const& process, Userspace lock) { if (!m_inode) return EBADF; @@ -443,7 +443,7 @@ KResult FileDescription::apply_flock(Process const& process, Userspaceapply_flock(process, *this, lock); } -KResult FileDescription::get_flock(Userspace lock) const +KResult OpenFileDescription::get_flock(Userspace lock) const { if (!m_inode) return EBADF; diff --git a/Kernel/FileSystem/FileDescription.h b/Kernel/FileSystem/OpenFileDescription.h similarity index 88% rename from Kernel/FileSystem/FileDescription.h rename to Kernel/FileSystem/OpenFileDescription.h index 45b9db794b..04c3c08e61 100644 --- a/Kernel/FileSystem/FileDescription.h +++ b/Kernel/FileSystem/OpenFileDescription.h @@ -18,17 +18,17 @@ namespace Kernel { -class FileDescriptionData { +class OpenFileDescriptionData { public: - virtual ~FileDescriptionData() = default; + virtual ~OpenFileDescriptionData() = default; }; -class FileDescription : public RefCounted { - MAKE_SLAB_ALLOCATED(FileDescription) +class OpenFileDescription : public RefCounted { + MAKE_SLAB_ALLOCATED(OpenFileDescription) public: - static KResultOr> try_create(Custody&); - static KResultOr> try_create(File&); - ~FileDescription(); + static KResultOr> try_create(Custody&); + static KResultOr> try_create(File&); + ~OpenFileDescription(); Thread::FileBlocker::BlockFlags should_unblock(Thread::FileBlocker::BlockFlags) const; @@ -116,7 +116,7 @@ public: FIFO::Direction fifo_direction() const { return m_fifo_direction; } void set_fifo_direction(Badge, FIFO::Direction direction) { m_fifo_direction = direction; } - OwnPtr& data() { return m_data; } + OwnPtr& data() { return m_data; } void set_original_inode(Badge, NonnullRefPtr&& inode) { m_inode = move(inode); } @@ -133,7 +133,7 @@ public: private: friend class VirtualFileSystem; - explicit FileDescription(File&); + explicit OpenFileDescription(File&); KResult attach(); @@ -148,7 +148,7 @@ private: off_t m_current_offset { 0 }; - OwnPtr m_data; + OwnPtr m_data; u32 m_file_flags { 0 }; @@ -160,7 +160,7 @@ private: bool m_direct : 1 { false }; FIFO::Direction m_fifo_direction { FIFO::Direction::Neither }; - Mutex m_lock { "FileDescription" }; + Mutex m_lock { "OpenFileDescription" }; }; } diff --git a/Kernel/FileSystem/Plan9FileSystem.cpp b/Kernel/FileSystem/Plan9FileSystem.cpp index 4f27c1cf28..8508f90b0b 100644 --- a/Kernel/FileSystem/Plan9FileSystem.cpp +++ b/Kernel/FileSystem/Plan9FileSystem.cpp @@ -9,12 +9,12 @@ namespace Kernel { -KResultOr> Plan9FS::try_create(FileDescription& file_description) +KResultOr> Plan9FS::try_create(OpenFileDescription& file_description) { return adopt_nonnull_ref_or_enomem(new (nothrow) Plan9FS(file_description)); } -Plan9FS::Plan9FS(FileDescription& file_description) +Plan9FS::Plan9FS(OpenFileDescription& file_description) : FileBackedFileSystem(file_description) , m_completion_blocker(*this) { @@ -720,7 +720,7 @@ KResult Plan9FSInode::ensure_open_for_mode(int mode) } } -KResultOr Plan9FSInode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr Plan9FSInode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, OpenFileDescription*) const { TRY(const_cast(*this).ensure_open_for_mode(O_RDONLY)); @@ -752,7 +752,7 @@ KResultOr Plan9FSInode::read_bytes(off_t offset, size_t size, UserOrKern return nread; } -KResultOr Plan9FSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& data, FileDescription*) +KResultOr Plan9FSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& data, OpenFileDescription*) { TRY(ensure_open_for_mode(O_WRONLY)); size = fs().adjust_buffer_size(size); diff --git a/Kernel/FileSystem/Plan9FileSystem.h b/Kernel/FileSystem/Plan9FileSystem.h index 7cb964207b..1dfe4f7e55 100644 --- a/Kernel/FileSystem/Plan9FileSystem.h +++ b/Kernel/FileSystem/Plan9FileSystem.h @@ -20,7 +20,7 @@ class Plan9FS final : public FileBackedFileSystem { public: virtual ~Plan9FS() override; - static KResultOr> try_create(FileDescription&); + static KResultOr> try_create(OpenFileDescription&); virtual KResult initialize() override; @@ -46,7 +46,7 @@ public: class Message; private: - Plan9FS(FileDescription&); + Plan9FS(OpenFileDescription&); class Blocker; @@ -156,8 +156,8 @@ public: // ^Inode virtual InodeMetadata metadata() const override; virtual void flush_metadata() override; - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& data, FileDescription*) override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& data, OpenFileDescription*) override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index c5401594f5..32e086ecee 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include @@ -115,7 +115,7 @@ ProcFSGlobalInode::ProcFSGlobalInode(const ProcFS& fs, const ProcFSExposedCompon { } -void ProcFSGlobalInode::did_seek(FileDescription& description, off_t new_offset) +void ProcFSGlobalInode::did_seek(OpenFileDescription& description, off_t new_offset) { if (new_offset != 0) return; @@ -126,12 +126,12 @@ void ProcFSGlobalInode::did_seek(FileDescription& description, off_t new_offset) } } -KResult ProcFSGlobalInode::attach(FileDescription& description) +KResult ProcFSGlobalInode::attach(OpenFileDescription& description) { return m_associated_component->refresh_data(description); } -KResultOr ProcFSGlobalInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* fd) const +KResultOr ProcFSGlobalInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* fd) const { return m_associated_component->read_bytes(offset, count, buffer, fd); } @@ -164,7 +164,7 @@ InodeMetadata ProcFSGlobalInode::metadata() const return metadata; } -KResultOr ProcFSGlobalInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, FileDescription* fd) +KResultOr ProcFSGlobalInode::write_bytes(off_t offset, size_t count, const UserOrKernelBuffer& buffer, OpenFileDescription* fd) { return m_associated_component->write_bytes(offset, count, buffer, fd); } @@ -236,7 +236,7 @@ ProcFSProcessAssociatedInode::ProcFSProcessAssociatedInode(const ProcFS& fs, Pro { } -KResultOr ProcFSProcessAssociatedInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*) +KResultOr ProcFSProcessAssociatedInode::write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*) { VERIFY_NOT_REACHED(); } @@ -251,7 +251,7 @@ ProcFSProcessDirectoryInode::ProcFSProcessDirectoryInode(const ProcFS& procfs, P { } -KResult ProcFSProcessDirectoryInode::attach(FileDescription&) +KResult ProcFSProcessDirectoryInode::attach(OpenFileDescription&) { return KSuccess; } @@ -274,7 +274,7 @@ InodeMetadata ProcFSProcessDirectoryInode::metadata() const return metadata; } -KResultOr ProcFSProcessDirectoryInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const +KResultOr ProcFSProcessDirectoryInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } @@ -295,7 +295,7 @@ KResultOr> ProcFSProcessDirectoryInode::lookup(StringView n if (!process) return ESRCH; if (name == "fd"sv) - return TRY(ProcFSProcessSubDirectoryInode::try_create(procfs(), SegmentedProcFSIndex::ProcessSubDirectory::FileDescriptions, associated_pid())); + return TRY(ProcFSProcessSubDirectoryInode::try_create(procfs(), SegmentedProcFSIndex::ProcessSubDirectory::OpenFileDescriptions, associated_pid())); if (name == "stacks"sv) return TRY(ProcFSProcessSubDirectoryInode::try_create(procfs(), SegmentedProcFSIndex::ProcessSubDirectory::Stacks, associated_pid())); if (name == "unveil"sv) @@ -303,7 +303,7 @@ KResultOr> ProcFSProcessDirectoryInode::lookup(StringView n if (name == "pledge"sv) return TRY(ProcFSProcessPropertyInode::try_create_for_pid_property(procfs(), SegmentedProcFSIndex::MainProcessProperty::Pledge, associated_pid())); if (name == "fds"sv) - return TRY(ProcFSProcessPropertyInode::try_create_for_pid_property(procfs(), SegmentedProcFSIndex::MainProcessProperty::FileDescriptions, associated_pid())); + return TRY(ProcFSProcessPropertyInode::try_create_for_pid_property(procfs(), SegmentedProcFSIndex::MainProcessProperty::OpenFileDescriptions, associated_pid())); if (name == "exe"sv) return TRY(ProcFSProcessPropertyInode::try_create_for_pid_property(procfs(), SegmentedProcFSIndex::MainProcessProperty::BinaryLink, associated_pid())); if (name == "cwd"sv) @@ -326,17 +326,17 @@ ProcFSProcessSubDirectoryInode::ProcFSProcessSubDirectoryInode(const ProcFS& pro { } -KResultOr ProcFSProcessSubDirectoryInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const +KResultOr ProcFSProcessSubDirectoryInode::read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } -KResult ProcFSProcessSubDirectoryInode::attach(FileDescription&) +KResult ProcFSProcessSubDirectoryInode::attach(OpenFileDescription&) { return KSuccess; } -void ProcFSProcessSubDirectoryInode::did_seek(FileDescription&, off_t) +void ProcFSProcessSubDirectoryInode::did_seek(OpenFileDescription&, off_t) { VERIFY_NOT_REACHED(); } @@ -366,7 +366,7 @@ KResult ProcFSProcessSubDirectoryInode::traverse_as_directory(Functiontraverse_file_descriptions_directory(procfs().fsid(), move(callback)); case SegmentedProcFSIndex::ProcessSubDirectory::Stacks: return process->traverse_stacks_directory(procfs().fsid(), move(callback)); @@ -383,7 +383,7 @@ KResultOr> ProcFSProcessSubDirectoryInode::lookup(StringVie if (!process) return ESRCH; switch (m_sub_directory_type) { - case SegmentedProcFSIndex::ProcessSubDirectory::FileDescriptions: + case SegmentedProcFSIndex::ProcessSubDirectory::OpenFileDescriptions: return process->lookup_file_descriptions_directory(procfs(), name); case SegmentedProcFSIndex::ProcessSubDirectory::Stacks: return process->lookup_stacks_directory(procfs(), name); @@ -414,7 +414,7 @@ ProcFSProcessPropertyInode::ProcFSProcessPropertyInode(const ProcFS& procfs, Seg ProcFSProcessPropertyInode::ProcFSProcessPropertyInode(const ProcFS& procfs, unsigned file_description_index, ProcessID pid) : ProcFSProcessAssociatedInode(procfs, pid, SegmentedProcFSIndex::build_segmented_index_for_file_description(pid, file_description_index)) - , m_parent_sub_directory_type(SegmentedProcFSIndex::ProcessSubDirectory::FileDescriptions) + , m_parent_sub_directory_type(SegmentedProcFSIndex::ProcessSubDirectory::OpenFileDescriptions) { m_possible_data.property_index = file_description_index; } @@ -426,11 +426,11 @@ ProcFSProcessPropertyInode::ProcFSProcessPropertyInode(const ProcFS& procfs, Thr m_possible_data.property_index = thread_stack_index.value(); } -KResult ProcFSProcessPropertyInode::attach(FileDescription& description) +KResult ProcFSProcessPropertyInode::attach(OpenFileDescription& description) { return refresh_data(description); } -void ProcFSProcessPropertyInode::did_seek(FileDescription& description, off_t offset) +void ProcFSProcessPropertyInode::did_seek(OpenFileDescription& description, off_t offset) { if (offset != 0) return; @@ -439,7 +439,7 @@ void ProcFSProcessPropertyInode::did_seek(FileDescription& description, off_t of static mode_t determine_procfs_process_inode_mode(SegmentedProcFSIndex::ProcessSubDirectory parent_sub_directory_type, SegmentedProcFSIndex::MainProcessProperty main_property) { - if (parent_sub_directory_type == SegmentedProcFSIndex::ProcessSubDirectory::FileDescriptions) + if (parent_sub_directory_type == SegmentedProcFSIndex::ProcessSubDirectory::OpenFileDescriptions) return S_IFLNK | 0400; if (parent_sub_directory_type == SegmentedProcFSIndex::ProcessSubDirectory::Stacks) return S_IFREG | 0400; @@ -472,7 +472,7 @@ KResult ProcFSProcessPropertyInode::traverse_as_directory(Function ProcFSProcessPropertyInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const +KResultOr ProcFSProcessPropertyInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const { dbgln_if(PROCFS_DEBUG, "ProcFS ProcessInformation: read_bytes offset: {} count: {}", offset, count); @@ -526,7 +526,7 @@ static KResult build_from_cached_data(KBufferBuilder& builder, ProcFSInodeData& KResult ProcFSProcessPropertyInode::try_to_acquire_data(Process& process, KBufferBuilder& builder) const { // FIXME: Verify process is already ref-counted - if (m_parent_sub_directory_type == SegmentedProcFSIndex::ProcessSubDirectory::FileDescriptions) { + if (m_parent_sub_directory_type == SegmentedProcFSIndex::ProcessSubDirectory::OpenFileDescriptions) { TRY(process.procfs_get_file_description_link(m_possible_data.property_index, builder)); return KSuccess; } @@ -541,7 +541,7 @@ KResult ProcFSProcessPropertyInode::try_to_acquire_data(Process& process, KBuffe return process.procfs_get_unveil_stats(builder); case SegmentedProcFSIndex::MainProcessProperty::Pledge: return process.procfs_get_pledge_stats(builder); - case SegmentedProcFSIndex::MainProcessProperty::FileDescriptions: + case SegmentedProcFSIndex::MainProcessProperty::OpenFileDescriptions: return process.procfs_get_fds_stats(builder); case SegmentedProcFSIndex::MainProcessProperty::BinaryLink: return process.procfs_get_binary_link(builder); @@ -556,7 +556,7 @@ KResult ProcFSProcessPropertyInode::try_to_acquire_data(Process& process, KBuffe } } -KResult ProcFSProcessPropertyInode::refresh_data(FileDescription& description) +KResult ProcFSProcessPropertyInode::refresh_data(OpenFileDescription& description) { // For process-specific inodes, hold the process's ptrace lock across refresh // and refuse to load data if the process is not dumpable. diff --git a/Kernel/FileSystem/ProcFS.h b/Kernel/FileSystem/ProcFS.h index ae77b6c76e..1be5b2f1c6 100644 --- a/Kernel/FileSystem/ProcFS.h +++ b/Kernel/FileSystem/ProcFS.h @@ -54,8 +54,8 @@ protected: ProcFS const& procfs() const { return static_cast(Inode::fs()); } // ^Inode - virtual KResult attach(FileDescription& description) = 0; - virtual void did_seek(FileDescription&, off_t) = 0; + virtual KResult attach(OpenFileDescription& description) = 0; + virtual void did_seek(OpenFileDescription&, off_t) = 0; virtual void flush_metadata() override final; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override final; virtual KResult add_child(Inode&, const StringView& name, mode_t) override final; @@ -77,10 +77,10 @@ protected: ProcFSGlobalInode(const ProcFS&, const ProcFSExposedComponent&); // ^Inode - virtual KResult attach(FileDescription& description) override final; - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override final; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override final; - virtual void did_seek(FileDescription&, off_t) override final; + virtual KResult attach(OpenFileDescription& description) override final; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override final; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override final; + virtual void did_seek(OpenFileDescription&, off_t) override final; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView) override; @@ -122,7 +122,7 @@ protected: ProcessID associated_pid() const { return m_pid; } // ^Inode - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override final; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override final; private: const ProcessID m_pid; @@ -137,11 +137,11 @@ public: private: ProcFSProcessDirectoryInode(const ProcFS&, ProcessID); // ^Inode - virtual KResult attach(FileDescription& description) override; - virtual void did_seek(FileDescription&, off_t) override { } + virtual KResult attach(OpenFileDescription& description) override; + virtual void did_seek(OpenFileDescription&, off_t) override { } virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override final; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override final; virtual KResultOr> lookup(StringView name) override; }; @@ -154,11 +154,11 @@ public: private: ProcFSProcessSubDirectoryInode(const ProcFS&, SegmentedProcFSIndex::ProcessSubDirectory, ProcessID); // ^Inode - virtual KResult attach(FileDescription& description) override; - virtual void did_seek(FileDescription&, off_t) override; + virtual KResult attach(OpenFileDescription& description) override; + virtual void did_seek(OpenFileDescription&, off_t) override; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override final; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override final; virtual KResultOr> lookup(StringView name) override; const SegmentedProcFSIndex::ProcessSubDirectory m_sub_directory_type; @@ -177,14 +177,14 @@ private: ProcFSProcessPropertyInode(const ProcFS&, ThreadID, ProcessID); ProcFSProcessPropertyInode(const ProcFS&, unsigned, ProcessID); // ^Inode - virtual KResult attach(FileDescription& description) override; - virtual void did_seek(FileDescription&, off_t) override; + virtual KResult attach(OpenFileDescription& description) override; + virtual void did_seek(OpenFileDescription&, off_t) override; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override final; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override final; virtual KResultOr> lookup(StringView name) override final; - KResult refresh_data(FileDescription& description); + KResult refresh_data(OpenFileDescription& description); KResult try_to_acquire_data(Process& process, KBufferBuilder& builder) const; const SegmentedProcFSIndex::ProcessSubDirectory m_parent_sub_directory_type; diff --git a/Kernel/FileSystem/SysFS.cpp b/Kernel/FileSystem/SysFS.cpp index ded4365ff1..e56744f050 100644 --- a/Kernel/FileSystem/SysFS.cpp +++ b/Kernel/FileSystem/SysFS.cpp @@ -96,7 +96,7 @@ SysFSInode::SysFSInode(SysFS const& fs, SysFSComponent const& component) { } -void SysFSInode::did_seek(FileDescription& description, off_t new_offset) +void SysFSInode::did_seek(OpenFileDescription& description, off_t new_offset) { if (new_offset != 0) return; @@ -107,12 +107,12 @@ void SysFSInode::did_seek(FileDescription& description, off_t new_offset) } } -KResult SysFSInode::attach(FileDescription& description) +KResult SysFSInode::attach(OpenFileDescription& description) { return m_associated_component->refresh_data(description); } -KResultOr SysFSInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* fd) const +KResultOr SysFSInode::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* fd) const { return m_associated_component->read_bytes(offset, count, buffer, fd); } @@ -144,7 +144,7 @@ void SysFSInode::flush_metadata() { } -KResultOr SysFSInode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& buffer, FileDescription* fd) +KResultOr SysFSInode::write_bytes(off_t offset, size_t count, UserOrKernelBuffer const& buffer, OpenFileDescription* fd) { return m_associated_component->write_bytes(offset, count, buffer, fd); } diff --git a/Kernel/FileSystem/SysFS.h b/Kernel/FileSystem/SysFS.h index c7fe30c619..437ba4595a 100644 --- a/Kernel/FileSystem/SysFS.h +++ b/Kernel/FileSystem/SysFS.h @@ -83,12 +83,12 @@ public: protected: SysFSInode(SysFS const&, SysFSComponent const&); - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual void flush_metadata() override; virtual InodeMetadata metadata() const override; - virtual KResultOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; virtual KResult add_child(Inode&, StringView const& name, mode_t) override; virtual KResult remove_child(StringView const& name) override; @@ -96,8 +96,8 @@ protected: virtual KResult chown(UserID, GroupID) override; virtual KResult truncate(u64) override; - virtual KResult attach(FileDescription& description) override final; - virtual void did_seek(FileDescription&, off_t) override final; + virtual KResult attach(OpenFileDescription& description) override final; + virtual void did_seek(OpenFileDescription&, off_t) override final; NonnullRefPtr m_associated_component; }; diff --git a/Kernel/FileSystem/SysFSComponent.h b/Kernel/FileSystem/SysFSComponent.h index c640df9ae5..1525014bf7 100644 --- a/Kernel/FileSystem/SysFSComponent.h +++ b/Kernel/FileSystem/SysFSComponent.h @@ -13,24 +13,24 @@ #include #include #include -#include #include +#include #include namespace Kernel { -struct SysFSInodeData : public FileDescriptionData { +struct SysFSInodeData : public OpenFileDescriptionData { OwnPtr buffer; }; class SysFSComponent : public RefCounted { public: virtual StringView name() const { return m_name->view(); } - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const { VERIFY_NOT_REACHED(); } + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } virtual KResult traverse_as_directory(unsigned, Function) const { VERIFY_NOT_REACHED(); } virtual RefPtr lookup(StringView) { VERIFY_NOT_REACHED(); }; - virtual KResultOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, FileDescription*) { return EROFS; } - virtual KResult refresh_data(FileDescription&) const { return KSuccess; } + virtual KResultOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) { return EROFS; } + virtual KResult refresh_data(OpenFileDescription&) const { return KSuccess; } virtual KResultOr> to_inode(SysFS const&) const; diff --git a/Kernel/FileSystem/TmpFS.cpp b/Kernel/FileSystem/TmpFS.cpp index cf013adf03..0a671061bd 100644 --- a/Kernel/FileSystem/TmpFS.cpp +++ b/Kernel/FileSystem/TmpFS.cpp @@ -123,7 +123,7 @@ KResult TmpFSInode::traverse_as_directory(Function TmpFSInode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr TmpFSInode::read_bytes(off_t offset, size_t size, UserOrKernelBuffer& buffer, OpenFileDescription*) const { MutexLocker locker(m_inode_lock, Mutex::Mode::Shared); VERIFY(!is_directory()); @@ -142,7 +142,7 @@ KResultOr TmpFSInode::read_bytes(off_t offset, size_t size, UserOrKernel return size; } -KResultOr TmpFSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& buffer, FileDescription*) +KResultOr TmpFSInode::write_bytes(off_t offset, size_t size, const UserOrKernelBuffer& buffer, OpenFileDescription*) { MutexLocker locker(m_inode_lock); VERIFY(!is_directory()); diff --git a/Kernel/FileSystem/TmpFS.h b/Kernel/FileSystem/TmpFS.h index bd8bb8bb54..4c4f930bfe 100644 --- a/Kernel/FileSystem/TmpFS.h +++ b/Kernel/FileSystem/TmpFS.h @@ -52,12 +52,12 @@ public: const TmpFS& fs() const { return static_cast(Inode::fs()); } // ^Inode - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, OpenFileDescription*) const override; virtual InodeMetadata metadata() const override; virtual KResult traverse_as_directory(Function) const override; virtual KResultOr> lookup(StringView name) override; virtual void flush_metadata() override; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, FileDescription*) override; + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer& buffer, OpenFileDescription*) override; virtual KResultOr> create_child(StringView name, mode_t, dev_t, UserID, GroupID) override; virtual KResult add_child(Inode&, const StringView& name, mode_t) override; virtual KResult remove_child(const StringView& name) override; diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index 0135af8c3b..1d1de17092 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -11,8 +11,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -203,7 +203,7 @@ KResultOr VirtualFileSystem::lookup_metadata(StringView path, Cus return custody->inode().metadata(); } -KResultOr> VirtualFileSystem::open(StringView path, int options, mode_t mode, Custody& base, Optional owner) +KResultOr> VirtualFileSystem::open(StringView path, int options, mode_t mode, Custody& base, Optional owner) { if ((options & O_CREAT) && (options & O_DIRECTORY)) return EINVAL; @@ -288,7 +288,7 @@ KResultOr> VirtualFileSystem::open(StringView pat TRY(inode.truncate(0)); TRY(inode.set_mtime(kgettimeofday().to_truncated_seconds())); } - auto description = TRY(FileDescription::try_create(custody)); + auto description = TRY(OpenFileDescription::try_create(custody)); description->set_rw_mode(options); description->set_file_flags(options); return description; @@ -319,7 +319,7 @@ KResult VirtualFileSystem::mknod(StringView path, mode_t mode, dev_t dev, Custod return parent_inode.create_child(basename, mode, dev, current_process.euid(), current_process.egid()).result(); } -KResultOr> VirtualFileSystem::create(StringView path, int options, mode_t mode, Custody& parent_custody, Optional owner) +KResultOr> VirtualFileSystem::create(StringView path, int options, mode_t mode, Custody& parent_custody, Optional owner) { auto basename = KLexicalPath::basename(path); auto parent_path = TRY(parent_custody.try_serialize_absolute_path()); @@ -345,7 +345,7 @@ KResultOr> VirtualFileSystem::create(StringView p auto inode = TRY(parent_inode.create_child(basename, mode, 0, uid, gid)); auto custody = TRY(Custody::try_create(&parent_custody, basename, inode, parent_custody.mount_flags())); - auto description = TRY(FileDescription::try_create(move(custody))); + auto description = TRY(OpenFileDescription::try_create(move(custody))); description->set_rw_mode(options); description->set_file_flags(options); return description; diff --git a/Kernel/FileSystem/VirtualFileSystem.h b/Kernel/FileSystem/VirtualFileSystem.h index 262ef63dd9..8c9655ba44 100644 --- a/Kernel/FileSystem/VirtualFileSystem.h +++ b/Kernel/FileSystem/VirtualFileSystem.h @@ -48,8 +48,8 @@ public: KResult remount(Custody& mount_point, int new_flags); KResult unmount(Inode& guest_inode); - KResultOr> open(StringView path, int options, mode_t mode, Custody& base, Optional = {}); - KResultOr> create(StringView path, int options, mode_t mode, Custody& parent_custody, Optional = {}); + KResultOr> open(StringView path, int options, mode_t mode, Custody& base, Optional = {}); + KResultOr> create(StringView path, int options, mode_t mode, Custody& parent_custody, Optional = {}); KResult mkdir(StringView path, mode_t mode, Custody& base); KResult link(StringView old_path, StringView new_path, Custody& base); KResult unlink(StringView path, Custody& base); @@ -77,7 +77,7 @@ public: KResultOr> resolve_path_without_veil(StringView path, Custody& base, RefPtr* out_parent = nullptr, int options = 0, int symlink_recursion_level = 0); private: - friend class FileDescription; + friend class OpenFileDescription; UnveilNode const& find_matching_unveiled_path(StringView path); KResult validate_path_against_process_veil(Custody const& path, int options); diff --git a/Kernel/Forward.h b/Kernel/Forward.h index 27cf687abf..6a77aa4cdc 100644 --- a/Kernel/Forward.h +++ b/Kernel/Forward.h @@ -24,7 +24,7 @@ class Device; class DiskCache; class DoubleBuffer; class File; -class FileDescription; +class OpenFileDescription; class FileSystem; class FutexQueue; class IPv4Socket; diff --git a/Kernel/GlobalProcessExposed.cpp b/Kernel/GlobalProcessExposed.cpp index e1025c2764..4f06fe18b3 100644 --- a/Kernel/GlobalProcessExposed.cpp +++ b/Kernel/GlobalProcessExposed.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Graphics/FramebufferDevice.cpp b/Kernel/Graphics/FramebufferDevice.cpp index 982f221fe6..1969d424ad 100644 --- a/Kernel/Graphics/FramebufferDevice.cpp +++ b/Kernel/Graphics/FramebufferDevice.cpp @@ -25,7 +25,7 @@ NonnullRefPtr FramebufferDevice::create(const GraphicsDevice& return adopt_ref(*new FramebufferDevice(adapter, output_port_index, paddr, width, height, pitch)); } -KResultOr FramebufferDevice::mmap(Process& process, FileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr FramebufferDevice::mmap(Process& process, OpenFileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { SpinlockLocker lock(m_activation_lock); REQUIRE_PROMISE(video); @@ -123,7 +123,7 @@ size_t FramebufferDevice::framebuffer_size_in_bytes() const return m_framebuffer_pitch * m_framebuffer_height; } -KResult FramebufferDevice::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult FramebufferDevice::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { REQUIRE_PROMISE(video); switch (request) { diff --git a/Kernel/Graphics/FramebufferDevice.h b/Kernel/Graphics/FramebufferDevice.h index 31a33e8866..2a7aecb359 100644 --- a/Kernel/Graphics/FramebufferDevice.h +++ b/Kernel/Graphics/FramebufferDevice.h @@ -22,8 +22,8 @@ class FramebufferDevice : public BlockDevice { public: static NonnullRefPtr create(const GraphicsDevice&, size_t, PhysicalAddress, size_t, size_t, size_t); - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; - virtual KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; + virtual KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; // ^Device virtual mode_t required_mode() const override { return 0660; } @@ -40,11 +40,11 @@ private: // ^File virtual StringView class_name() const override { return "FramebufferDevice"; } - virtual bool can_read(const FileDescription&, size_t) const override final { return true; } - virtual bool can_write(const FileDescription&, size_t) const override final { return true; } + virtual bool can_read(const OpenFileDescription&, size_t) const override final { return true; } + virtual bool can_write(const OpenFileDescription&, size_t) const override final { return true; } virtual void start_request(AsyncBlockDeviceRequest& request) override final { request.complete(AsyncDeviceRequest::Failure); } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override { return EINVAL; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return EINVAL; } + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; } FramebufferDevice(const GraphicsDevice&, size_t, PhysicalAddress, size_t, size_t, size_t); diff --git a/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.cpp b/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.cpp index 8171711411..ed7e022057 100644 --- a/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.cpp +++ b/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.cpp @@ -148,7 +148,7 @@ void FrameBufferDevice::set_buffer(int buffer_index) buffer.dirty_rect = {}; } -KResult FrameBufferDevice::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult FrameBufferDevice::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { REQUIRE_PROMISE(video); switch (request) { @@ -237,7 +237,7 @@ KResult FrameBufferDevice::ioctl(FileDescription&, unsigned request, Userspace FrameBufferDevice::mmap(Process& process, FileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) +KResultOr FrameBufferDevice::mmap(Process& process, OpenFileDescription&, Memory::VirtualRange const& range, u64 offset, int prot, bool shared) { REQUIRE_PROMISE(video); if (!shared) diff --git a/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.h b/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.h index 5381432f04..9f0a3433dd 100644 --- a/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.h +++ b/Kernel/Graphics/VirtIOGPU/FrameBufferDevice.h @@ -60,12 +60,12 @@ private: void create_buffer(Buffer&, size_t, size_t); void set_buffer(int); - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; - virtual KResultOr mmap(Process&, FileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; - virtual bool can_read(const FileDescription&, size_t) const override { return true; } - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override { return EINVAL; } - virtual bool can_write(const FileDescription&, size_t) const override { return true; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; }; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; + virtual KResultOr mmap(Process&, OpenFileDescription&, Memory::VirtualRange const&, u64 offset, int prot, bool shared) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override { return true; } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return EINVAL; } + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return EINVAL; }; virtual void start_request(AsyncBlockDeviceRequest& request) override { request.complete(AsyncDeviceRequest::Failure); } virtual mode_t required_mode() const override { return 0666; } diff --git a/Kernel/KSyms.cpp b/Kernel/KSyms.cpp index 135321083e..c38994a347 100644 --- a/Kernel/KSyms.cpp +++ b/Kernel/KSyms.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include diff --git a/Kernel/Net/IPv4Socket.cpp b/Kernel/Net/IPv4Socket.cpp index 0e88cc1fc1..0a2ad95a26 100644 --- a/Kernel/Net/IPv4Socket.cpp +++ b/Kernel/Net/IPv4Socket.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include @@ -28,7 +28,7 @@ namespace Kernel { static Singleton> s_all_sockets; -using BlockFlags = Thread::FileDescriptionBlocker::BlockFlags; +using BlockFlags = Thread::OpenFileDescriptionBlocker::BlockFlags; MutexProtected& IPv4Socket::all_sockets() { @@ -141,7 +141,7 @@ KResult IPv4Socket::listen(size_t backlog) return protocol_listen(result.did_allocate); } -KResult IPv4Socket::connect(FileDescription& description, Userspace address, socklen_t address_size, ShouldBlock should_block) +KResult IPv4Socket::connect(OpenFileDescription& description, Userspace address, socklen_t address_size, ShouldBlock should_block) { if (address_size != sizeof(sockaddr_in)) return set_so_error(EINVAL); @@ -166,7 +166,7 @@ KResult IPv4Socket::connect(FileDescription& description, Userspace IPv4Socket::sendto(FileDescription&, const UserOrKernelBuffer& data, size_t data_length, [[maybe_unused]] int flags, Userspace addr, socklen_t addr_length) +KResultOr IPv4Socket::sendto(OpenFileDescription&, const UserOrKernelBuffer& data, size_t data_length, [[maybe_unused]] int flags, Userspace addr, socklen_t addr_length) { MutexLocker locker(mutex()); @@ -251,7 +251,7 @@ KResultOr IPv4Socket::sendto(FileDescription&, const UserOrKernelBuffer& return nsent_or_error; } -KResultOr IPv4Socket::receive_byte_buffered(FileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace, Userspace) +KResultOr IPv4Socket::receive_byte_buffered(OpenFileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace, Userspace) { MutexLocker locker(mutex()); if (m_receive_buffer->is_empty()) { @@ -287,7 +287,7 @@ KResultOr IPv4Socket::receive_byte_buffered(FileDescription& description return nreceived_or_error; } -KResultOr IPv4Socket::receive_packet_buffered(FileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace addr, Userspace addr_length, Time& packet_timestamp) +KResultOr IPv4Socket::receive_packet_buffered(OpenFileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace addr, Userspace addr_length, Time& packet_timestamp) { MutexLocker locker(mutex()); ReceivedPacket packet; @@ -379,7 +379,7 @@ KResultOr IPv4Socket::receive_packet_buffered(FileDescription& descripti return protocol_receive(ReadonlyBytes { packet.data.value().data(), packet.data.value().size() }, buffer, buffer_length, flags); } -KResultOr IPv4Socket::recvfrom(FileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace user_addr, Userspace user_addr_length, Time& packet_timestamp) +KResultOr IPv4Socket::recvfrom(OpenFileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace user_addr, Userspace user_addr_length, Time& packet_timestamp) { if (user_addr_length) { socklen_t addr_length; @@ -450,7 +450,7 @@ bool IPv4Socket::did_receive(const IPv4Address& source_address, u16 source_port, return true; } -String IPv4Socket::absolute_path(const FileDescription&) const +String IPv4Socket::absolute_path(const OpenFileDescription&) const { if (m_role == Role::None) return "socket"; @@ -536,7 +536,7 @@ KResult IPv4Socket::setsockopt(int level, int option, Userspace use } } -KResult IPv4Socket::getsockopt(FileDescription& description, int level, int option, Userspace value, Userspace value_size) +KResult IPv4Socket::getsockopt(OpenFileDescription& description, int level, int option, Userspace value, Userspace value_size) { if (level != IPPROTO_IP) return Socket::getsockopt(description, level, option, value, value_size); @@ -563,7 +563,7 @@ KResult IPv4Socket::getsockopt(FileDescription& description, int level, int opti } } -KResult IPv4Socket::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult IPv4Socket::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { REQUIRE_PROMISE(inet); diff --git a/Kernel/Net/IPv4Socket.h b/Kernel/Net/IPv4Socket.h index 0a52e5a181..4d6cbcc35b 100644 --- a/Kernel/Net/IPv4Socket.h +++ b/Kernel/Net/IPv4Socket.h @@ -33,18 +33,18 @@ public: virtual KResult close() override; virtual KResult bind(Userspace, socklen_t) override; - virtual KResult connect(FileDescription&, Userspace, socklen_t, ShouldBlock = ShouldBlock::Yes) override; + virtual KResult connect(OpenFileDescription&, Userspace, socklen_t, ShouldBlock = ShouldBlock::Yes) override; virtual KResult listen(size_t) override; virtual void get_local_address(sockaddr*, socklen_t*) override; virtual void get_peer_address(sockaddr*, socklen_t*) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override; - virtual KResultOr sendto(FileDescription&, const UserOrKernelBuffer&, size_t, int, Userspace, socklen_t) override; - virtual KResultOr recvfrom(FileDescription&, UserOrKernelBuffer&, size_t, int flags, Userspace, Userspace, Time&) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; + virtual KResultOr sendto(OpenFileDescription&, const UserOrKernelBuffer&, size_t, int, Userspace, socklen_t) override; + virtual KResultOr recvfrom(OpenFileDescription&, UserOrKernelBuffer&, size_t, int flags, Userspace, Userspace, Time&) override; virtual KResult setsockopt(int level, int option, Userspace, socklen_t) override; - virtual KResult getsockopt(FileDescription&, int level, int option, Userspace, Userspace) override; + virtual KResult getsockopt(OpenFileDescription&, int level, int option, Userspace, Userspace) override; - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; bool did_receive(const IPv4Address& peer_address, u16 peer_port, ReadonlyBytes, const Time&); @@ -61,7 +61,7 @@ public: IPv4SocketTuple tuple() const { return IPv4SocketTuple(m_local_address, m_local_port, m_peer_address, m_peer_port); } - String absolute_path(const FileDescription& description) const override; + String absolute_path(const OpenFileDescription& description) const override; u8 ttl() const { return m_ttl; } @@ -81,7 +81,7 @@ protected: virtual KResult protocol_listen([[maybe_unused]] bool did_allocate_port) { return KSuccess; } virtual KResultOr protocol_receive(ReadonlyBytes /* raw_ipv4_packet */, UserOrKernelBuffer&, size_t, int) { return ENOTIMPL; } virtual KResultOr protocol_send(const UserOrKernelBuffer&, size_t) { return ENOTIMPL; } - virtual KResult protocol_connect(FileDescription&, ShouldBlock) { return KSuccess; } + virtual KResult protocol_connect(OpenFileDescription&, ShouldBlock) { return KSuccess; } virtual KResultOr protocol_allocate_local_port() { return ENOPROTOOPT; } virtual bool protocol_is_disconnected() const { return false; } @@ -95,8 +95,8 @@ protected: private: virtual bool is_ipv4() const override { return true; } - KResultOr receive_byte_buffered(FileDescription&, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace, Userspace); - KResultOr receive_packet_buffered(FileDescription&, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace, Userspace, Time&); + KResultOr receive_byte_buffered(OpenFileDescription&, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace, Userspace); + KResultOr receive_packet_buffered(OpenFileDescription&, UserOrKernelBuffer& buffer, size_t buffer_length, int flags, Userspace, Userspace, Time&); void set_can_read(bool); diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp index 489ce80b6b..43c59e0a46 100644 --- a/Kernel/Net/LocalSocket.cpp +++ b/Kernel/Net/LocalSocket.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include @@ -51,7 +51,7 @@ KResultOr> LocalSocket::try_create(int type) KResultOr LocalSocket::try_create_connected_pair(int type) { auto socket = TRY(LocalSocket::try_create(type)); - auto description1 = TRY(FileDescription::try_create(*socket)); + auto description1 = TRY(OpenFileDescription::try_create(*socket)); TRY(socket->try_set_path("[socketpair]"sv)); @@ -60,7 +60,7 @@ KResultOr LocalSocket::try_create_connected_pair(int type) socket->set_connect_side_role(Role::Connected); socket->set_role(Role::Accepted); - auto description2 = TRY(FileDescription::try_create(*socket)); + auto description2 = TRY(OpenFileDescription::try_create(*socket)); return SocketPair { move(description1), move(description2) }; } @@ -155,7 +155,7 @@ KResult LocalSocket::bind(Userspace user_address, socklen_t add return KSuccess; } -KResult LocalSocket::connect(FileDescription& description, Userspace address, socklen_t address_size, ShouldBlock) +KResult LocalSocket::connect(OpenFileDescription& description, Userspace address, socklen_t address_size, ShouldBlock) { VERIFY(!m_bound); if (address_size != sizeof(sockaddr_un)) @@ -212,7 +212,7 @@ KResult LocalSocket::connect(FileDescription& description, Userspaceblock({}, description, unblock_flags).was_interrupted()) { set_connect_side_role(Role::None); return set_so_error(EINTR); @@ -220,7 +220,7 @@ KResult LocalSocket::connect(FileDescription& description, Userspacerole(description); if (role == Role::Listener) @@ -282,7 +282,7 @@ bool LocalSocket::can_read(const FileDescription& description, size_t) const return false; } -bool LocalSocket::has_attached_peer(const FileDescription& description) const +bool LocalSocket::has_attached_peer(const OpenFileDescription& description) const { auto role = this->role(description); if (role == Role::Accepted) @@ -292,7 +292,7 @@ bool LocalSocket::has_attached_peer(const FileDescription& description) const return false; } -bool LocalSocket::can_write(const FileDescription& description, size_t) const +bool LocalSocket::can_write(const OpenFileDescription& description, size_t) const { auto role = this->role(description); if (role == Role::Accepted) @@ -302,7 +302,7 @@ bool LocalSocket::can_write(const FileDescription& description, size_t) const return false; } -KResultOr LocalSocket::sendto(FileDescription& description, const UserOrKernelBuffer& data, size_t data_size, int, Userspace, socklen_t) +KResultOr LocalSocket::sendto(OpenFileDescription& description, const UserOrKernelBuffer& data, size_t data_size, int, Userspace, socklen_t) { if (!has_attached_peer(description)) return set_so_error(EPIPE); @@ -315,7 +315,7 @@ KResultOr LocalSocket::sendto(FileDescription& description, const UserOr return nwritten_or_error; } -DoubleBuffer* LocalSocket::receive_buffer_for(FileDescription& description) +DoubleBuffer* LocalSocket::receive_buffer_for(OpenFileDescription& description) { auto role = this->role(description); if (role == Role::Accepted) @@ -325,7 +325,7 @@ DoubleBuffer* LocalSocket::receive_buffer_for(FileDescription& description) return nullptr; } -DoubleBuffer* LocalSocket::send_buffer_for(FileDescription& description) +DoubleBuffer* LocalSocket::send_buffer_for(OpenFileDescription& description) { auto role = this->role(description); if (role == Role::Connected) @@ -335,7 +335,7 @@ DoubleBuffer* LocalSocket::send_buffer_for(FileDescription& description) return nullptr; } -KResultOr LocalSocket::recvfrom(FileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_size, int, Userspace, Userspace, Time&) +KResultOr LocalSocket::recvfrom(OpenFileDescription& description, UserOrKernelBuffer& buffer, size_t buffer_size, int, Userspace, Userspace, Time&) { auto* socket_buffer = receive_buffer_for(description); if (!socket_buffer) @@ -347,7 +347,7 @@ KResultOr LocalSocket::recvfrom(FileDescription& description, UserOrKern return set_so_error(EAGAIN); } } else if (!can_read(description, 0)) { - auto unblock_flags = Thread::FileDescriptionBlocker::BlockFlags::None; + auto unblock_flags = Thread::OpenFileDescriptionBlocker::BlockFlags::None; if (Thread::current()->block({}, description, unblock_flags).was_interrupted()) return set_so_error(EINTR); } @@ -367,7 +367,7 @@ StringView LocalSocket::socket_path() const return m_path->view(); } -String LocalSocket::absolute_path(const FileDescription& description) const +String LocalSocket::absolute_path(const OpenFileDescription& description) const { StringBuilder builder; builder.append("socket:"); @@ -393,7 +393,7 @@ String LocalSocket::absolute_path(const FileDescription& description) const return builder.to_string(); } -KResult LocalSocket::getsockopt(FileDescription& description, int level, int option, Userspace value, Userspace value_size) +KResult LocalSocket::getsockopt(OpenFileDescription& description, int level, int option, Userspace value, Userspace value_size) { if (level != SOL_SOCKET) return Socket::getsockopt(description, level, option, value, value_size); @@ -432,7 +432,7 @@ KResult LocalSocket::getsockopt(FileDescription& description, int level, int opt } } -KResult LocalSocket::ioctl(FileDescription& description, unsigned request, Userspace arg) +KResult LocalSocket::ioctl(OpenFileDescription& description, unsigned request, Userspace arg) { switch (request) { case FIONREAD: { @@ -444,7 +444,7 @@ KResult LocalSocket::ioctl(FileDescription& description, unsigned request, Users return ENOTTY; } -KResult LocalSocket::chmod(FileDescription&, mode_t mode) +KResult LocalSocket::chmod(OpenFileDescription&, mode_t mode) { if (m_file) return m_file->chmod(mode); @@ -453,7 +453,7 @@ KResult LocalSocket::chmod(FileDescription&, mode_t mode) return KSuccess; } -KResult LocalSocket::chown(FileDescription&, UserID uid, GroupID gid) +KResult LocalSocket::chown(OpenFileDescription&, UserID uid, GroupID gid) { if (m_file) return m_file->chown(uid, gid); @@ -467,7 +467,7 @@ KResult LocalSocket::chown(FileDescription&, UserID uid, GroupID gid) return KSuccess; } -NonnullRefPtrVector& LocalSocket::recvfd_queue_for(const FileDescription& description) +NonnullRefPtrVector& LocalSocket::recvfd_queue_for(const OpenFileDescription& description) { auto role = this->role(description); if (role == Role::Connected) @@ -477,7 +477,7 @@ NonnullRefPtrVector& LocalSocket::recvfd_queue_for(const FileDe VERIFY_NOT_REACHED(); } -NonnullRefPtrVector& LocalSocket::sendfd_queue_for(const FileDescription& description) +NonnullRefPtrVector& LocalSocket::sendfd_queue_for(const OpenFileDescription& description) { auto role = this->role(description); if (role == Role::Connected) @@ -487,7 +487,7 @@ NonnullRefPtrVector& LocalSocket::sendfd_queue_for(const FileDe VERIFY_NOT_REACHED(); } -KResult LocalSocket::sendfd(const FileDescription& socket_description, FileDescription& passing_description) +KResult LocalSocket::sendfd(const OpenFileDescription& socket_description, OpenFileDescription& passing_description) { MutexLocker locker(mutex()); auto role = this->role(socket_description); @@ -502,7 +502,7 @@ KResult LocalSocket::sendfd(const FileDescription& socket_description, FileDescr return KSuccess; } -KResultOr> LocalSocket::recvfd(const FileDescription& socket_description) +KResultOr> LocalSocket::recvfd(const OpenFileDescription& socket_description) { MutexLocker locker(mutex()); auto role = this->role(socket_description); diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h index ce4abdba5a..315fe8d959 100644 --- a/Kernel/Net/LocalSocket.h +++ b/Kernel/Net/LocalSocket.h @@ -12,11 +12,11 @@ namespace Kernel { -class FileDescription; +class OpenFileDescription; struct SocketPair { - NonnullRefPtr description0; - NonnullRefPtr description1; + NonnullRefPtr description0; + NonnullRefPtr description1; }; class LocalSocket final : public Socket { @@ -26,40 +26,40 @@ public: static KResultOr try_create_connected_pair(int type); virtual ~LocalSocket() override; - KResult sendfd(const FileDescription& socket_description, FileDescription& passing_description); - KResultOr> recvfd(const FileDescription& socket_description); + KResult sendfd(const OpenFileDescription& socket_description, OpenFileDescription& passing_description); + KResultOr> recvfd(const OpenFileDescription& socket_description); static void for_each(Function); StringView socket_path() const; - String absolute_path(const FileDescription& description) const override; + String absolute_path(const OpenFileDescription& description) const override; // ^Socket virtual KResult bind(Userspace, socklen_t) override; - virtual KResult connect(FileDescription&, Userspace, socklen_t, ShouldBlock = ShouldBlock::Yes) override; + virtual KResult connect(OpenFileDescription&, Userspace, socklen_t, ShouldBlock = ShouldBlock::Yes) override; virtual KResult listen(size_t) override; virtual void get_local_address(sockaddr*, socklen_t*) override; virtual void get_peer_address(sockaddr*, socklen_t*) override; - virtual KResult attach(FileDescription&) override; - virtual void detach(FileDescription&) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override; - virtual KResultOr sendto(FileDescription&, const UserOrKernelBuffer&, size_t, int, Userspace, socklen_t) override; - virtual KResultOr recvfrom(FileDescription&, UserOrKernelBuffer&, size_t, int flags, Userspace, Userspace, Time&) override; - virtual KResult getsockopt(FileDescription&, int level, int option, Userspace, Userspace) override; - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; - virtual KResult chown(FileDescription&, UserID, GroupID) override; - virtual KResult chmod(FileDescription&, mode_t) override; + virtual KResult attach(OpenFileDescription&) override; + virtual void detach(OpenFileDescription&) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; + virtual KResultOr sendto(OpenFileDescription&, const UserOrKernelBuffer&, size_t, int, Userspace, socklen_t) override; + virtual KResultOr recvfrom(OpenFileDescription&, UserOrKernelBuffer&, size_t, int flags, Userspace, Userspace, Time&) override; + virtual KResult getsockopt(OpenFileDescription&, int level, int option, Userspace, Userspace) override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; + virtual KResult chown(OpenFileDescription&, UserID, GroupID) override; + virtual KResult chmod(OpenFileDescription&, mode_t) override; private: explicit LocalSocket(int type, NonnullOwnPtr client_buffer, NonnullOwnPtr server_buffer); virtual StringView class_name() const override { return "LocalSocket"; } virtual bool is_local() const override { return true; } - bool has_attached_peer(const FileDescription&) const; - DoubleBuffer* receive_buffer_for(FileDescription&); - DoubleBuffer* send_buffer_for(FileDescription&); - NonnullRefPtrVector& sendfd_queue_for(const FileDescription&); - NonnullRefPtrVector& recvfd_queue_for(const FileDescription&); + bool has_attached_peer(const OpenFileDescription&) const; + DoubleBuffer* receive_buffer_for(OpenFileDescription&); + DoubleBuffer* send_buffer_for(OpenFileDescription&); + NonnullRefPtrVector& sendfd_queue_for(const OpenFileDescription&); + NonnullRefPtrVector& recvfd_queue_for(const OpenFileDescription&); void set_connect_side_role(Role connect_side_role, bool force_evaluate_block_conditions = false) { @@ -72,7 +72,7 @@ private: KResult try_set_path(StringView); // An open socket file on the filesystem. - RefPtr m_file; + RefPtr m_file; UserID m_prebind_uid { 0 }; GroupID m_prebind_gid { 0 }; @@ -83,9 +83,9 @@ private: // an additional role for the connect side and differentiate // between them. Role m_connect_side_role { Role::None }; - FileDescription* m_connect_side_fd { nullptr }; + OpenFileDescription* m_connect_side_fd { nullptr }; - virtual Role role(const FileDescription& description) const override + virtual Role role(const OpenFileDescription& description) const override { if (m_connect_side_fd == &description) return m_connect_side_role; @@ -99,8 +99,8 @@ private: NonnullOwnPtr m_for_client; NonnullOwnPtr m_for_server; - NonnullRefPtrVector m_fds_for_client; - NonnullRefPtrVector m_fds_for_server; + NonnullRefPtrVector m_fds_for_client; + NonnullRefPtrVector m_fds_for_server; IntrusiveListNode m_list_node; diff --git a/Kernel/Net/Socket.cpp b/Kernel/Net/Socket.cpp index 24f1f535af..89124d7ebb 100644 --- a/Kernel/Net/Socket.cpp +++ b/Kernel/Net/Socket.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include @@ -133,7 +133,7 @@ KResult Socket::setsockopt(int level, int option, Userspace user_va } } -KResult Socket::getsockopt(FileDescription&, int level, int option, Userspace value, Userspace value_size) +KResult Socket::getsockopt(OpenFileDescription&, int level, int option, Userspace value, Userspace value_size) { socklen_t size; TRY(copy_from_user(&size, value_size.unsafe_userspace_ptr())); @@ -199,7 +199,7 @@ KResult Socket::getsockopt(FileDescription&, int level, int option, Userspace Socket::read(FileDescription& description, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr Socket::read(OpenFileDescription& description, u64, UserOrKernelBuffer& buffer, size_t size) { if (is_shut_down_for_reading()) return 0; @@ -207,7 +207,7 @@ KResultOr Socket::read(FileDescription& description, u64, UserOrKernelBu return recvfrom(description, buffer, size, 0, {}, 0, t); } -KResultOr Socket::write(FileDescription& description, u64, const UserOrKernelBuffer& data, size_t size) +KResultOr Socket::write(OpenFileDescription& description, u64, const UserOrKernelBuffer& data, size_t size) { if (is_shut_down_for_writing()) return set_so_error(EPIPE); diff --git a/Kernel/Net/Socket.h b/Kernel/Net/Socket.h index a5008b10df..f93c14b466 100644 --- a/Kernel/Net/Socket.h +++ b/Kernel/Net/Socket.h @@ -23,7 +23,7 @@ enum class ShouldBlock { Yes = 1 }; -class FileDescription; +class OpenFileDescription; class Socket : public File { public: @@ -68,7 +68,7 @@ public: SetupState setup_state() const { return m_setup_state; } void set_setup_state(SetupState setup_state); - virtual Role role(const FileDescription&) const { return m_role; } + virtual Role role(const OpenFileDescription&) const { return m_role; } bool is_connected() const { return m_connected; } void set_connected(bool); @@ -79,17 +79,17 @@ public: KResult shutdown(int how); virtual KResult bind(Userspace, socklen_t) = 0; - virtual KResult connect(FileDescription&, Userspace, socklen_t, ShouldBlock) = 0; + virtual KResult connect(OpenFileDescription&, Userspace, socklen_t, ShouldBlock) = 0; virtual KResult listen(size_t) = 0; virtual void get_local_address(sockaddr*, socklen_t*) = 0; virtual void get_peer_address(sockaddr*, socklen_t*) = 0; virtual bool is_local() const { return false; } virtual bool is_ipv4() const { return false; } - virtual KResultOr sendto(FileDescription&, const UserOrKernelBuffer&, size_t, int flags, Userspace, socklen_t) = 0; - virtual KResultOr recvfrom(FileDescription&, UserOrKernelBuffer&, size_t, int flags, Userspace, Userspace, Time&) = 0; + virtual KResultOr sendto(OpenFileDescription&, const UserOrKernelBuffer&, size_t, int flags, Userspace, socklen_t) = 0; + virtual KResultOr recvfrom(OpenFileDescription&, UserOrKernelBuffer&, size_t, int flags, Userspace, Userspace, Time&) = 0; virtual KResult setsockopt(int level, int option, Userspace, socklen_t); - virtual KResult getsockopt(FileDescription&, int level, int option, Userspace, Userspace); + virtual KResult getsockopt(OpenFileDescription&, int level, int option, Userspace, Userspace); ProcessID origin_pid() const { return m_origin.pid; } UserID origin_uid() const { return m_origin.uid; } @@ -102,10 +102,10 @@ public: Mutex& mutex() { return m_mutex; } // ^File - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override final; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override final; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override final; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override final; virtual KResult stat(::stat&) const override; - virtual String absolute_path(const FileDescription&) const override = 0; + virtual String absolute_path(const OpenFileDescription&) const override = 0; bool has_receive_timeout() const { return m_receive_timeout != Time::zero(); } const Time& receive_timeout() const { return m_receive_timeout; } diff --git a/Kernel/Net/TCPSocket.cpp b/Kernel/Net/TCPSocket.cpp index 06b01cbda9..a3b8dd7ac0 100644 --- a/Kernel/Net/TCPSocket.cpp +++ b/Kernel/Net/TCPSocket.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include @@ -394,7 +394,7 @@ KResult TCPSocket::protocol_listen(bool did_allocate_port) return KSuccess; } -KResult TCPSocket::protocol_connect(FileDescription& description, ShouldBlock should_block) +KResult TCPSocket::protocol_connect(OpenFileDescription& description, ShouldBlock should_block) { MutexLocker locker(mutex()); @@ -597,7 +597,7 @@ void TCPSocket::retransmit_packets() }); } -bool TCPSocket::can_write(const FileDescription& file_description, size_t size) const +bool TCPSocket::can_write(const OpenFileDescription& file_description, size_t size) const { if (!IPv4Socket::can_write(file_description, size)) return false; diff --git a/Kernel/Net/TCPSocket.h b/Kernel/Net/TCPSocket.h index 7554107371..25b54ff5e4 100644 --- a/Kernel/Net/TCPSocket.h +++ b/Kernel/Net/TCPSocket.h @@ -157,7 +157,7 @@ public: virtual KResult close() override; - virtual bool can_write(const FileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; static NetworkOrdered compute_tcp_checksum(IPv4Address const& source, IPv4Address const& destination, TCPPacket const&, u16 payload_size); @@ -172,7 +172,7 @@ private: virtual KResultOr protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, int flags) override; virtual KResultOr protocol_send(const UserOrKernelBuffer&, size_t) override; - virtual KResult protocol_connect(FileDescription&, ShouldBlock) override; + virtual KResult protocol_connect(OpenFileDescription&, ShouldBlock) override; virtual KResultOr protocol_allocate_local_port() override; virtual bool protocol_is_disconnected() const override; virtual KResult protocol_bind() override; diff --git a/Kernel/Net/UDPSocket.cpp b/Kernel/Net/UDPSocket.cpp index 477b7df6d8..8d2bd44db0 100644 --- a/Kernel/Net/UDPSocket.cpp +++ b/Kernel/Net/UDPSocket.cpp @@ -95,7 +95,7 @@ KResultOr UDPSocket::protocol_send(const UserOrKernelBuffer& data, size_ return data_length; } -KResult UDPSocket::protocol_connect(FileDescription&, ShouldBlock) +KResult UDPSocket::protocol_connect(OpenFileDescription&, ShouldBlock) { set_role(Role::Connected); set_connected(true); diff --git a/Kernel/Net/UDPSocket.h b/Kernel/Net/UDPSocket.h index bf1c457d43..07a93c2777 100644 --- a/Kernel/Net/UDPSocket.h +++ b/Kernel/Net/UDPSocket.h @@ -27,7 +27,7 @@ private: virtual KResultOr protocol_receive(ReadonlyBytes raw_ipv4_packet, UserOrKernelBuffer& buffer, size_t buffer_size, int flags) override; virtual KResultOr protocol_send(const UserOrKernelBuffer&, size_t) override; - virtual KResult protocol_connect(FileDescription&, ShouldBlock) override; + virtual KResult protocol_connect(OpenFileDescription&, ShouldBlock) override; virtual KResultOr protocol_allocate_local_port() override; virtual KResult protocol_bind() override; }; diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 01eff6177d..1c81669524 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -18,7 +18,7 @@ #endif #include #include -#include +#include #include #include #include @@ -415,7 +415,7 @@ RefPtr Process::from_pid(ProcessID pid) }); } -const Process::FileDescriptionAndFlags* Process::FileDescriptions::get_if_valid(size_t i) const +const Process::OpenFileDescriptionAndFlags* Process::OpenFileDescriptions::get_if_valid(size_t i) const { SpinlockLocker lock(m_fds_lock); if (m_fds_metadatas.size() <= i) @@ -426,7 +426,7 @@ const Process::FileDescriptionAndFlags* Process::FileDescriptions::get_if_valid( return nullptr; } -Process::FileDescriptionAndFlags* Process::FileDescriptions::get_if_valid(size_t i) +Process::OpenFileDescriptionAndFlags* Process::OpenFileDescriptions::get_if_valid(size_t i) { SpinlockLocker lock(m_fds_lock); if (m_fds_metadatas.size() <= i) @@ -438,20 +438,20 @@ Process::FileDescriptionAndFlags* Process::FileDescriptions::get_if_valid(size_t return nullptr; } -const Process::FileDescriptionAndFlags& Process::FileDescriptions::at(size_t i) const +const Process::OpenFileDescriptionAndFlags& Process::OpenFileDescriptions::at(size_t i) const { SpinlockLocker lock(m_fds_lock); VERIFY(m_fds_metadatas[i].is_allocated()); return m_fds_metadatas[i]; } -Process::FileDescriptionAndFlags& Process::FileDescriptions::at(size_t i) +Process::OpenFileDescriptionAndFlags& Process::OpenFileDescriptions::at(size_t i) { SpinlockLocker lock(m_fds_lock); VERIFY(m_fds_metadatas[i].is_allocated()); return m_fds_metadatas[i]; } -KResultOr> Process::FileDescriptions::file_description(int fd) const +KResultOr> Process::OpenFileDescriptions::file_description(int fd) const { SpinlockLocker lock(m_fds_lock); if (fd < 0) @@ -464,7 +464,7 @@ KResultOr> Process::FileDescriptions::file_descri return description.release_nonnull(); } -void Process::FileDescriptions::enumerate(Function callback) const +void Process::OpenFileDescriptions::enumerate(Function callback) const { SpinlockLocker lock(m_fds_lock); for (auto& file_description_metadata : m_fds_metadatas) { @@ -472,7 +472,7 @@ void Process::FileDescriptions::enumerate(Function callback) +void Process::OpenFileDescriptions::change_each(Function callback) { SpinlockLocker lock(m_fds_lock); for (auto& file_description_metadata : m_fds_metadatas) { @@ -480,7 +480,7 @@ void Process::FileDescriptions::change_each(Function Process::FileDescriptions::allocate(int first_candidate_fd) +KResultOr Process::OpenFileDescriptions::allocate(int first_candidate_fd) { SpinlockLocker lock(m_fds_lock); for (size_t i = first_candidate_fd; i < max_open(); ++i) { @@ -764,14 +764,14 @@ RefPtr Process::create_kernel_thread(void (*entry)(void*), void* entry_d return thread; } -void Process::FileDescriptionAndFlags::clear() +void Process::OpenFileDescriptionAndFlags::clear() { // FIXME: Verify Process::m_fds_lock is locked! m_description = nullptr; m_flags = 0; } -void Process::FileDescriptionAndFlags::set(NonnullRefPtr&& description, u32 flags) +void Process::OpenFileDescriptionAndFlags::set(NonnullRefPtr&& description, u32 flags) { // FIXME: Verify Process::m_fds_lock is locked! m_description = move(description); diff --git a/Kernel/Process.h b/Kernel/Process.h index d8ccd64378..5ae676bcfb 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -19,8 +19,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -120,7 +120,7 @@ public: friend class Thread; friend class Coredump; - friend class ProcFSProcessFileDescriptions; + friend class ProcFSProcessOpenFileDescriptions; // Helper class to temporarily unprotect a process's protected data so you can write to it. class ProtectedDataMutationScope { @@ -443,7 +443,7 @@ public: KResult exec(NonnullOwnPtr path, Vector arguments, Vector environment, int recusion_depth = 0); - KResultOr load(NonnullRefPtr main_program_description, RefPtr interpreter_description, const ElfW(Ehdr) & main_program_header); + KResultOr load(NonnullRefPtr main_program_description, RefPtr interpreter_description, const ElfW(Ehdr) & main_program_header); bool is_superuser() const { return euid() == 0; } @@ -533,12 +533,12 @@ private: bool create_perf_events_buffer_if_needed(); void delete_perf_events_buffer(); - KResult do_exec(NonnullRefPtr main_program_description, Vector arguments, Vector environment, RefPtr interpreter_description, Thread*& new_main_thread, u32& prev_flags, const ElfW(Ehdr) & main_program_header); - KResultOr do_write(FileDescription&, const UserOrKernelBuffer&, size_t); + KResult do_exec(NonnullRefPtr main_program_description, Vector arguments, Vector environment, RefPtr interpreter_description, Thread*& new_main_thread, u32& prev_flags, const ElfW(Ehdr) & main_program_header); + KResultOr do_write(OpenFileDescription&, const UserOrKernelBuffer&, size_t); KResultOr do_statvfs(StringView path, statvfs* buf); - KResultOr> find_elf_interpreter_for_executable(StringView path, ElfW(Ehdr) const& main_executable_header, size_t main_executable_header_size, size_t file_size); + KResultOr> find_elf_interpreter_for_executable(StringView path, ElfW(Ehdr) const& main_executable_header, size_t main_executable_header_size, size_t file_size); KResult do_kill(Process&, int signal); KResult do_killpg(ProcessGroupID pgrp, int signal); @@ -554,7 +554,7 @@ private: void clear_futex_queues_on_exec(); - void setup_socket_fd(int fd, NonnullRefPtr description, int type); + void setup_socket_fd(int fd, NonnullRefPtr description, int type); public: NonnullRefPtr procfs_traits() const { return *m_procfs_traits; } @@ -599,7 +599,7 @@ private: OwnPtr m_tracer; public: - class FileDescriptionAndFlags { + class OpenFileDescriptionAndFlags { public: bool is_valid() const { return !m_description.is_null(); } bool is_allocated() const { return m_is_allocated; } @@ -616,30 +616,30 @@ public: m_is_allocated = false; } - FileDescription* description() { return m_description; } - const FileDescription* description() const { return m_description; } + OpenFileDescription* description() { return m_description; } + const OpenFileDescription* description() const { return m_description; } u32 flags() const { return m_flags; } void set_flags(u32 flags) { m_flags = flags; } void clear(); - void set(NonnullRefPtr&&, u32 flags = 0); + void set(NonnullRefPtr&&, u32 flags = 0); private: - RefPtr m_description; + RefPtr m_description; bool m_is_allocated { false }; u32 m_flags { 0 }; }; class ScopedDescriptionAllocation; - class FileDescriptions { - AK_MAKE_NONCOPYABLE(FileDescriptions); + class OpenFileDescriptions { + AK_MAKE_NONCOPYABLE(OpenFileDescriptions); friend class Process; public: - ALWAYS_INLINE const FileDescriptionAndFlags& operator[](size_t i) const { return at(i); } - ALWAYS_INLINE FileDescriptionAndFlags& operator[](size_t i) { return at(i); } + ALWAYS_INLINE const OpenFileDescriptionAndFlags& operator[](size_t i) const { return at(i); } + ALWAYS_INLINE OpenFileDescriptionAndFlags& operator[](size_t i) { return at(i); } - KResult try_clone(const Kernel::Process::FileDescriptions& other) + KResult try_clone(const Kernel::Process::OpenFileDescriptions& other) { SpinlockLocker lock_other(other.m_fds_lock); if (!try_resize(other.m_fds_metadatas.size())) @@ -651,14 +651,14 @@ public: return KSuccess; } - const FileDescriptionAndFlags& at(size_t i) const; - FileDescriptionAndFlags& at(size_t i); + const OpenFileDescriptionAndFlags& at(size_t i) const; + OpenFileDescriptionAndFlags& at(size_t i); - FileDescriptionAndFlags const* get_if_valid(size_t i) const; - FileDescriptionAndFlags* get_if_valid(size_t i); + OpenFileDescriptionAndFlags const* get_if_valid(size_t i) const; + OpenFileDescriptionAndFlags* get_if_valid(size_t i); - void enumerate(Function) const; - void change_each(Function); + void enumerate(Function) const; + void change_each(Function); KResultOr allocate(int first_candidate_fd = 0); size_t open_count() const; @@ -676,13 +676,13 @@ public: m_fds_metadatas.clear(); } - KResultOr> file_description(int fd) const; + KResultOr> file_description(int fd) const; private: - FileDescriptions() = default; + OpenFileDescriptions() = default; static constexpr size_t m_max_open_file_descriptors { FD_SETSIZE }; mutable Spinlock m_fds_lock; - Vector m_fds_metadatas; + Vector m_fds_metadatas; }; class ScopedDescriptionAllocation { @@ -690,7 +690,7 @@ public: public: ScopedDescriptionAllocation() = default; - ScopedDescriptionAllocation(int tracked_fd, FileDescriptionAndFlags* description) + ScopedDescriptionAllocation(int tracked_fd, OpenFileDescriptionAndFlags* description) : fd(tracked_fd) , m_description(description) { @@ -713,7 +713,7 @@ public: const int fd { -1 }; private: - FileDescriptionAndFlags* m_description { nullptr }; + OpenFileDescriptionAndFlags* m_description { nullptr }; }; class ProcessProcFSTraits : public ProcFSExposedComponent { @@ -742,8 +742,8 @@ public: WeakPtr m_process; }; - FileDescriptions& fds() { return m_fds; } - const FileDescriptions& fds() const { return m_fds; } + OpenFileDescriptions& fds() { return m_fds; } + const OpenFileDescriptions& fds() const { return m_fds; } private: SpinlockProtected& thread_list() { return m_thread_list; } @@ -751,7 +751,7 @@ private: SpinlockProtected m_thread_list; - FileDescriptions m_fds; + OpenFileDescriptions m_fds; const bool m_is_kernel_process; Atomic m_state { State::Running }; diff --git a/Kernel/ProcessExposed.cpp b/Kernel/ProcessExposed.cpp index b5a3af6605..6910cf9c50 100644 --- a/Kernel/ProcessExposed.cpp +++ b/Kernel/ProcessExposed.cpp @@ -64,7 +64,7 @@ InodeIndex build_segmented_index_for_thread_stack(ProcessID pid, ThreadID thread InodeIndex build_segmented_index_for_file_description(ProcessID pid, unsigned fd) { - return build_segmented_index_with_unknown_property(pid, ProcessSubDirectory::FileDescriptions, fd); + return build_segmented_index_with_unknown_property(pid, ProcessSubDirectory::OpenFileDescriptions, fd); } } @@ -107,7 +107,7 @@ ProcFSExposedLink::ProcFSExposedLink(StringView name) : ProcFSExposedComponent(name) { } -KResultOr ProcFSGlobalInformation::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const +KResultOr ProcFSGlobalInformation::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const { dbgln_if(PROCFS_DEBUG, "ProcFSGlobalInformation @ {}: read_bytes offset: {} count: {}", name(), offset, count); @@ -135,7 +135,7 @@ KResultOr ProcFSGlobalInformation::read_bytes(off_t offset, size_t count return nread; } -KResult ProcFSGlobalInformation::refresh_data(FileDescription& description) const +KResult ProcFSGlobalInformation::refresh_data(OpenFileDescription& description) const { MutexLocker lock(m_refresh_lock); auto& cached_data = description.data(); @@ -153,7 +153,7 @@ KResult ProcFSGlobalInformation::refresh_data(FileDescription& description) cons return KSuccess; } -KResultOr ProcFSExposedLink::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription*) const +KResultOr ProcFSExposedLink::read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription*) const { VERIFY(offset == 0); MutexLocker locker(m_lock); diff --git a/Kernel/ProcessExposed.h b/Kernel/ProcessExposed.h index 8cc95028e0..d768426cb0 100644 --- a/Kernel/ProcessExposed.h +++ b/Kernel/ProcessExposed.h @@ -14,8 +14,8 @@ #include #include #include -#include #include +#include #include #include @@ -26,7 +26,7 @@ enum class MainProcessProperty { Reserved = 0, Unveil = 1, Pledge = 2, - FileDescriptions = 3, + OpenFileDescriptions = 3, BinaryLink = 4, CurrentWorkDirectoryLink = 5, PerformanceEvents = 6, @@ -35,7 +35,7 @@ enum class MainProcessProperty { enum class ProcessSubDirectory { Reserved = 0, - FileDescriptions = 1, + OpenFileDescriptions = 1, Stacks = 2, }; @@ -66,10 +66,10 @@ private: class ProcFSExposedComponent : public RefCounted { public: StringView name() const { return m_name->view(); } - virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, FileDescription*) const { VERIFY_NOT_REACHED(); } + virtual KResultOr read_bytes(off_t, size_t, UserOrKernelBuffer&, OpenFileDescription*) const { VERIFY_NOT_REACHED(); } virtual KResult traverse_as_directory(unsigned, Function) const { VERIFY_NOT_REACHED(); } virtual KResultOr> lookup(StringView) { VERIFY_NOT_REACHED(); }; - virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer&, FileDescription*) { return KResult(EROFS); } + virtual KResultOr write_bytes(off_t, size_t, const UserOrKernelBuffer&, OpenFileDescription*) { return KResult(EROFS); } virtual mode_t required_mode() const { return 0444; } virtual UserID owner_user() const { return 0; } @@ -77,7 +77,7 @@ public: time_t modified_time() const { return TimeManagement::now().to_timeval().tv_sec; } virtual void prepare_for_deletion() { } - virtual KResult refresh_data(FileDescription&) const + virtual KResult refresh_data(OpenFileDescription&) const { return KSuccess; } @@ -128,7 +128,7 @@ class ProcFSExposedLink : public ProcFSExposedComponent { public: virtual KResultOr> to_inode(const ProcFS& procfs_instance) const override final; - virtual KResultOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const override; + virtual KResultOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const override; protected: virtual bool acquire_link(KBufferBuilder& builder) = 0; @@ -149,7 +149,7 @@ private: ProcFSRootDirectory(); }; -struct ProcFSInodeData : public FileDescriptionData { +struct ProcFSInodeData : public OpenFileDescriptionData { OwnPtr buffer; }; @@ -157,7 +157,7 @@ class ProcFSGlobalInformation : public ProcFSExposedComponent { public: virtual ~ProcFSGlobalInformation() override {}; - virtual KResultOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, FileDescription* description) const override; + virtual KResultOr read_bytes(off_t offset, size_t count, UserOrKernelBuffer& buffer, OpenFileDescription* description) const override; virtual mode_t required_mode() const override { return 0444; } @@ -166,7 +166,7 @@ protected: : ProcFSExposedComponent(name) { } - virtual KResult refresh_data(FileDescription&) const override; + virtual KResult refresh_data(OpenFileDescription&) const override; virtual KResult try_generate(KBufferBuilder&) = 0; mutable Mutex m_refresh_lock; diff --git a/Kernel/ProcessProcFSTraits.cpp b/Kernel/ProcessProcFSTraits.cpp index 71d8c9afc6..2fdb453aaa 100644 --- a/Kernel/ProcessProcFSTraits.cpp +++ b/Kernel/ProcessProcFSTraits.cpp @@ -53,11 +53,11 @@ KResult Process::ProcessProcFSTraits::traverse_as_directory(unsigned fsid, Funct callback({ ".", { fsid, SegmentedProcFSIndex::build_segmented_index_for_pid_directory(process->pid()) }, DT_DIR }); callback({ "..", { fsid, ProcFSComponentRegistry::the().root_directory().component_index() }, DT_DIR }); - callback({ "fd", { fsid, SegmentedProcFSIndex::build_segmented_index_for_sub_directory(process->pid(), SegmentedProcFSIndex::ProcessSubDirectory::FileDescriptions) }, DT_DIR }); + callback({ "fd", { fsid, SegmentedProcFSIndex::build_segmented_index_for_sub_directory(process->pid(), SegmentedProcFSIndex::ProcessSubDirectory::OpenFileDescriptions) }, DT_DIR }); callback({ "stacks", { fsid, SegmentedProcFSIndex::build_segmented_index_for_sub_directory(process->pid(), SegmentedProcFSIndex::ProcessSubDirectory::Stacks) }, DT_DIR }); callback({ "unveil", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::Unveil) }, DT_REG }); callback({ "pledge", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::Pledge) }, DT_REG }); - callback({ "fds", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::FileDescriptions) }, DT_DIR }); + callback({ "fds", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::OpenFileDescriptions) }, DT_DIR }); callback({ "exe", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::BinaryLink) }, DT_LNK }); callback({ "cwd", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::CurrentWorkDirectoryLink) }, DT_LNK }); callback({ "perf_events", { fsid, SegmentedProcFSIndex::build_segmented_index_for_main_property_in_pid_directory(process->pid(), SegmentedProcFSIndex::MainProcessProperty::PerformanceEvents) }, DT_REG }); diff --git a/Kernel/ProcessSpecificExposed.cpp b/Kernel/ProcessSpecificExposed.cpp index b2b670762f..5f649b4974 100644 --- a/Kernel/ProcessSpecificExposed.cpp +++ b/Kernel/ProcessSpecificExposed.cpp @@ -184,7 +184,7 @@ KResult Process::procfs_get_fds_stats(KBufferBuilder& builder) const return; } bool cloexec = file_description_metadata.flags() & FD_CLOEXEC; - RefPtr description = file_description_metadata.description(); + RefPtr description = file_description_metadata.description(); auto description_object = array.add_object(); description_object.add("fd", count); description_object.add("absolute_path", description->absolute_path()); diff --git a/Kernel/Storage/PATADiskDevice.cpp b/Kernel/Storage/PATADiskDevice.cpp index 9cd17ef730..0f7d9cda4c 100644 --- a/Kernel/Storage/PATADiskDevice.cpp +++ b/Kernel/Storage/PATADiskDevice.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include #include #include diff --git a/Kernel/Storage/Partition/DiskPartition.cpp b/Kernel/Storage/Partition/DiskPartition.cpp index d3d0140363..899af240e6 100644 --- a/Kernel/Storage/Partition/DiskPartition.cpp +++ b/Kernel/Storage/Partition/DiskPartition.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include namespace Kernel { @@ -37,28 +37,28 @@ void DiskPartition::start_request(AsyncBlockDeviceRequest& request) request.block_index() + m_metadata.start_block(), request.block_count(), request.buffer(), request.buffer_size())); } -KResultOr DiskPartition::read(FileDescription& fd, u64 offset, UserOrKernelBuffer& outbuf, size_t len) +KResultOr DiskPartition::read(OpenFileDescription& fd, u64 offset, UserOrKernelBuffer& outbuf, size_t len) { unsigned adjust = m_metadata.start_block() * block_size(); dbgln_if(OFFD_DEBUG, "DiskPartition::read offset={}, adjust={}, len={}", fd.offset(), adjust, len); return m_device->read(fd, offset + adjust, outbuf, len); } -bool DiskPartition::can_read(const FileDescription& fd, size_t offset) const +bool DiskPartition::can_read(const OpenFileDescription& fd, size_t offset) const { unsigned adjust = m_metadata.start_block() * block_size(); dbgln_if(OFFD_DEBUG, "DiskPartition::can_read offset={}, adjust={}", offset, adjust); return m_device->can_read(fd, offset + adjust); } -KResultOr DiskPartition::write(FileDescription& fd, u64 offset, const UserOrKernelBuffer& inbuf, size_t len) +KResultOr DiskPartition::write(OpenFileDescription& fd, u64 offset, const UserOrKernelBuffer& inbuf, size_t len) { unsigned adjust = m_metadata.start_block() * block_size(); dbgln_if(OFFD_DEBUG, "DiskPartition::write offset={}, adjust={}, len={}", offset, adjust, len); return m_device->write(fd, offset + adjust, inbuf, len); } -bool DiskPartition::can_write(const FileDescription& fd, size_t offset) const +bool DiskPartition::can_write(const OpenFileDescription& fd, size_t offset) const { unsigned adjust = m_metadata.start_block() * block_size(); dbgln_if(OFFD_DEBUG, "DiskPartition::can_write offset={}, adjust={}", offset, adjust); diff --git a/Kernel/Storage/Partition/DiskPartition.h b/Kernel/Storage/Partition/DiskPartition.h index c7a473b9b4..1c4896ff4d 100644 --- a/Kernel/Storage/Partition/DiskPartition.h +++ b/Kernel/Storage/Partition/DiskPartition.h @@ -20,10 +20,10 @@ public: virtual void start_request(AsyncBlockDeviceRequest&) override; // ^BlockDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; // ^Device virtual mode_t required_mode() const override { return 0600; } diff --git a/Kernel/Storage/RamdiskDevice.cpp b/Kernel/Storage/RamdiskDevice.cpp index 76cf6c7fd3..0ddb4e9160 100644 --- a/Kernel/Storage/RamdiskDevice.cpp +++ b/Kernel/Storage/RamdiskDevice.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include diff --git a/Kernel/Storage/SATADiskDevice.cpp b/Kernel/Storage/SATADiskDevice.cpp index 3e3fcf2de8..9e7464ed4d 100644 --- a/Kernel/Storage/SATADiskDevice.cpp +++ b/Kernel/Storage/SATADiskDevice.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include #include #include diff --git a/Kernel/Storage/StorageDevice.cpp b/Kernel/Storage/StorageDevice.cpp index f5cf6c83dd..594fb5470f 100644 --- a/Kernel/Storage/StorageDevice.cpp +++ b/Kernel/Storage/StorageDevice.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include @@ -37,7 +37,7 @@ NonnullRefPtr StorageDevice::controller() const return m_storage_controller; } -KResultOr StorageDevice::read(FileDescription&, u64 offset, UserOrKernelBuffer& outbuf, size_t len) +KResultOr StorageDevice::read(OpenFileDescription&, u64 offset, UserOrKernelBuffer& outbuf, size_t len) { unsigned index = offset / block_size(); u16 whole_blocks = len / block_size(); @@ -99,12 +99,12 @@ KResultOr StorageDevice::read(FileDescription&, u64 offset, UserOrKernel return pos + remaining; } -bool StorageDevice::can_read(const FileDescription&, size_t offset) const +bool StorageDevice::can_read(const OpenFileDescription&, size_t offset) const { return offset < (max_addressable_block() * block_size()); } -KResultOr StorageDevice::write(FileDescription&, u64 offset, const UserOrKernelBuffer& inbuf, size_t len) +KResultOr StorageDevice::write(OpenFileDescription&, u64 offset, const UserOrKernelBuffer& inbuf, size_t len) { unsigned index = offset / block_size(); u16 whole_blocks = len / block_size(); @@ -189,7 +189,7 @@ KResultOr StorageDevice::write(FileDescription&, u64 offset, const UserO return pos + remaining; } -bool StorageDevice::can_write(const FileDescription&, size_t offset) const +bool StorageDevice::can_write(const OpenFileDescription&, size_t offset) const { return offset < (max_addressable_block() * block_size()); } diff --git a/Kernel/Storage/StorageDevice.h b/Kernel/Storage/StorageDevice.h index 23f1ade455..7bc2eb4e08 100644 --- a/Kernel/Storage/StorageDevice.h +++ b/Kernel/Storage/StorageDevice.h @@ -24,10 +24,10 @@ public: NonnullRefPtr controller() const; // ^BlockDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; // ^Device virtual mode_t required_mode() const override { return 0600; } diff --git a/Kernel/Storage/StorageManagement.cpp b/Kernel/Storage/StorageManagement.cpp index 8053a93e1a..fd8fa9b23a 100644 --- a/Kernel/Storage/StorageManagement.cpp +++ b/Kernel/Storage/StorageManagement.cpp @@ -183,7 +183,7 @@ NonnullRefPtr StorageManagement::root_filesystem() const if (!boot_device_description) { PANIC("StorageManagement: Couldn't find a suitable device to boot from"); } - auto description_or_error = FileDescription::try_create(boot_device_description.release_nonnull()); + auto description_or_error = OpenFileDescription::try_create(boot_device_description.release_nonnull()); VERIFY(!description_or_error.is_error()); auto file_system = Ext2FS::try_create(description_or_error.release_value()).release_value(); diff --git a/Kernel/Syscalls/anon_create.cpp b/Kernel/Syscalls/anon_create.cpp index 1594085d5c..f25ae4b2ba 100644 --- a/Kernel/Syscalls/anon_create.cpp +++ b/Kernel/Syscalls/anon_create.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include #include @@ -28,7 +28,7 @@ KResultOr Process::sys$anon_create(size_t size, int options) auto new_fd = TRY(m_fds.allocate()); auto vmobject = TRY(Memory::AnonymousVMObject::try_create_purgeable_with_size(size, AllocationStrategy::Reserve)); auto anon_file = TRY(AnonymousFile::try_create(move(vmobject))); - auto description = TRY(FileDescription::try_create(move(anon_file))); + auto description = TRY(OpenFileDescription::try_create(move(anon_file))); description->set_writable(true); description->set_readable(true); diff --git a/Kernel/Syscalls/chown.cpp b/Kernel/Syscalls/chown.cpp index 1a014e07fb..a76dcafa5d 100644 --- a/Kernel/Syscalls/chown.cpp +++ b/Kernel/Syscalls/chown.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/dup2.cpp b/Kernel/Syscalls/dup2.cpp index 3ccef1dcb9..72d6aa7438 100644 --- a/Kernel/Syscalls/dup2.cpp +++ b/Kernel/Syscalls/dup2.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/execve.cpp b/Kernel/Syscalls/execve.cpp index eab6effa7a..1c71e88b3d 100644 --- a/Kernel/Syscalls/execve.cpp +++ b/Kernel/Syscalls/execve.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include @@ -162,7 +162,7 @@ struct RequiredLoadRange { FlatPtr end { 0 }; }; -static KResultOr get_required_load_range(FileDescription& program_description) +static KResultOr get_required_load_range(OpenFileDescription& program_description) { auto& inode = *(program_description.inode()); auto vmobject = TRY(Memory::SharedInodeVMObject::try_create_with_inode(inode)); @@ -192,7 +192,7 @@ static KResultOr get_required_load_range(FileDescription& pro return range; }; -static KResultOr get_load_offset(const ElfW(Ehdr) & main_program_header, FileDescription& main_program_description, FileDescription* interpreter_description) +static KResultOr get_load_offset(const ElfW(Ehdr) & main_program_header, OpenFileDescription& main_program_description, OpenFileDescription* interpreter_description) { constexpr FlatPtr load_range_start = 0x08000000; constexpr FlatPtr load_range_size = 65536 * PAGE_SIZE; // 2**16 * PAGE_SIZE = 256MB @@ -251,7 +251,7 @@ enum class ShouldAllowSyscalls { Yes, }; -static KResultOr load_elf_object(NonnullOwnPtr new_space, FileDescription& object_description, +static KResultOr load_elf_object(NonnullOwnPtr new_space, OpenFileDescription& object_description, FlatPtr load_offset, ShouldAllocateTls should_allocate_tls, ShouldAllowSyscalls should_allow_syscalls) { auto& inode = *(object_description.inode()); @@ -404,8 +404,8 @@ static KResultOr load_elf_object(NonnullOwnPtr } KResultOr -Process::load(NonnullRefPtr main_program_description, - RefPtr interpreter_description, const ElfW(Ehdr) & main_program_header) +Process::load(NonnullRefPtr main_program_description, + RefPtr interpreter_description, const ElfW(Ehdr) & main_program_header) { auto new_space = TRY(Memory::AddressSpace::try_create(nullptr)); @@ -433,8 +433,8 @@ Process::load(NonnullRefPtr main_program_description, return interpreter_load_result; } -KResult Process::do_exec(NonnullRefPtr main_program_description, Vector arguments, Vector environment, - RefPtr interpreter_description, Thread*& new_main_thread, u32& prev_flags, const ElfW(Ehdr) & main_program_header) +KResult Process::do_exec(NonnullRefPtr main_program_description, Vector arguments, Vector environment, + RefPtr interpreter_description, Thread*& new_main_thread, u32& prev_flags, const ElfW(Ehdr) & main_program_header) { VERIFY(is_user_process()); VERIFY(!Processor::in_critical()); @@ -707,7 +707,7 @@ static KResultOr> find_shebang_interpreter_for_executable(char co return ENOEXEC; } -KResultOr> Process::find_elf_interpreter_for_executable(StringView path, ElfW(Ehdr) const& main_executable_header, size_t main_executable_header_size, size_t file_size) +KResultOr> Process::find_elf_interpreter_for_executable(StringView path, ElfW(Ehdr) const& main_executable_header, size_t main_executable_header_size, size_t file_size) { // Not using KResultOr here because we'll want to do the same thing in userspace in the RTLD String interpreter_path; diff --git a/Kernel/Syscalls/fcntl.cpp b/Kernel/Syscalls/fcntl.cpp index af54a9ff2e..acb9c30ec8 100644 --- a/Kernel/Syscalls/fcntl.cpp +++ b/Kernel/Syscalls/fcntl.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include namespace Kernel { @@ -16,7 +16,7 @@ KResultOr Process::sys$fcntl(int fd, int cmd, u32 arg) REQUIRE_PROMISE(stdio); dbgln_if(IO_DEBUG, "sys$fcntl: fd={}, cmd={}, arg={}", fd, cmd, arg); auto description = TRY(fds().file_description(fd)); - // NOTE: The FD flags are not shared between FileDescription objects. + // NOTE: The FD flags are not shared between OpenFileDescription objects. // This means that dup() doesn't copy the FD_CLOEXEC flag! switch (cmd) { case F_DUPFD: { diff --git a/Kernel/Syscalls/fork.cpp b/Kernel/Syscalls/fork.cpp index a21a2e42b6..fec0778a5a 100644 --- a/Kernel/Syscalls/fork.cpp +++ b/Kernel/Syscalls/fork.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include diff --git a/Kernel/Syscalls/ftruncate.cpp b/Kernel/Syscalls/ftruncate.cpp index f0a4e148d9..b2a29b18b3 100644 --- a/Kernel/Syscalls/ftruncate.cpp +++ b/Kernel/Syscalls/ftruncate.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/get_dir_entries.cpp b/Kernel/Syscalls/get_dir_entries.cpp index 6cbd6c6fc7..604def772d 100644 --- a/Kernel/Syscalls/get_dir_entries.cpp +++ b/Kernel/Syscalls/get_dir_entries.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/inode_watcher.cpp b/Kernel/Syscalls/inode_watcher.cpp index 231ae76d35..08dbdb3189 100644 --- a/Kernel/Syscalls/inode_watcher.cpp +++ b/Kernel/Syscalls/inode_watcher.cpp @@ -7,8 +7,8 @@ #include #include -#include #include +#include #include namespace Kernel { @@ -20,7 +20,7 @@ KResultOr Process::sys$create_inode_watcher(u32 flags) auto fd_allocation = TRY(m_fds.allocate()); auto watcher = TRY(InodeWatcher::try_create()); - auto description = TRY(FileDescription::try_create(move(watcher))); + auto description = TRY(OpenFileDescription::try_create(move(watcher))); description->set_readable(true); if (flags & static_cast(InodeWatcherFlags::Nonblock)) diff --git a/Kernel/Syscalls/ioctl.cpp b/Kernel/Syscalls/ioctl.cpp index 9f9582d6e1..c3a4dc1277 100644 --- a/Kernel/Syscalls/ioctl.cpp +++ b/Kernel/Syscalls/ioctl.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include diff --git a/Kernel/Syscalls/lseek.cpp b/Kernel/Syscalls/lseek.cpp index b2c1ddedb0..aa6ee1ce6d 100644 --- a/Kernel/Syscalls/lseek.cpp +++ b/Kernel/Syscalls/lseek.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/mmap.cpp b/Kernel/Syscalls/mmap.cpp index 28bec9aa54..bd4ad2e642 100644 --- a/Kernel/Syscalls/mmap.cpp +++ b/Kernel/Syscalls/mmap.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include #include diff --git a/Kernel/Syscalls/module.cpp b/Kernel/Syscalls/module.cpp index 359b094607..500b89f8b2 100644 --- a/Kernel/Syscalls/module.cpp +++ b/Kernel/Syscalls/module.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include diff --git a/Kernel/Syscalls/read.cpp b/Kernel/Syscalls/read.cpp index 99308cbab5..b57f7712ba 100644 --- a/Kernel/Syscalls/read.cpp +++ b/Kernel/Syscalls/read.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/select.cpp b/Kernel/Syscalls/select.cpp index 4f324f580d..8f403f3a32 100644 --- a/Kernel/Syscalls/select.cpp +++ b/Kernel/Syscalls/select.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/sendfd.cpp b/Kernel/Syscalls/sendfd.cpp index 6c0fed3cac..b6e8c4f87a 100644 --- a/Kernel/Syscalls/sendfd.cpp +++ b/Kernel/Syscalls/sendfd.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include diff --git a/Kernel/Syscalls/socket.cpp b/Kernel/Syscalls/socket.cpp index 2794f907b6..d023b69e75 100644 --- a/Kernel/Syscalls/socket.cpp +++ b/Kernel/Syscalls/socket.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include @@ -19,7 +19,7 @@ namespace Kernel { REQUIRE_PROMISE(unix); \ } while (0) -void Process::setup_socket_fd(int fd, NonnullRefPtr description, int type) +void Process::setup_socket_fd(int fd, NonnullRefPtr description, int type) { description->set_readable(true); description->set_writable(true); @@ -40,7 +40,7 @@ KResultOr Process::sys$socket(int domain, int type, int protocol) return EACCES; auto fd_allocation = TRY(m_fds.allocate()); auto socket = TRY(Socket::create(domain, type, protocol)); - auto description = TRY(FileDescription::try_create(socket)); + auto description = TRY(OpenFileDescription::try_create(socket)); setup_socket_fd(fd_allocation.fd, move(description), type); return fd_allocation.fd; } @@ -113,7 +113,7 @@ KResultOr Process::sys$accept4(Userspaceset_readable(true); accepted_socket_description->set_writable(true); diff --git a/Kernel/Syscalls/ttyname.cpp b/Kernel/Syscalls/ttyname.cpp index 1b0cb09309..e7b3871b59 100644 --- a/Kernel/Syscalls/ttyname.cpp +++ b/Kernel/Syscalls/ttyname.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include diff --git a/Kernel/Syscalls/write.cpp b/Kernel/Syscalls/write.cpp index aaec7dc66f..14154f638e 100644 --- a/Kernel/Syscalls/write.cpp +++ b/Kernel/Syscalls/write.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include namespace Kernel { @@ -54,7 +54,7 @@ KResultOr Process::sys$writev(int fd, Userspace io return nwritten; } -KResultOr Process::do_write(FileDescription& description, const UserOrKernelBuffer& data, size_t data_size) +KResultOr Process::do_write(OpenFileDescription& description, const UserOrKernelBuffer& data, size_t data_size) { size_t total_nwritten = 0; diff --git a/Kernel/TTY/MasterPTY.cpp b/Kernel/TTY/MasterPTY.cpp index 1abd5ca61f..cdf34f176f 100644 --- a/Kernel/TTY/MasterPTY.cpp +++ b/Kernel/TTY/MasterPTY.cpp @@ -62,14 +62,14 @@ String MasterPTY::pts_name() const return m_pts_name; } -KResultOr MasterPTY::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr MasterPTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { if (!m_slave && m_buffer->is_empty()) return 0; return m_buffer->read(buffer, size); } -KResultOr MasterPTY::write(FileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size) +KResultOr MasterPTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size) { if (!m_slave) return EIO; @@ -77,14 +77,14 @@ KResultOr MasterPTY::write(FileDescription&, u64, const UserOrKernelBuff return size; } -bool MasterPTY::can_read(const FileDescription&, size_t) const +bool MasterPTY::can_read(const OpenFileDescription&, size_t) const { if (!m_slave) return true; return !m_buffer->is_empty(); } -bool MasterPTY::can_write(const FileDescription&, size_t) const +bool MasterPTY::can_write(const OpenFileDescription&, size_t) const { return true; } @@ -93,7 +93,7 @@ void MasterPTY::notify_slave_closed(Badge) { dbgln_if(MASTERPTY_DEBUG, "MasterPTY({}): slave closed, my retains: {}, slave retains: {}", m_index, ref_count(), m_slave->ref_count()); // +1 ref for my MasterPTY::m_slave - // +1 ref for FileDescription::m_device + // +1 ref for OpenFileDescription::m_device if (m_slave->ref_count() == 2) m_slave = nullptr; } @@ -115,7 +115,7 @@ bool MasterPTY::can_write_from_slave() const KResult MasterPTY::close() { InterruptDisabler disabler; - // After the closing FileDescription dies, slave is the only thing keeping me alive. + // After the closing OpenFileDescription dies, slave is the only thing keeping me alive. // From this point, let's consider ourselves closed. m_closed = true; @@ -125,7 +125,7 @@ KResult MasterPTY::close() return KSuccess; } -KResult MasterPTY::ioctl(FileDescription& description, unsigned request, Userspace arg) +KResult MasterPTY::ioctl(OpenFileDescription& description, unsigned request, Userspace arg) { REQUIRE_PROMISE(tty); if (!m_slave) @@ -135,7 +135,7 @@ KResult MasterPTY::ioctl(FileDescription& description, unsigned request, Userspa return EINVAL; } -String MasterPTY::absolute_path(const FileDescription&) const +String MasterPTY::absolute_path(const OpenFileDescription&) const { return String::formatted("ptm:{}", m_pts_name); } diff --git a/Kernel/TTY/MasterPTY.h b/Kernel/TTY/MasterPTY.h index 5ec21dced4..677bea7d3a 100644 --- a/Kernel/TTY/MasterPTY.h +++ b/Kernel/TTY/MasterPTY.h @@ -26,7 +26,7 @@ public: void notify_slave_closed(Badge); bool is_closed() const { return m_closed; } - virtual String absolute_path(const FileDescription&) const override; + virtual String absolute_path(const OpenFileDescription&) const override; // ^Device virtual mode_t required_mode() const override { return 0640; } @@ -35,13 +35,13 @@ public: private: explicit MasterPTY(unsigned index, NonnullOwnPtr buffer); // ^CharacterDevice - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; virtual KResult close() override; virtual bool is_master_pty() const override { return true; } - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override; virtual StringView class_name() const override { return "MasterPTY"; } RefPtr m_slave; diff --git a/Kernel/TTY/PTYMultiplexer.cpp b/Kernel/TTY/PTYMultiplexer.cpp index 271f1af1f2..537831b74d 100644 --- a/Kernel/TTY/PTYMultiplexer.cpp +++ b/Kernel/TTY/PTYMultiplexer.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include #include #include #include @@ -35,9 +35,9 @@ UNMAP_AFTER_INIT PTYMultiplexer::~PTYMultiplexer() { } -KResultOr> PTYMultiplexer::open(int options) +KResultOr> PTYMultiplexer::open(int options) { - return m_freelist.with_exclusive([&](auto& freelist) -> KResultOr> { + return m_freelist.with_exclusive([&](auto& freelist) -> KResultOr> { if (freelist.is_empty()) return EBUSY; @@ -46,7 +46,7 @@ KResultOr> PTYMultiplexer::open(int options) if (!master) return ENOMEM; dbgln_if(PTMX_DEBUG, "PTYMultiplexer::open: Vending master {}", master->index()); - auto description = TRY(FileDescription::try_create(*master)); + auto description = TRY(OpenFileDescription::try_create(*master)); description->set_rw_mode(options); description->set_file_flags(options); return description; diff --git a/Kernel/TTY/PTYMultiplexer.h b/Kernel/TTY/PTYMultiplexer.h index 4b5c38d00b..e6cbacb925 100644 --- a/Kernel/TTY/PTYMultiplexer.h +++ b/Kernel/TTY/PTYMultiplexer.h @@ -27,11 +27,11 @@ public: static PTYMultiplexer& the(); // ^CharacterDevice - virtual KResultOr> open(int options) override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override { return 0; } - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return 0; } - virtual bool can_read(const FileDescription&, size_t) const override { return true; } - virtual bool can_write(const FileDescription&, size_t) const override { return true; } + virtual KResultOr> open(int options) override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return 0; } + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return 0; } + virtual bool can_read(const OpenFileDescription&, size_t) const override { return true; } + virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; } void notify_master_destroyed(Badge, unsigned index); diff --git a/Kernel/TTY/SlavePTY.cpp b/Kernel/TTY/SlavePTY.cpp index a43735a15d..c25c6bef0b 100644 --- a/Kernel/TTY/SlavePTY.cpp +++ b/Kernel/TTY/SlavePTY.cpp @@ -82,19 +82,19 @@ KResultOr SlavePTY::on_tty_write(const UserOrKernelBuffer& data, size_t return m_master->on_slave_write(data, size); } -bool SlavePTY::can_write(const FileDescription&, size_t) const +bool SlavePTY::can_write(const OpenFileDescription&, size_t) const { return m_master->can_write_from_slave(); } -bool SlavePTY::can_read(const FileDescription& description, size_t offset) const +bool SlavePTY::can_read(const OpenFileDescription& description, size_t offset) const { if (m_master->is_closed()) return true; return TTY::can_read(description, offset); } -KResultOr SlavePTY::read(FileDescription& description, u64 offset, UserOrKernelBuffer& buffer, size_t size) +KResultOr SlavePTY::read(OpenFileDescription& description, u64 offset, UserOrKernelBuffer& buffer, size_t size) { if (m_master->is_closed()) return 0; diff --git a/Kernel/TTY/SlavePTY.h b/Kernel/TTY/SlavePTY.h index 2d71112047..438ed87209 100644 --- a/Kernel/TTY/SlavePTY.h +++ b/Kernel/TTY/SlavePTY.h @@ -32,9 +32,9 @@ private: virtual void echo(u8) override; // ^CharacterDevice - virtual bool can_read(const FileDescription&, size_t) const override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual bool can_write(const FileDescription&, size_t) const override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; virtual StringView class_name() const override { return "SlavePTY"; } virtual KResult close() override; diff --git a/Kernel/TTY/TTY.cpp b/Kernel/TTY/TTY.cpp index 898952d7a2..fd553c8af3 100644 --- a/Kernel/TTY/TTY.cpp +++ b/Kernel/TTY/TTY.cpp @@ -41,7 +41,7 @@ void TTY::set_default_termios() memcpy(m_termios.c_cc, ttydefchars, sizeof(ttydefchars)); } -KResultOr TTY::read(FileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) +KResultOr TTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size) { if (Process::current().pgid() != pgid()) { // FIXME: Should we propagate this error path somehow? @@ -80,7 +80,7 @@ KResultOr TTY::read(FileDescription&, u64, UserOrKernelBuffer& buffer, s return result; } -KResultOr TTY::write(FileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size) +KResultOr TTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size) { if (m_termios.c_lflag & TOSTOP && Process::current().pgid() != pgid()) { [[maybe_unused]] auto rc = Process::current().send_signal(SIGTTOU, nullptr); @@ -139,7 +139,7 @@ void TTY::process_output(u8 ch, Functor put_char) } } -bool TTY::can_read(const FileDescription&, size_t) const +bool TTY::can_read(const OpenFileDescription&, size_t) const { if (in_canonical_mode()) { return m_available_lines > 0; @@ -147,7 +147,7 @@ bool TTY::can_read(const FileDescription&, size_t) const return !m_input_buffer.is_empty(); } -bool TTY::can_write(const FileDescription&, size_t) const +bool TTY::can_write(const OpenFileDescription&, size_t) const { return true; } @@ -454,7 +454,7 @@ KResult TTY::set_termios(const termios& t) return rc; } -KResult TTY::ioctl(FileDescription&, unsigned request, Userspace arg) +KResult TTY::ioctl(OpenFileDescription&, unsigned request, Userspace arg) { REQUIRE_PROMISE(tty); auto& current_process = Process::current(); diff --git a/Kernel/TTY/TTY.h b/Kernel/TTY/TTY.h index 678e835605..60a4b9579c 100644 --- a/Kernel/TTY/TTY.h +++ b/Kernel/TTY/TTY.h @@ -21,12 +21,12 @@ class TTY : public CharacterDevice { public: virtual ~TTY() override; - virtual KResultOr read(FileDescription&, u64, UserOrKernelBuffer&, size_t) override; - virtual KResultOr write(FileDescription&, u64, const UserOrKernelBuffer&, size_t) override; - virtual bool can_read(const FileDescription&, size_t) const override; - virtual bool can_write(const FileDescription&, size_t) const override; - virtual KResult ioctl(FileDescription&, unsigned request, Userspace arg) override final; - virtual String absolute_path(const FileDescription&) const override { return tty_name(); } + virtual KResultOr read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override; + virtual KResultOr write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override; + virtual bool can_read(const OpenFileDescription&, size_t) const override; + virtual bool can_write(const OpenFileDescription&, size_t) const override; + virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace arg) override final; + virtual String absolute_path(const OpenFileDescription&) const override { return tty_name(); } virtual String const& tty_name() const = 0; diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index d7abe0d65f..4de3f03ccf 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -12,7 +12,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Thread.h b/Kernel/Thread.h index 9733ed9f7b..a500aa0790 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -606,39 +606,39 @@ public: virtual bool unblock_if_conditions_are_met(bool, void*) = 0; }; - class FileDescriptionBlocker : public FileBlocker { + class OpenFileDescriptionBlocker : public FileBlocker { public: - const FileDescription& blocked_description() const; + const OpenFileDescription& blocked_description() const; virtual bool unblock_if_conditions_are_met(bool, void*) override; virtual void will_unblock_immediately_without_blocking(UnblockImmediatelyReason) override; virtual bool setup_blocker() override; protected: - explicit FileDescriptionBlocker(FileDescription&, BlockFlags, BlockFlags&); + explicit OpenFileDescriptionBlocker(OpenFileDescription&, BlockFlags, BlockFlags&); private: - NonnullRefPtr m_blocked_description; + NonnullRefPtr m_blocked_description; const BlockFlags m_flags; BlockFlags& m_unblocked_flags; bool m_did_unblock { false }; }; - class AcceptBlocker final : public FileDescriptionBlocker { + class AcceptBlocker final : public OpenFileDescriptionBlocker { public: - explicit AcceptBlocker(FileDescription&, BlockFlags&); + explicit AcceptBlocker(OpenFileDescription&, BlockFlags&); virtual StringView state_string() const override { return "Accepting"sv; } }; - class ConnectBlocker final : public FileDescriptionBlocker { + class ConnectBlocker final : public OpenFileDescriptionBlocker { public: - explicit ConnectBlocker(FileDescription&, BlockFlags&); + explicit ConnectBlocker(OpenFileDescription&, BlockFlags&); virtual StringView state_string() const override { return "Connecting"sv; } }; - class WriteBlocker final : public FileDescriptionBlocker { + class WriteBlocker final : public OpenFileDescriptionBlocker { public: - explicit WriteBlocker(FileDescription&, BlockFlags&); + explicit WriteBlocker(OpenFileDescription&, BlockFlags&); virtual StringView state_string() const override { return "Writing"sv; } virtual const BlockTimeout& override_timeout(const BlockTimeout&) override; @@ -646,9 +646,9 @@ public: BlockTimeout m_timeout; }; - class ReadBlocker final : public FileDescriptionBlocker { + class ReadBlocker final : public OpenFileDescriptionBlocker { public: - explicit ReadBlocker(FileDescription&, BlockFlags&); + explicit ReadBlocker(OpenFileDescription&, BlockFlags&); virtual StringView state_string() const override { return "Reading"sv; } virtual const BlockTimeout& override_timeout(const BlockTimeout&) override; @@ -676,7 +676,7 @@ public: class SelectBlocker final : public FileBlocker { public: struct FDInfo { - NonnullRefPtr description; + NonnullRefPtr description; BlockFlags block_flags { BlockFlags::None }; BlockFlags unblocked_flags { BlockFlags::None }; }; diff --git a/Kernel/ThreadBlockers.cpp b/Kernel/ThreadBlockers.cpp index 83b317f41f..94711021f7 100644 --- a/Kernel/ThreadBlockers.cpp +++ b/Kernel/ThreadBlockers.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include #include #include @@ -195,20 +195,20 @@ bool Thread::FutexBlocker::unblock(bool force) return true; } -Thread::FileDescriptionBlocker::FileDescriptionBlocker(FileDescription& description, BlockFlags flags, BlockFlags& unblocked_flags) +Thread::OpenFileDescriptionBlocker::OpenFileDescriptionBlocker(OpenFileDescription& description, BlockFlags flags, BlockFlags& unblocked_flags) : m_blocked_description(description) , m_flags(flags) , m_unblocked_flags(unblocked_flags) { } -bool Thread::FileDescriptionBlocker::setup_blocker() +bool Thread::OpenFileDescriptionBlocker::setup_blocker() { m_unblocked_flags = BlockFlags::None; return add_to_blocker_set(m_blocked_description->blocker_set()); } -bool Thread::FileDescriptionBlocker::unblock_if_conditions_are_met(bool from_add_blocker, void*) +bool Thread::OpenFileDescriptionBlocker::unblock_if_conditions_are_met(bool from_add_blocker, void*) { auto unblock_flags = m_blocked_description->should_unblock(m_flags); if (unblock_flags == BlockFlags::None) @@ -227,7 +227,7 @@ bool Thread::FileDescriptionBlocker::unblock_if_conditions_are_met(bool from_add return true; } -void Thread::FileDescriptionBlocker::will_unblock_immediately_without_blocking(UnblockImmediatelyReason reason) +void Thread::OpenFileDescriptionBlocker::will_unblock_immediately_without_blocking(UnblockImmediatelyReason reason) { if (reason == UnblockImmediatelyReason::UnblockConditionAlreadyMet) return; @@ -247,23 +247,23 @@ void Thread::FileDescriptionBlocker::will_unblock_immediately_without_blocking(U unblock_if_conditions_are_met(false, nullptr); } -const FileDescription& Thread::FileDescriptionBlocker::blocked_description() const +const OpenFileDescription& Thread::OpenFileDescriptionBlocker::blocked_description() const { return m_blocked_description; } -Thread::AcceptBlocker::AcceptBlocker(FileDescription& description, BlockFlags& unblocked_flags) - : FileDescriptionBlocker(description, BlockFlags::Accept | BlockFlags::Exception, unblocked_flags) +Thread::AcceptBlocker::AcceptBlocker(OpenFileDescription& description, BlockFlags& unblocked_flags) + : OpenFileDescriptionBlocker(description, BlockFlags::Accept | BlockFlags::Exception, unblocked_flags) { } -Thread::ConnectBlocker::ConnectBlocker(FileDescription& description, BlockFlags& unblocked_flags) - : FileDescriptionBlocker(description, BlockFlags::Connect | BlockFlags::Exception, unblocked_flags) +Thread::ConnectBlocker::ConnectBlocker(OpenFileDescription& description, BlockFlags& unblocked_flags) + : OpenFileDescriptionBlocker(description, BlockFlags::Connect | BlockFlags::Exception, unblocked_flags) { } -Thread::WriteBlocker::WriteBlocker(FileDescription& description, BlockFlags& unblocked_flags) - : FileDescriptionBlocker(description, BlockFlags::Write | BlockFlags::Exception, unblocked_flags) +Thread::WriteBlocker::WriteBlocker(OpenFileDescription& description, BlockFlags& unblocked_flags) + : OpenFileDescriptionBlocker(description, BlockFlags::Write | BlockFlags::Exception, unblocked_flags) { } @@ -282,8 +282,8 @@ auto Thread::WriteBlocker::override_timeout(const BlockTimeout& timeout) -> cons return timeout; } -Thread::ReadBlocker::ReadBlocker(FileDescription& description, BlockFlags& unblocked_flags) - : FileDescriptionBlocker(description, BlockFlags::Read | BlockFlags::Exception, unblocked_flags) +Thread::ReadBlocker::ReadBlocker(OpenFileDescription& description, BlockFlags& unblocked_flags) + : OpenFileDescriptionBlocker(description, BlockFlags::Read | BlockFlags::Exception, unblocked_flags) { }