From 08cd75ac4baa2814bb6154c3ad127957b3b03b7c Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 7 Jun 2019 09:36:51 +0200 Subject: [PATCH] Kernel: Rename FileDescriptor to FileDescription. After reading a bunch of POSIX specs, I've learned that a file descriptor is the number that refers to a file description, not the description itself. So this patch renames FileDescriptor to FileDescription, and Process now has FileDescription* file_description(int fd). --- Kernel/Console.cpp | 6 +- Kernel/Console.h | 8 +- Kernel/Devices/BXVGADevice.cpp | 12 +-- Kernel/Devices/BXVGADevice.h | 12 +-- Kernel/Devices/DebugLogDevice.cpp | 2 +- Kernel/Devices/DebugLogDevice.h | 8 +- Kernel/Devices/Device.cpp | 2 +- Kernel/Devices/Device.h | 2 +- Kernel/Devices/FullDevice.cpp | 6 +- Kernel/Devices/FullDevice.h | 8 +- Kernel/Devices/KeyboardDevice.cpp | 6 +- Kernel/Devices/KeyboardDevice.h | 8 +- Kernel/Devices/NullDevice.cpp | 6 +- Kernel/Devices/NullDevice.h | 8 +- Kernel/Devices/PS2MouseDevice.cpp | 6 +- Kernel/Devices/PS2MouseDevice.h | 8 +- Kernel/Devices/RandomDevice.cpp | 6 +- Kernel/Devices/RandomDevice.h | 8 +- Kernel/Devices/ZeroDevice.cpp | 6 +- Kernel/Devices/ZeroDevice.h | 8 +- Kernel/File.cpp | 10 +-- Kernel/File.h | 20 ++--- Kernel/FileSystem/Ext2FileSystem.cpp | 4 +- Kernel/FileSystem/Ext2FileSystem.h | 4 +- Kernel/FileSystem/FIFO.cpp | 16 ++-- Kernel/FileSystem/FIFO.h | 14 +-- ...FileDescriptor.cpp => FileDescription.cpp} | 88 +++++++++---------- .../{FileDescriptor.h => FileDescription.h} | 14 +-- Kernel/FileSystem/FileSystem.h | 2 +- Kernel/FileSystem/Inode.cpp | 2 +- Kernel/FileSystem/Inode.h | 8 +- Kernel/FileSystem/InodeFile.cpp | 10 +-- Kernel/FileSystem/InodeFile.h | 12 +-- Kernel/FileSystem/ProcFS.cpp | 14 +-- Kernel/FileSystem/ProcFS.h | 4 +- Kernel/FileSystem/SyntheticFileSystem.cpp | 6 +- Kernel/FileSystem/SyntheticFileSystem.h | 4 +- Kernel/FileSystem/VirtualFileSystem.cpp | 10 +-- Kernel/FileSystem/VirtualFileSystem.h | 10 +-- Kernel/KSyms.cpp | 2 +- Kernel/Makefile | 2 +- Kernel/Net/IPv4Socket.cpp | 20 ++--- Kernel/Net/IPv4Socket.h | 20 ++--- Kernel/Net/LocalSocket.cpp | 22 ++--- Kernel/Net/LocalSocket.h | 24 ++--- Kernel/Net/Socket.cpp | 4 +- Kernel/Net/Socket.h | 14 +-- Kernel/Net/TCPSocket.cpp | 2 +- Kernel/Net/TCPSocket.h | 2 +- Kernel/Net/UDPSocket.h | 2 +- Kernel/Process.cpp | 84 +++++++++--------- Kernel/Process.h | 18 ++-- Kernel/ProcessTracer.cpp | 4 +- Kernel/ProcessTracer.h | 10 +-- Kernel/Scheduler.cpp | 2 +- Kernel/SharedMemory.cpp | 8 +- Kernel/SharedMemory.h | 12 +-- Kernel/TTY/MasterPTY.cpp | 14 +-- Kernel/TTY/MasterPTY.h | 10 +-- Kernel/TTY/PTYMultiplexer.cpp | 6 +- Kernel/TTY/PTYMultiplexer.h | 10 +-- Kernel/TTY/SlavePTY.cpp | 6 +- Kernel/TTY/SlavePTY.h | 6 +- Kernel/TTY/TTY.cpp | 10 +-- Kernel/TTY/TTY.h | 12 +-- Kernel/Thread.cpp | 6 +- Kernel/Thread.h | 8 +- LibCore/CFile.cpp | 4 +- LibCore/CFile.h | 6 +- Shell/main.cpp | 8 +- 70 files changed, 373 insertions(+), 373 deletions(-) rename Kernel/FileSystem/{FileDescriptor.cpp => FileDescription.cpp} (70%) rename Kernel/FileSystem/{FileDescriptor.h => FileDescription.h} (88%) diff --git a/Kernel/Console.cpp b/Kernel/Console.cpp index 394270a785e7d3..5ee1048557b26b 100644 --- a/Kernel/Console.cpp +++ b/Kernel/Console.cpp @@ -23,19 +23,19 @@ Console::~Console() { } -bool Console::can_read(FileDescriptor&) const +bool Console::can_read(FileDescription&) const { return false; } -ssize_t Console::read(FileDescriptor&, byte*, ssize_t) +ssize_t Console::read(FileDescription&, byte*, ssize_t) { // FIXME: Implement reading from the console. // Maybe we could use a ring buffer for this device? return 0; } -ssize_t Console::write(FileDescriptor&, const byte* data, ssize_t size) +ssize_t Console::write(FileDescription&, const byte* data, ssize_t size) { if (!size) return 0; diff --git a/Kernel/Console.h b/Kernel/Console.h index 59fe006c4e06b6..e1f4e2d2a3cd0d 100644 --- a/Kernel/Console.h +++ b/Kernel/Console.h @@ -19,10 +19,10 @@ class Console final : public CharacterDevice { virtual ~Console() override; // ^CharacterDevice - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override { return true; } - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override { return true; } + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; virtual const char* class_name() const override { return "Console"; } void set_implementation(ConsoleImplementation* implementation) { m_implementation = implementation; } diff --git a/Kernel/Devices/BXVGADevice.cpp b/Kernel/Devices/BXVGADevice.cpp index e4b2d4c356513f..e8ad647c32afec 100644 --- a/Kernel/Devices/BXVGADevice.cpp +++ b/Kernel/Devices/BXVGADevice.cpp @@ -84,7 +84,7 @@ dword BXVGADevice::find_framebuffer_address() return framebuffer_address; } -KResultOr BXVGADevice::mmap(Process& process, FileDescriptor&, LinearAddress preferred_laddr, size_t offset, size_t size, int prot) +KResultOr BXVGADevice::mmap(Process& process, FileDescription&, LinearAddress preferred_laddr, size_t offset, size_t size, int prot) { ASSERT(offset == 0); ASSERT(size == framebuffer_size_in_bytes()); @@ -104,7 +104,7 @@ KResultOr BXVGADevice::mmap(Process& process, FileDescriptor&, LinearAd return region; } -int BXVGADevice::ioctl(FileDescriptor&, unsigned request, unsigned arg) +int BXVGADevice::ioctl(FileDescription&, unsigned request, unsigned arg) { switch (request) { case BXVGA_DEV_IOCTL_SET_Y_OFFSET: @@ -124,22 +124,22 @@ int BXVGADevice::ioctl(FileDescriptor&, unsigned request, unsigned arg) }; } -bool BXVGADevice::can_read(FileDescriptor&) const +bool BXVGADevice::can_read(FileDescription&) const { ASSERT_NOT_REACHED(); } -bool BXVGADevice::can_write(FileDescriptor&) const +bool BXVGADevice::can_write(FileDescription&) const { ASSERT_NOT_REACHED(); } -ssize_t BXVGADevice::read(FileDescriptor&, byte*, ssize_t) +ssize_t BXVGADevice::read(FileDescription&, byte*, ssize_t) { ASSERT_NOT_REACHED(); } -ssize_t BXVGADevice::write(FileDescriptor&, const byte*, ssize_t) +ssize_t BXVGADevice::write(FileDescription&, const byte*, ssize_t) { ASSERT_NOT_REACHED(); } diff --git a/Kernel/Devices/BXVGADevice.h b/Kernel/Devices/BXVGADevice.h index 2270a41a9f425b..ac8b6f4fa83e59 100644 --- a/Kernel/Devices/BXVGADevice.h +++ b/Kernel/Devices/BXVGADevice.h @@ -17,18 +17,18 @@ class BXVGADevice final : public BlockDevice { void set_resolution(int width, int height); void set_y_offset(int); - virtual int ioctl(FileDescriptor&, unsigned request, unsigned arg) override; - virtual KResultOr mmap(Process&, FileDescriptor&, LinearAddress preferred_laddr, size_t offset, size_t, int prot) override; + virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override; + virtual KResultOr mmap(Process&, FileDescription&, LinearAddress preferred_laddr, size_t offset, size_t, int prot) override; size_t framebuffer_size_in_bytes() const { return m_framebuffer_size.area() * sizeof(dword) * 2; } Size framebuffer_size() const { return m_framebuffer_size; } private: virtual const char* class_name() const override { return "BXVGA"; } - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; void set_register(word index, word value); dword find_framebuffer_address(); diff --git a/Kernel/Devices/DebugLogDevice.cpp b/Kernel/Devices/DebugLogDevice.cpp index daa879ffb140f1..838101dda4665f 100644 --- a/Kernel/Devices/DebugLogDevice.cpp +++ b/Kernel/Devices/DebugLogDevice.cpp @@ -19,7 +19,7 @@ DebugLogDevice::~DebugLogDevice() { } -ssize_t DebugLogDevice::write(FileDescriptor&, const byte* data, ssize_t data_size) +ssize_t DebugLogDevice::write(FileDescription&, const byte* data, ssize_t data_size) { for (int i = 0; i < data_size; ++i) IO::out8(0xe9, data[i]); diff --git a/Kernel/Devices/DebugLogDevice.h b/Kernel/Devices/DebugLogDevice.h index 9b09205074210b..2ef4ade04610d3 100644 --- a/Kernel/Devices/DebugLogDevice.h +++ b/Kernel/Devices/DebugLogDevice.h @@ -9,9 +9,9 @@ class DebugLogDevice final : public CharacterDevice { private: // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override { return 0; } - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override { return true; } - virtual bool can_read(FileDescriptor&) const override { return true; } + virtual ssize_t read(FileDescription&, byte*, ssize_t) override { return 0; } + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_write(FileDescription&) const override { return true; } + virtual bool can_read(FileDescription&) const override { return true; } virtual const char* class_name() const override { return "DebugLogDevice"; } }; diff --git a/Kernel/Devices/Device.cpp b/Kernel/Devices/Device.cpp index fe3c28f01f132b..24a527445602db 100644 --- a/Kernel/Devices/Device.cpp +++ b/Kernel/Devices/Device.cpp @@ -14,7 +14,7 @@ Device::~Device() VFS::the().unregister_device({}, *this); } -String Device::absolute_path(const FileDescriptor&) const +String Device::absolute_path(const FileDescription&) const { return String::format("device:%u,%u (%s)", m_major, m_minor, class_name()); } diff --git a/Kernel/Devices/Device.h b/Kernel/Devices/Device.h index 7c19a9fea94bd6..3b2256cf646e9e 100644 --- a/Kernel/Devices/Device.h +++ b/Kernel/Devices/Device.h @@ -19,7 +19,7 @@ class Device : public File { unsigned major() const { return m_major; } unsigned minor() const { return m_minor; } - virtual String absolute_path(const FileDescriptor&) const override; + virtual String absolute_path(const FileDescription&) const override; uid_t uid() const { return m_uid; } uid_t gid() const { return m_gid; } diff --git a/Kernel/Devices/FullDevice.cpp b/Kernel/Devices/FullDevice.cpp index 024cd699e201a2..fd4403d1cee263 100644 --- a/Kernel/Devices/FullDevice.cpp +++ b/Kernel/Devices/FullDevice.cpp @@ -12,19 +12,19 @@ FullDevice::~FullDevice() { } -bool FullDevice::can_read(FileDescriptor&) const +bool FullDevice::can_read(FileDescription&) const { return true; } -ssize_t FullDevice::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t FullDevice::read(FileDescription&, byte* buffer, ssize_t size) { ssize_t count = min(PAGE_SIZE, size); memset(buffer, 0, (size_t)count); return count; } -ssize_t FullDevice::write(FileDescriptor&, const byte*, ssize_t size) +ssize_t FullDevice::write(FileDescription&, const byte*, ssize_t size) { if (size == 0) return 0; diff --git a/Kernel/Devices/FullDevice.h b/Kernel/Devices/FullDevice.h index 9974e47c4d44d9..fa4ffcb8bc5e4a 100644 --- a/Kernel/Devices/FullDevice.h +++ b/Kernel/Devices/FullDevice.h @@ -10,9 +10,9 @@ class FullDevice final : public CharacterDevice { private: // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override { return true; } virtual const char* class_name() const override { return "FullDevice"; } }; diff --git a/Kernel/Devices/KeyboardDevice.cpp b/Kernel/Devices/KeyboardDevice.cpp index 856fcc2fb8f975..7a8464e598c89e 100644 --- a/Kernel/Devices/KeyboardDevice.cpp +++ b/Kernel/Devices/KeyboardDevice.cpp @@ -208,12 +208,12 @@ KeyboardDevice::~KeyboardDevice() { } -bool KeyboardDevice::can_read(FileDescriptor&) const +bool KeyboardDevice::can_read(FileDescription&) const { return !m_queue.is_empty(); } -ssize_t KeyboardDevice::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t KeyboardDevice::read(FileDescription&, byte* buffer, ssize_t size) { ssize_t nread = 0; while (nread < size) { @@ -229,7 +229,7 @@ ssize_t KeyboardDevice::read(FileDescriptor&, byte* buffer, ssize_t size) return nread; } -ssize_t KeyboardDevice::write(FileDescriptor&, const byte*, ssize_t) +ssize_t KeyboardDevice::write(FileDescription&, const byte*, ssize_t) { return 0; } diff --git a/Kernel/Devices/KeyboardDevice.h b/Kernel/Devices/KeyboardDevice.h index 16f134b2a738af..1edffe3869843d 100644 --- a/Kernel/Devices/KeyboardDevice.h +++ b/Kernel/Devices/KeyboardDevice.h @@ -23,10 +23,10 @@ class KeyboardDevice final : public IRQHandler void set_client(KeyboardClient* client) { m_client = client; } // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte* buffer, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual ssize_t write(FileDescriptor&, const byte* buffer, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual ssize_t read(FileDescription&, byte* buffer, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual ssize_t write(FileDescription&, const byte* buffer, ssize_t) override; + virtual bool can_write(FileDescription&) const override { return true; } private: // ^IRQHandler diff --git a/Kernel/Devices/NullDevice.cpp b/Kernel/Devices/NullDevice.cpp index e93bd55891b0fc..c04f84e1ca693f 100644 --- a/Kernel/Devices/NullDevice.cpp +++ b/Kernel/Devices/NullDevice.cpp @@ -20,17 +20,17 @@ NullDevice::~NullDevice() { } -bool NullDevice::can_read(FileDescriptor&) const +bool NullDevice::can_read(FileDescription&) const { return true; } -ssize_t NullDevice::read(FileDescriptor&, byte*, ssize_t) +ssize_t NullDevice::read(FileDescription&, byte*, ssize_t) { return 0; } -ssize_t NullDevice::write(FileDescriptor&, const byte*, ssize_t buffer_size) +ssize_t NullDevice::write(FileDescription&, const byte*, ssize_t buffer_size) { return min(PAGE_SIZE, buffer_size); } diff --git a/Kernel/Devices/NullDevice.h b/Kernel/Devices/NullDevice.h index 47ba7baf5ac2ec..964565c690e9c9 100644 --- a/Kernel/Devices/NullDevice.h +++ b/Kernel/Devices/NullDevice.h @@ -12,9 +12,9 @@ class NullDevice final : public CharacterDevice { private: // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override { return true; } - virtual bool can_read(FileDescriptor&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_write(FileDescription&) const override { return true; } + virtual bool can_read(FileDescription&) const override; virtual const char* class_name() const override { return "NullDevice"; } }; diff --git a/Kernel/Devices/PS2MouseDevice.cpp b/Kernel/Devices/PS2MouseDevice.cpp index c7d8ff54f558ce..a7f2fe296dd290 100644 --- a/Kernel/Devices/PS2MouseDevice.cpp +++ b/Kernel/Devices/PS2MouseDevice.cpp @@ -218,12 +218,12 @@ byte PS2MouseDevice::mouse_read() return IO::in8(0x60); } -bool PS2MouseDevice::can_read(FileDescriptor&) const +bool PS2MouseDevice::can_read(FileDescription&) const { return !m_queue.is_empty(); } -ssize_t PS2MouseDevice::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t PS2MouseDevice::read(FileDescription&, byte* buffer, ssize_t size) { ssize_t nread = 0; while (nread < size) { @@ -239,7 +239,7 @@ ssize_t PS2MouseDevice::read(FileDescriptor&, byte* buffer, ssize_t size) return nread; } -ssize_t PS2MouseDevice::write(FileDescriptor&, const byte*, ssize_t) +ssize_t PS2MouseDevice::write(FileDescription&, const byte*, ssize_t) { return 0; } diff --git a/Kernel/Devices/PS2MouseDevice.h b/Kernel/Devices/PS2MouseDevice.h index de97cfe4e19a7a..e63db8a9982142 100644 --- a/Kernel/Devices/PS2MouseDevice.h +++ b/Kernel/Devices/PS2MouseDevice.h @@ -14,10 +14,10 @@ class PS2MouseDevice final : public IRQHandler static PS2MouseDevice& the(); // ^CharacterDevice - virtual bool can_read(FileDescriptor&) const override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual bool can_read(FileDescription&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_write(FileDescription&) const override { return true; } private: // ^IRQHandler diff --git a/Kernel/Devices/RandomDevice.cpp b/Kernel/Devices/RandomDevice.cpp index 354212fbcdbb2e..3e3cfdd023f524 100644 --- a/Kernel/Devices/RandomDevice.cpp +++ b/Kernel/Devices/RandomDevice.cpp @@ -26,12 +26,12 @@ static void mysrand(unsigned seed) } #endif -bool RandomDevice::can_read(FileDescriptor&) const +bool RandomDevice::can_read(FileDescription&) const { return true; } -ssize_t RandomDevice::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t RandomDevice::read(FileDescription&, byte* buffer, ssize_t size) { const int range = 'z' - 'a'; ssize_t nread = min(size, PAGE_SIZE); @@ -42,7 +42,7 @@ ssize_t RandomDevice::read(FileDescriptor&, byte* buffer, ssize_t size) return nread; } -ssize_t RandomDevice::write(FileDescriptor&, const byte*, ssize_t size) +ssize_t RandomDevice::write(FileDescription&, const byte*, ssize_t size) { // FIXME: Use input for entropy? I guess that could be a neat feature? return min(PAGE_SIZE, size); diff --git a/Kernel/Devices/RandomDevice.h b/Kernel/Devices/RandomDevice.h index ecce3c6bfb7b71..4d6dce159ebc9c 100644 --- a/Kernel/Devices/RandomDevice.h +++ b/Kernel/Devices/RandomDevice.h @@ -12,9 +12,9 @@ class RandomDevice final : public CharacterDevice { private: // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override { return true; } virtual const char* class_name() const override { return "RandomDevice"; } }; diff --git a/Kernel/Devices/ZeroDevice.cpp b/Kernel/Devices/ZeroDevice.cpp index ee809045bcae4e..aa9e98e3a8a0fb 100644 --- a/Kernel/Devices/ZeroDevice.cpp +++ b/Kernel/Devices/ZeroDevice.cpp @@ -11,19 +11,19 @@ ZeroDevice::~ZeroDevice() { } -bool ZeroDevice::can_read(FileDescriptor&) const +bool ZeroDevice::can_read(FileDescription&) const { return true; } -ssize_t ZeroDevice::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t ZeroDevice::read(FileDescription&, byte* buffer, ssize_t size) { ssize_t count = min(PAGE_SIZE, size); memset(buffer, 0, (size_t)count); return count; } -ssize_t ZeroDevice::write(FileDescriptor&, const byte*, ssize_t size) +ssize_t ZeroDevice::write(FileDescription&, const byte*, ssize_t size) { return min(PAGE_SIZE, size); } diff --git a/Kernel/Devices/ZeroDevice.h b/Kernel/Devices/ZeroDevice.h index 930f3adec2fb29..631fdd896584da 100644 --- a/Kernel/Devices/ZeroDevice.h +++ b/Kernel/Devices/ZeroDevice.h @@ -10,9 +10,9 @@ class ZeroDevice final : public CharacterDevice { private: // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override { return true; } virtual const char* class_name() const override { return "ZeroDevice"; } }; diff --git a/Kernel/File.cpp b/Kernel/File.cpp index ffc64bec9d6dc7..c0e4d37aeab70b 100644 --- a/Kernel/File.cpp +++ b/Kernel/File.cpp @@ -1,5 +1,5 @@ #include -#include +#include File::File() { @@ -9,22 +9,22 @@ File::~File() { } -KResultOr> File::open(int options) +KResultOr> File::open(int options) { UNUSED_PARAM(options); - return FileDescriptor::create(this); + return FileDescription::create(this); } void File::close() { } -int File::ioctl(FileDescriptor&, unsigned, unsigned) +int File::ioctl(FileDescription&, unsigned, unsigned) { return -ENOTTY; } -KResultOr File::mmap(Process&, FileDescriptor&, LinearAddress, size_t, size_t, int) +KResultOr File::mmap(Process&, FileDescription&, LinearAddress, size_t, size_t, int) { return KResult(-ENODEV); } diff --git a/Kernel/File.h b/Kernel/File.h index 8a74b3cde1e2f2..4211c40db5d592 100644 --- a/Kernel/File.h +++ b/Kernel/File.h @@ -8,11 +8,11 @@ #include #include -class FileDescriptor; +class FileDescription; class Process; class Region; -// File is the base class for anything that can be referenced by a FileDescriptor. +// File is the base class for anything that can be referenced by a FileDescription. // // The most important functions in File are: // @@ -43,18 +43,18 @@ class File : public Retainable { public: virtual ~File(); - virtual KResultOr> open(int options); + virtual KResultOr> open(int options); virtual void close(); - virtual bool can_read(FileDescriptor&) const = 0; - virtual bool can_write(FileDescriptor&) const = 0; + virtual bool can_read(FileDescription&) const = 0; + virtual bool can_write(FileDescription&) const = 0; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) = 0; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) = 0; - virtual int ioctl(FileDescriptor&, unsigned request, unsigned arg); - virtual KResultOr mmap(Process&, FileDescriptor&, LinearAddress preferred_laddr, size_t offset, size_t size, int prot); + virtual ssize_t read(FileDescription&, byte*, ssize_t) = 0; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) = 0; + virtual int ioctl(FileDescription&, unsigned request, unsigned arg); + virtual KResultOr mmap(Process&, FileDescription&, LinearAddress preferred_laddr, size_t offset, size_t size, int prot); - virtual String absolute_path(const FileDescriptor&) const = 0; + virtual String absolute_path(const FileDescription&) const = 0; virtual KResult truncate(off_t) { return KResult(-EINVAL); } diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index f54606da354b49..a17fa9b2df4c7e 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -479,7 +479,7 @@ RetainPtr Ext2FS::get_inode(InodeIdentifier inode) const return new_inode; } -ssize_t Ext2FSInode::read_bytes(off_t offset, ssize_t count, byte* buffer, FileDescriptor*) const +ssize_t Ext2FSInode::read_bytes(off_t offset, ssize_t count, byte* buffer, FileDescription*) const { Locker inode_locker(m_lock); ASSERT(offset >= 0); @@ -585,7 +585,7 @@ bool Ext2FSInode::resize(qword new_size) return true; } -ssize_t Ext2FSInode::write_bytes(off_t offset, ssize_t count, const byte* data, FileDescriptor*) +ssize_t Ext2FSInode::write_bytes(off_t offset, ssize_t count, const byte* data, FileDescription*) { ASSERT(offset >= 0); ASSERT(count >= 0); diff --git a/Kernel/FileSystem/Ext2FileSystem.h b/Kernel/FileSystem/Ext2FileSystem.h index 1d8aa0ebc05c07..5ac452dbe4ba36 100644 --- a/Kernel/FileSystem/Ext2FileSystem.h +++ b/Kernel/FileSystem/Ext2FileSystem.h @@ -25,12 +25,12 @@ class Ext2FSInode final : public Inode { private: // ^Inode - virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescriptor*) const override; + virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescription*) const override; virtual InodeMetadata metadata() const override; virtual bool traverse_as_directory(Function) const override; virtual InodeIdentifier lookup(StringView name) override; virtual void flush_metadata() override; - virtual ssize_t write_bytes(off_t, ssize_t, const byte* data, FileDescriptor*) override; + virtual ssize_t write_bytes(off_t, ssize_t, const byte* data, FileDescription*) override; virtual KResult add_child(InodeIdentifier child_id, const String& name, mode_t) override; virtual KResult remove_child(const String& name) override; virtual int set_atime(time_t) override; diff --git a/Kernel/FileSystem/FIFO.cpp b/Kernel/FileSystem/FIFO.cpp index 344dcee87ef12a..e14689e763d543 100644 --- a/Kernel/FileSystem/FIFO.cpp +++ b/Kernel/FileSystem/FIFO.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -30,9 +30,9 @@ Retained FIFO::create(uid_t uid) return adopt(*new FIFO(uid)); } -Retained FIFO::open_direction(FIFO::Direction direction) +Retained FIFO::open_direction(FIFO::Direction direction) { - auto descriptor = FileDescriptor::create(this); + auto descriptor = FileDescription::create(this); attach(direction); descriptor->set_fifo_direction({ }, direction); return descriptor; @@ -83,17 +83,17 @@ void FIFO::detach(Direction direction) } } -bool FIFO::can_read(FileDescriptor&) const +bool FIFO::can_read(FileDescription&) const { return !m_buffer.is_empty() || !m_writers; } -bool FIFO::can_write(FileDescriptor&) const +bool FIFO::can_write(FileDescription&) const { return m_buffer.bytes_in_write_buffer() < 4096 || !m_readers; } -ssize_t FIFO::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t FIFO::read(FileDescription&, byte* buffer, ssize_t size) { if (!m_writers && m_buffer.is_empty()) return 0; @@ -107,7 +107,7 @@ ssize_t FIFO::read(FileDescriptor&, byte* buffer, ssize_t size) return nread; } -ssize_t FIFO::write(FileDescriptor&, const byte* buffer, ssize_t size) +ssize_t FIFO::write(FileDescription&, const byte* buffer, ssize_t size) { if (!m_readers) { current->process().send_signal(SIGPIPE, ¤t->process()); @@ -119,7 +119,7 @@ ssize_t FIFO::write(FileDescriptor&, const byte* buffer, ssize_t size) return m_buffer.write(buffer, size); } -String FIFO::absolute_path(const FileDescriptor&) const +String FIFO::absolute_path(const FileDescription&) const { return String::format("fifo:%u", this); } diff --git a/Kernel/FileSystem/FIFO.h b/Kernel/FileSystem/FIFO.h index 50e1c88ea4c4a6..8cbb60513aa8cc 100644 --- a/Kernel/FileSystem/FIFO.h +++ b/Kernel/FileSystem/FIFO.h @@ -4,7 +4,7 @@ #include #include -class FileDescriptor; +class FileDescription; class FIFO final : public File { public: @@ -22,18 +22,18 @@ class FIFO final : public File { uid_t uid() const { return m_uid; } - Retained open_direction(Direction); + Retained open_direction(Direction); void attach(Direction); void detach(Direction); private: // ^File - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override; - virtual String absolute_path(const FileDescriptor&) const override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override; + virtual String absolute_path(const FileDescription&) const override; virtual const char* class_name() const override { return "FIFO"; } virtual bool is_fifo() const override { return true; } diff --git a/Kernel/FileSystem/FileDescriptor.cpp b/Kernel/FileSystem/FileDescription.cpp similarity index 70% rename from Kernel/FileSystem/FileDescriptor.cpp rename to Kernel/FileSystem/FileDescription.cpp index f760792757001c..d62e573d3b3985 100644 --- a/Kernel/FileSystem/FileDescriptor.cpp +++ b/Kernel/FileSystem/FileDescription.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include @@ -15,19 +15,19 @@ #include #include -Retained FileDescriptor::create(RetainPtr&& custody) +Retained FileDescription::create(RetainPtr&& custody) { - auto descriptor = adopt(*new FileDescriptor(InodeFile::create(custody->inode()))); + auto descriptor = adopt(*new FileDescription(InodeFile::create(custody->inode()))); descriptor->m_custody = move(custody); return descriptor; } -Retained FileDescriptor::create(RetainPtr&& file, SocketRole role) +Retained FileDescription::create(RetainPtr&& file, SocketRole role) { - return adopt(*new FileDescriptor(move(file), role)); + return adopt(*new FileDescription(move(file), role)); } -FileDescriptor::FileDescriptor(RetainPtr&& file, SocketRole role) +FileDescription::FileDescription(RetainPtr&& file, SocketRole role) : m_file(move(file)) { if (m_file->is_inode()) @@ -35,7 +35,7 @@ FileDescriptor::FileDescriptor(RetainPtr&& file, SocketRole role) set_socket_role(role); } -FileDescriptor::~FileDescriptor() +FileDescription::~FileDescription() { if (is_socket()) socket()->detach(*this); @@ -46,7 +46,7 @@ FileDescriptor::~FileDescriptor() m_inode = nullptr; } -void FileDescriptor::set_socket_role(SocketRole role) +void FileDescription::set_socket_role(SocketRole role) { if (role == m_socket_role) return; @@ -58,13 +58,13 @@ void FileDescriptor::set_socket_role(SocketRole role) socket()->attach(*this); } -Retained FileDescriptor::clone() +Retained FileDescription::clone() { - RetainPtr descriptor; + RetainPtr descriptor; if (is_fifo()) { descriptor = fifo()->open_direction(m_fifo_direction); } else { - descriptor = FileDescriptor::create(m_file.copy_ref(), m_socket_role); + descriptor = FileDescription::create(m_file.copy_ref(), m_socket_role); descriptor->m_custody = m_custody.copy_ref(); descriptor->m_inode = m_inode.copy_ref(); } @@ -76,7 +76,7 @@ Retained FileDescriptor::clone() return *descriptor; } -KResult FileDescriptor::fstat(stat& buffer) +KResult FileDescription::fstat(stat& buffer) { ASSERT(!is_fifo()); if (!m_inode) @@ -84,14 +84,14 @@ KResult FileDescriptor::fstat(stat& buffer) return metadata().stat(buffer); } -KResult FileDescriptor::fchmod(mode_t mode) +KResult FileDescription::fchmod(mode_t mode) { if (!m_inode) return KResult(-EBADF); return VFS::the().chmod(*m_inode, mode); } -off_t FileDescriptor::seek(off_t offset, int whence) +off_t FileDescription::seek(off_t offset, int whence) { if (!m_file->is_seekable()) return -EINVAL; @@ -127,7 +127,7 @@ off_t FileDescriptor::seek(off_t offset, int whence) return m_current_offset; } -ssize_t FileDescriptor::read(byte* buffer, ssize_t count) +ssize_t FileDescription::read(byte* buffer, ssize_t count) { int nread = m_file->read(*this, buffer, count); if (m_file->is_seekable()) @@ -135,7 +135,7 @@ ssize_t FileDescriptor::read(byte* buffer, ssize_t count) return nread; } -ssize_t FileDescriptor::write(const byte* data, ssize_t size) +ssize_t FileDescription::write(const byte* data, ssize_t size) { int nwritten = m_file->write(*this, data, size); if (m_file->is_seekable()) @@ -143,17 +143,17 @@ ssize_t FileDescriptor::write(const byte* data, ssize_t size) return nwritten; } -bool FileDescriptor::can_write() +bool FileDescription::can_write() { return m_file->can_write(*this); } -bool FileDescriptor::can_read() +bool FileDescription::can_read() { return m_file->can_read(*this); } -ByteBuffer FileDescriptor::read_entire_file() +ByteBuffer FileDescription::read_entire_file() { // HACK ALERT: (This entire function) ASSERT(m_file->is_inode()); @@ -161,13 +161,13 @@ ByteBuffer FileDescriptor::read_entire_file() return m_inode->read_entire(this); } -bool FileDescriptor::is_directory() const +bool FileDescription::is_directory() const { ASSERT(!is_fifo()); return metadata().is_directory(); } -ssize_t FileDescriptor::get_dir_entries(byte* buffer, ssize_t size) +ssize_t FileDescription::get_dir_entries(byte* buffer, ssize_t size) { auto metadata = this->metadata(); if (!metadata.is_valid()) @@ -195,137 +195,137 @@ ssize_t FileDescriptor::get_dir_entries(byte* buffer, ssize_t size) return stream.offset(); } -bool FileDescriptor::is_device() const +bool FileDescription::is_device() const { return m_file->is_device(); } -bool FileDescriptor::is_tty() const +bool FileDescription::is_tty() const { return m_file->is_tty(); } -const TTY* FileDescriptor::tty() const +const TTY* FileDescription::tty() const { if (!is_tty()) return nullptr; return static_cast(m_file.ptr()); } -TTY* FileDescriptor::tty() +TTY* FileDescription::tty() { if (!is_tty()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescriptor::is_master_pty() const +bool FileDescription::is_master_pty() const { return m_file->is_master_pty(); } -const MasterPTY* FileDescriptor::master_pty() const +const MasterPTY* FileDescription::master_pty() const { if (!is_master_pty()) return nullptr; return static_cast(m_file.ptr()); } -MasterPTY* FileDescriptor::master_pty() +MasterPTY* FileDescription::master_pty() { if (!is_master_pty()) return nullptr; return static_cast(m_file.ptr()); } -int FileDescriptor::close() +int FileDescription::close() { return 0; } -String FileDescriptor::absolute_path() const +String FileDescription::absolute_path() const { if (m_custody) return m_custody->absolute_path(); - dbgprintf("FileDescriptor::absolute_path() for FD without custody, File type: %s\n", m_file->class_name()); + dbgprintf("FileDescription::absolute_path() for FD without custody, File type: %s\n", m_file->class_name()); return m_file->absolute_path(*this); } -InodeMetadata FileDescriptor::metadata() const +InodeMetadata FileDescription::metadata() const { if (m_inode) return m_inode->metadata(); return { }; } -KResultOr FileDescriptor::mmap(Process& process, LinearAddress laddr, size_t offset, size_t size, int prot) +KResultOr FileDescription::mmap(Process& process, LinearAddress laddr, size_t offset, size_t size, int prot) { return m_file->mmap(process, *this, laddr, offset, size, prot); } -KResult FileDescriptor::truncate(off_t length) +KResult FileDescription::truncate(off_t length) { return m_file->truncate(length); } -bool FileDescriptor::is_shared_memory() const +bool FileDescription::is_shared_memory() const { return m_file->is_shared_memory(); } -SharedMemory* FileDescriptor::shared_memory() +SharedMemory* FileDescription::shared_memory() { if (!is_shared_memory()) return nullptr; return static_cast(m_file.ptr()); } -const SharedMemory* FileDescriptor::shared_memory() const +const SharedMemory* FileDescription::shared_memory() const { if (!is_shared_memory()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescriptor::is_fifo() const +bool FileDescription::is_fifo() const { return m_file->is_fifo(); } -FIFO* FileDescriptor::fifo() +FIFO* FileDescription::fifo() { if (!is_fifo()) return nullptr; return static_cast(m_file.ptr()); } -bool FileDescriptor::is_socket() const +bool FileDescription::is_socket() const { return m_file->is_socket(); } -Socket* FileDescriptor::socket() +Socket* FileDescription::socket() { if (!is_socket()) return nullptr; return static_cast(m_file.ptr()); } -const Socket* FileDescriptor::socket() const +const Socket* FileDescription::socket() const { if (!is_socket()) return nullptr; return static_cast(m_file.ptr()); } -void FileDescriptor::set_file_flags(dword flags) +void FileDescription::set_file_flags(dword flags) { m_is_blocking = !(flags & O_NONBLOCK); m_should_append = flags & O_APPEND; m_file_flags = flags; } -KResult FileDescriptor::chown(uid_t uid, gid_t gid) +KResult FileDescription::chown(uid_t uid, gid_t gid) { if (!m_inode) return KResult(-EINVAL); diff --git a/Kernel/FileSystem/FileDescriptor.h b/Kernel/FileSystem/FileDescription.h similarity index 88% rename from Kernel/FileSystem/FileDescriptor.h rename to Kernel/FileSystem/FileDescription.h index 7d8cdf8d7d4bc4..7c1d1ef4bb131d 100644 --- a/Kernel/FileSystem/FileDescriptor.h +++ b/Kernel/FileSystem/FileDescription.h @@ -19,13 +19,13 @@ class Region; class CharacterDevice; class SharedMemory; -class FileDescriptor : public Retainable { +class FileDescription : public Retainable { public: - static Retained create(RetainPtr&&); - static Retained create(RetainPtr&&, SocketRole = SocketRole::None); - ~FileDescriptor(); + static Retained create(RetainPtr&&); + static Retained create(RetainPtr&&, SocketRole = SocketRole::None); + ~FileDescription(); - Retained clone(); + Retained clone(); int close(); @@ -105,8 +105,8 @@ class FileDescriptor : public Retainable { private: friend class VFS; - FileDescriptor(RetainPtr&&, SocketRole = SocketRole::None); - FileDescriptor(FIFO&, FIFO::Direction); + FileDescription(RetainPtr&&, SocketRole = SocketRole::None); + FileDescription(FIFO&, FIFO::Direction); RetainPtr m_custody; RetainPtr m_inode; diff --git a/Kernel/FileSystem/FileSystem.h b/Kernel/FileSystem/FileSystem.h index 097d479b00840a..81d953c832918d 100644 --- a/Kernel/FileSystem/FileSystem.h +++ b/Kernel/FileSystem/FileSystem.h @@ -19,7 +19,7 @@ static const dword mepoch = 476763780; class Inode; -class FileDescriptor; +class FileDescription; class LocalSocket; class VMObject; diff --git a/Kernel/FileSystem/Inode.cpp b/Kernel/FileSystem/Inode.cpp index 38eb0395d1d2c0..2be2ec2ea60bea 100644 --- a/Kernel/FileSystem/Inode.cpp +++ b/Kernel/FileSystem/Inode.cpp @@ -28,7 +28,7 @@ void Inode::sync() } } -ByteBuffer Inode::read_entire(FileDescriptor* descriptor) const +ByteBuffer Inode::read_entire(FileDescription* descriptor) const { size_t initial_size = metadata().size ? metadata().size : 4096; StringBuilder builder(initial_size); diff --git a/Kernel/FileSystem/Inode.h b/Kernel/FileSystem/Inode.h index 8010597ccb076c..44f3b3666a933c 100644 --- a/Kernel/FileSystem/Inode.h +++ b/Kernel/FileSystem/Inode.h @@ -10,7 +10,7 @@ #include #include -class FileDescriptor; +class FileDescription; class LocalSocket; class VMObject; @@ -37,12 +37,12 @@ class Inode : public Retainable { InodeIdentifier identifier() const { return { fsid(), index() }; } virtual InodeMetadata metadata() const = 0; - ByteBuffer read_entire(FileDescriptor* = nullptr) const; + ByteBuffer read_entire(FileDescription* = nullptr) const; - virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescriptor*) const = 0; + virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescription*) const = 0; virtual bool traverse_as_directory(Function) const = 0; virtual InodeIdentifier lookup(StringView name) = 0; - virtual ssize_t write_bytes(off_t, ssize_t, const byte* data, FileDescriptor*) = 0; + virtual ssize_t write_bytes(off_t, ssize_t, const byte* data, FileDescription*) = 0; virtual KResult add_child(InodeIdentifier child_id, const String& name, mode_t) = 0; virtual KResult remove_child(const String& name) = 0; virtual size_t directory_entry_count() const = 0; diff --git a/Kernel/FileSystem/InodeFile.cpp b/Kernel/FileSystem/InodeFile.cpp index f30fb655f1fc29..577dec1a21cce6 100644 --- a/Kernel/FileSystem/InodeFile.cpp +++ b/Kernel/FileSystem/InodeFile.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include @@ -13,17 +13,17 @@ InodeFile::~InodeFile() { } -ssize_t InodeFile::read(FileDescriptor& descriptor, byte* buffer, ssize_t count) +ssize_t InodeFile::read(FileDescription& descriptor, byte* buffer, ssize_t count) { return m_inode->read_bytes(descriptor.offset(), count, buffer, &descriptor); } -ssize_t InodeFile::write(FileDescriptor& descriptor, const byte* data, ssize_t count) +ssize_t InodeFile::write(FileDescription& descriptor, const byte* data, ssize_t count) { return m_inode->write_bytes(descriptor.offset(), count, data, &descriptor); } -KResultOr InodeFile::mmap(Process& process, FileDescriptor& descriptor, LinearAddress preferred_laddr, size_t offset, size_t size, int prot) +KResultOr InodeFile::mmap(Process& process, FileDescription& descriptor, LinearAddress preferred_laddr, size_t offset, size_t size, int prot) { ASSERT(offset == 0); // FIXME: If PROT_EXEC, check that the underlying file system isn't mounted noexec. @@ -34,7 +34,7 @@ KResultOr InodeFile::mmap(Process& process, FileDescriptor& descriptor, return region; } -String InodeFile::absolute_path(const FileDescriptor& descriptor) const +String InodeFile::absolute_path(const FileDescription& descriptor) const { ASSERT_NOT_REACHED(); ASSERT(descriptor.custody()); diff --git a/Kernel/FileSystem/InodeFile.h b/Kernel/FileSystem/InodeFile.h index 5522822d1ebfad..cae2818697e593 100644 --- a/Kernel/FileSystem/InodeFile.h +++ b/Kernel/FileSystem/InodeFile.h @@ -16,14 +16,14 @@ class InodeFile final : public File { const Inode& inode() const { return *m_inode; } Inode& inode() { return *m_inode; } - virtual bool can_read(FileDescriptor&) const override { return true; } - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual bool can_read(FileDescription&) const override { return true; } + virtual bool can_write(FileDescription&) const override { return true; } - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual KResultOr mmap(Process&, FileDescriptor&, LinearAddress preferred_laddr, size_t offset, size_t size, int prot) override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual KResultOr mmap(Process&, FileDescription&, LinearAddress preferred_laddr, size_t offset, size_t size, int prot) override; - virtual String absolute_path(const FileDescriptor&) const override; + virtual String absolute_path(const FileDescription&) const override; virtual KResult truncate(off_t) override; diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index b09b89e1638f4f..73aeb437432bcd 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -1,7 +1,7 @@ #include "ProcFS.h" #include "Process.h" #include -#include +#include #include #include #include "StdLib.h" @@ -189,7 +189,7 @@ ByteBuffer procfs$pid_fds(InodeIdentifier identifier) return { }; StringBuilder builder; for (int i = 0; i < process.max_open_file_descriptors(); ++i) { - auto* descriptor = process.file_descriptor(i); + auto* descriptor = process.file_description(i); if (!descriptor) continue; builder.appendf("% 3u %s\n", i, descriptor->absolute_path().characters()); @@ -204,7 +204,7 @@ ByteBuffer procfs$pid_fd_entry(InodeIdentifier identifier) return { }; auto& process = handle->process(); int fd = to_fd(identifier); - auto* descriptor = process.file_descriptor(fd); + auto* descriptor = process.file_description(fd); if (!descriptor) return { }; return descriptor->absolute_path().to_byte_buffer(); @@ -835,7 +835,7 @@ InodeMetadata ProcFSInode::metadata() const return metadata; } -ssize_t ProcFSInode::read_bytes(off_t offset, ssize_t count, byte* buffer, FileDescriptor* descriptor) const +ssize_t ProcFSInode::read_bytes(off_t offset, ssize_t count, byte* buffer, FileDescription* descriptor) const { #ifdef PROCFS_DEBUG dbgprintf("ProcFS: read_bytes %u\n", index()); @@ -941,7 +941,7 @@ bool ProcFSInode::traverse_as_directory(Functionprocess(); for (int i = 0; i < process.max_open_file_descriptors(); ++i) { - auto* descriptor = process.file_descriptor(i); + auto* descriptor = process.file_description(i); if (!descriptor) continue; char name[16]; @@ -1027,7 +1027,7 @@ InodeIdentifier ProcFSInode::lookup(StringView name) { InterruptDisabler disabler; if (auto* process = Process::from_pid(to_pid(identifier()))) - fd_exists = process->file_descriptor(name_as_number); + fd_exists = process->file_description(name_as_number); } if (fd_exists) @@ -1041,7 +1041,7 @@ void ProcFSInode::flush_metadata() { } -ssize_t ProcFSInode::write_bytes(off_t offset, ssize_t size, const byte* buffer, FileDescriptor*) +ssize_t ProcFSInode::write_bytes(off_t offset, ssize_t size, const byte* buffer, FileDescription*) { auto* directory_entry = fs().get_directory_entry(identifier()); if (!directory_entry || !directory_entry->write_callback) diff --git a/Kernel/FileSystem/ProcFS.h b/Kernel/FileSystem/ProcFS.h index 1ba73615d6dbe8..bb4e18eb804e0e 100644 --- a/Kernel/FileSystem/ProcFS.h +++ b/Kernel/FileSystem/ProcFS.h @@ -80,12 +80,12 @@ class ProcFSInode final : public Inode { private: // ^Inode - virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescriptor*) const override; + virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescription*) const override; virtual InodeMetadata metadata() const override; virtual bool traverse_as_directory(Function) const override; virtual InodeIdentifier lookup(StringView name) override; virtual void flush_metadata() override; - virtual ssize_t write_bytes(off_t, ssize_t, const byte* buffer, FileDescriptor*) override; + virtual ssize_t write_bytes(off_t, ssize_t, const byte* buffer, FileDescription*) override; virtual KResult add_child(InodeIdentifier child_id, const String& name, mode_t) override; virtual KResult remove_child(const String& name) override; virtual size_t directory_entry_count() const override; diff --git a/Kernel/FileSystem/SyntheticFileSystem.cpp b/Kernel/FileSystem/SyntheticFileSystem.cpp index 9dc2711319bf6a..86e2aed1304c70 100644 --- a/Kernel/FileSystem/SyntheticFileSystem.cpp +++ b/Kernel/FileSystem/SyntheticFileSystem.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include @@ -185,7 +185,7 @@ InodeMetadata SynthFSInode::metadata() const return m_metadata; } -ssize_t SynthFSInode::read_bytes(off_t offset, ssize_t count, byte* buffer, FileDescriptor* descriptor) const +ssize_t SynthFSInode::read_bytes(off_t offset, ssize_t count, byte* buffer, FileDescription* descriptor) const { LOCKER(m_lock); #ifdef SYNTHFS_DEBUG @@ -250,7 +250,7 @@ void SynthFSInode::flush_metadata() { } -ssize_t SynthFSInode::write_bytes(off_t offset, ssize_t size, const byte* buffer, FileDescriptor*) +ssize_t SynthFSInode::write_bytes(off_t offset, ssize_t size, const byte* buffer, FileDescription*) { LOCKER(m_lock); if (!m_write_callback) diff --git a/Kernel/FileSystem/SyntheticFileSystem.h b/Kernel/FileSystem/SyntheticFileSystem.h index c5bb1643635979..df989d53f114a2 100644 --- a/Kernel/FileSystem/SyntheticFileSystem.h +++ b/Kernel/FileSystem/SyntheticFileSystem.h @@ -57,12 +57,12 @@ class SynthFSInode final : public Inode { private: // ^Inode - virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescriptor*) const override; + virtual ssize_t read_bytes(off_t, ssize_t, byte* buffer, FileDescription*) const override; virtual InodeMetadata metadata() const override; virtual bool traverse_as_directory(Function) const override; virtual InodeIdentifier lookup(StringView name) override; virtual void flush_metadata() override; - virtual ssize_t write_bytes(off_t, ssize_t, const byte* buffer, FileDescriptor*) override; + virtual ssize_t write_bytes(off_t, ssize_t, const byte* buffer, FileDescription*) override; virtual KResult add_child(InodeIdentifier child_id, const String& name, mode_t) override; virtual KResult remove_child(const String& name) override; virtual size_t directory_entry_count() const override; diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index e4ba6cafd4d319..7ae678e6d152fa 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -1,5 +1,5 @@ #include "VirtualFileSystem.h" -#include +#include #include "FileSystem.h" #include #include @@ -149,7 +149,7 @@ KResult VFS::stat(StringView path, int options, Custody& base, struct stat& stat return custody_or_error.value()->inode().metadata().stat(statbuf); } -KResultOr> VFS::open(StringView path, int options, mode_t mode, Custody& base) +KResultOr> VFS::open(StringView path, int options, mode_t mode, Custody& base) { auto custody_or_error = resolve_path(path, base, nullptr, options); if (options & O_CREAT) { @@ -194,7 +194,7 @@ KResultOr> VFS::open(StringView path, int options, mode } if (should_truncate_file) inode.truncate(0); - return FileDescriptor::create(custody); + return FileDescription::create(custody); } KResult VFS::mknod(StringView path, mode_t mode, dev_t dev, Custody& base) @@ -224,7 +224,7 @@ KResult VFS::mknod(StringView path, mode_t mode, dev_t dev, Custody& base) return KSuccess; } -KResultOr> VFS::create(StringView path, int options, mode_t mode, Custody& base) +KResultOr> VFS::create(StringView path, int options, mode_t mode, Custody& base) { (void)options; @@ -253,7 +253,7 @@ KResultOr> VFS::create(StringView path, int options, mo return KResult(error); auto new_custody = Custody::create(parent_custody, p.basename(), *new_file); - return FileDescriptor::create(*new_custody); + return FileDescription::create(*new_custody); } KResult VFS::mkdir(StringView path, mode_t mode, Custody& base) diff --git a/Kernel/FileSystem/VirtualFileSystem.h b/Kernel/FileSystem/VirtualFileSystem.h index 4edbb3c0bd9bfb..a6ff04c2afcc40 100644 --- a/Kernel/FileSystem/VirtualFileSystem.h +++ b/Kernel/FileSystem/VirtualFileSystem.h @@ -28,7 +28,7 @@ class Custody; class Device; -class FileDescriptor; +class FileDescription; class VFS { AK_MAKE_ETERNAL @@ -59,9 +59,9 @@ class VFS { bool mount_root(Retained&&); bool mount(Retained&&, StringView path); - KResultOr> open(RetainPtr&&, int options); - KResultOr> open(StringView path, int options, mode_t mode, Custody& base); - KResultOr> create(StringView path, int options, mode_t mode, Custody& base); + KResultOr> open(RetainPtr&&, int options); + KResultOr> open(StringView path, int options, mode_t mode, Custody& base); + KResultOr> create(StringView path, int options, mode_t mode, Custody& base); 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); @@ -94,7 +94,7 @@ class VFS { KResultOr> resolve_path(StringView path, Custody& base, RetainPtr* parent = nullptr, int options = 0); private: - friend class FileDescriptor; + friend class FileDescription; RetainPtr get_inode(InodeIdentifier); diff --git a/Kernel/KSyms.cpp b/Kernel/KSyms.cpp index 6ee0a3ac2382bc..73816e0d2029b7 100644 --- a/Kernel/KSyms.cpp +++ b/Kernel/KSyms.cpp @@ -1,7 +1,7 @@ #include "KSyms.h" #include "Process.h" #include "Scheduler.h" -#include +#include #include #include diff --git a/Kernel/Makefile b/Kernel/Makefile index 3479d8eed2efc2..8356f9526afcec 100644 --- a/Kernel/Makefile +++ b/Kernel/Makefile @@ -72,7 +72,7 @@ VFS_OBJS = \ FileSystem/DiskBackedFileSystem.o \ FileSystem/Ext2FileSystem.o \ FileSystem/VirtualFileSystem.o \ - FileSystem/FileDescriptor.o \ + FileSystem/FileDescription.o \ FileSystem/SyntheticFileSystem.o AK_OBJS = \ diff --git a/Kernel/Net/IPv4Socket.cpp b/Kernel/Net/IPv4Socket.cpp index 681674ba611f81..b09e32040939d6 100644 --- a/Kernel/Net/IPv4Socket.cpp +++ b/Kernel/Net/IPv4Socket.cpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #define IPV4_SOCKET_DEBUG @@ -89,7 +89,7 @@ KResult IPv4Socket::bind(const sockaddr* address, socklen_t address_size) return protocol_bind(); } -KResult IPv4Socket::connect(FileDescriptor& descriptor, const sockaddr* address, socklen_t address_size, ShouldBlock should_block) +KResult IPv4Socket::connect(FileDescription& descriptor, const sockaddr* address, socklen_t address_size, ShouldBlock should_block) { ASSERT(!m_bound); if (address_size != sizeof(sockaddr_in)) @@ -104,17 +104,17 @@ KResult IPv4Socket::connect(FileDescriptor& descriptor, const sockaddr* address, return protocol_connect(descriptor, should_block); } -void IPv4Socket::attach(FileDescriptor&) +void IPv4Socket::attach(FileDescription&) { ++m_attached_fds; } -void IPv4Socket::detach(FileDescriptor&) +void IPv4Socket::detach(FileDescription&) { --m_attached_fds; } -bool IPv4Socket::can_read(FileDescriptor& descriptor) const +bool IPv4Socket::can_read(FileDescription& descriptor) const { if (descriptor.socket_role() == SocketRole::Listener) return can_accept(); @@ -123,17 +123,17 @@ bool IPv4Socket::can_read(FileDescriptor& descriptor) const return m_can_read; } -ssize_t IPv4Socket::read(FileDescriptor& descriptor, byte* buffer, ssize_t size) +ssize_t IPv4Socket::read(FileDescription& descriptor, byte* buffer, ssize_t size) { return recvfrom(descriptor, buffer, size, 0, nullptr, 0); } -ssize_t IPv4Socket::write(FileDescriptor& descriptor, const byte* data, ssize_t size) +ssize_t IPv4Socket::write(FileDescription& descriptor, const byte* data, ssize_t size) { return sendto(descriptor, data, size, 0, nullptr, 0); } -bool IPv4Socket::can_write(FileDescriptor&) const +bool IPv4Socket::can_write(FileDescription&) const { return is_connected(); } @@ -149,7 +149,7 @@ int IPv4Socket::allocate_local_port_if_needed() return port; } -ssize_t IPv4Socket::sendto(FileDescriptor&, const void* data, size_t data_length, int flags, const sockaddr* addr, socklen_t addr_length) +ssize_t IPv4Socket::sendto(FileDescription&, const void* data, size_t data_length, int flags, const sockaddr* addr, socklen_t addr_length) { (void)flags; if (addr && addr_length != sizeof(sockaddr_in)) @@ -184,7 +184,7 @@ ssize_t IPv4Socket::sendto(FileDescriptor&, const void* data, size_t data_length return protocol_send(data, data_length); } -ssize_t IPv4Socket::recvfrom(FileDescriptor& descriptor, void* buffer, size_t buffer_length, int flags, sockaddr* addr, socklen_t* addr_length) +ssize_t IPv4Socket::recvfrom(FileDescription& descriptor, void* buffer, size_t buffer_length, int flags, sockaddr* addr, socklen_t* addr_length) { (void)flags; if (addr_length && *addr_length < sizeof(sockaddr_in)) diff --git a/Kernel/Net/IPv4Socket.h b/Kernel/Net/IPv4Socket.h index 4f18d63113c69c..dea6b5c1719081 100644 --- a/Kernel/Net/IPv4Socket.h +++ b/Kernel/Net/IPv4Socket.h @@ -21,17 +21,17 @@ class IPv4Socket : public Socket { static Lockable>& all_sockets(); virtual KResult bind(const sockaddr*, socklen_t) override; - virtual KResult connect(FileDescriptor&, const sockaddr*, socklen_t, ShouldBlock = ShouldBlock::Yes) override; + virtual KResult connect(FileDescription&, const sockaddr*, socklen_t, ShouldBlock = ShouldBlock::Yes) override; virtual bool get_local_address(sockaddr*, socklen_t*) override; virtual bool get_peer_address(sockaddr*, socklen_t*) override; - virtual void attach(FileDescriptor&) override; - virtual void detach(FileDescriptor&) override; - virtual bool can_read(FileDescriptor&) const override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override; - virtual ssize_t sendto(FileDescriptor&, const void*, size_t, int, const sockaddr*, socklen_t) override; - virtual ssize_t recvfrom(FileDescriptor&, void*, size_t, int flags, sockaddr*, socklen_t*) override; + virtual void attach(FileDescription&) override; + virtual void detach(FileDescription&) override; + virtual bool can_read(FileDescription&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_write(FileDescription&) const override; + virtual ssize_t sendto(FileDescription&, const void*, size_t, int, const sockaddr*, socklen_t) override; + virtual ssize_t recvfrom(FileDescription&, void*, size_t, int flags, sockaddr*, socklen_t*) override; void did_receive(const IPv4Address& peer_address, word peer_port, ByteBuffer&&); @@ -52,7 +52,7 @@ class IPv4Socket : public Socket { virtual KResult protocol_bind() { return KSuccess; } virtual int protocol_receive(const ByteBuffer&, void*, size_t, int, sockaddr*, socklen_t*) { return -ENOTIMPL; } virtual int protocol_send(const void*, int) { return -ENOTIMPL; } - virtual KResult protocol_connect(FileDescriptor&, ShouldBlock) { return KSuccess; } + virtual KResult protocol_connect(FileDescription&, ShouldBlock) { return KSuccess; } virtual int protocol_allocate_local_port() { return 0; } virtual bool protocol_is_disconnected() const { return false; } diff --git a/Kernel/Net/LocalSocket.cpp b/Kernel/Net/LocalSocket.cpp index 99457e2cc4b022..208348847aef0d 100644 --- a/Kernel/Net/LocalSocket.cpp +++ b/Kernel/Net/LocalSocket.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include @@ -71,7 +71,7 @@ KResult LocalSocket::bind(const sockaddr* address, socklen_t address_size) return KSuccess; } -KResult LocalSocket::connect(FileDescriptor& descriptor, const sockaddr* address, socklen_t address_size, ShouldBlock) +KResult LocalSocket::connect(FileDescription& descriptor, const sockaddr* address, socklen_t address_size, ShouldBlock) { ASSERT(!m_bound); if (address_size != sizeof(sockaddr_un)) @@ -106,7 +106,7 @@ KResult LocalSocket::connect(FileDescriptor& descriptor, const sockaddr* address return current->wait_for_connect(descriptor); } -void LocalSocket::attach(FileDescriptor& descriptor) +void LocalSocket::attach(FileDescription& descriptor) { switch (descriptor.socket_role()) { case SocketRole::Accepted: @@ -123,7 +123,7 @@ void LocalSocket::attach(FileDescriptor& descriptor) } } -void LocalSocket::detach(FileDescriptor& descriptor) +void LocalSocket::detach(FileDescription& descriptor) { switch (descriptor.socket_role()) { case SocketRole::Accepted: @@ -143,7 +143,7 @@ void LocalSocket::detach(FileDescriptor& descriptor) } } -bool LocalSocket::can_read(FileDescriptor& descriptor) const +bool LocalSocket::can_read(FileDescription& descriptor) const { auto role = descriptor.socket_role(); if (role == SocketRole::Listener) @@ -155,7 +155,7 @@ bool LocalSocket::can_read(FileDescriptor& descriptor) const ASSERT_NOT_REACHED(); } -ssize_t LocalSocket::read(FileDescriptor& descriptor, byte* buffer, ssize_t size) +ssize_t LocalSocket::read(FileDescription& descriptor, byte* buffer, ssize_t size) { auto role = descriptor.socket_role(); if (role == SocketRole::Accepted) { @@ -175,7 +175,7 @@ ssize_t LocalSocket::read(FileDescriptor& descriptor, byte* buffer, ssize_t size ASSERT_NOT_REACHED(); } -bool LocalSocket::has_attached_peer(const FileDescriptor& descriptor) const +bool LocalSocket::has_attached_peer(const FileDescription& descriptor) const { if (descriptor.socket_role() == SocketRole::Accepted) return m_connected_fds_open || m_connecting_fds_open; @@ -184,7 +184,7 @@ bool LocalSocket::has_attached_peer(const FileDescriptor& descriptor) const ASSERT_NOT_REACHED(); } -ssize_t LocalSocket::write(FileDescriptor& descriptor, const byte* data, ssize_t size) +ssize_t LocalSocket::write(FileDescription& descriptor, const byte* data, ssize_t size) { if (!has_attached_peer(descriptor)) return -EPIPE; @@ -195,7 +195,7 @@ ssize_t LocalSocket::write(FileDescriptor& descriptor, const byte* data, ssize_t ASSERT_NOT_REACHED(); } -bool LocalSocket::can_write(FileDescriptor& descriptor) const +bool LocalSocket::can_write(FileDescription& descriptor) const { if (descriptor.socket_role() == SocketRole::Accepted) return !has_attached_peer(descriptor) || m_for_client.bytes_in_write_buffer() < 16384; @@ -204,12 +204,12 @@ bool LocalSocket::can_write(FileDescriptor& descriptor) const ASSERT_NOT_REACHED(); } -ssize_t LocalSocket::sendto(FileDescriptor& descriptor, const void* data, size_t data_size, int, const sockaddr*, socklen_t) +ssize_t LocalSocket::sendto(FileDescription& descriptor, const void* data, size_t data_size, int, const sockaddr*, socklen_t) { return write(descriptor, (const byte*)data, data_size); } -ssize_t LocalSocket::recvfrom(FileDescriptor& descriptor, void* buffer, size_t buffer_size, int, sockaddr*, socklen_t*) +ssize_t LocalSocket::recvfrom(FileDescription& descriptor, void* buffer, size_t buffer_size, int, sockaddr*, socklen_t*) { return read(descriptor, (byte*)buffer, buffer_size); } diff --git a/Kernel/Net/LocalSocket.h b/Kernel/Net/LocalSocket.h index 3328fd4eba7b3c..f1ac23719b7c30 100644 --- a/Kernel/Net/LocalSocket.h +++ b/Kernel/Net/LocalSocket.h @@ -3,7 +3,7 @@ #include #include -class FileDescriptor; +class FileDescription; class LocalSocket final : public Socket { public: @@ -11,24 +11,24 @@ class LocalSocket final : public Socket { virtual ~LocalSocket() override; virtual KResult bind(const sockaddr*, socklen_t) override; - virtual KResult connect(FileDescriptor&, const sockaddr*, socklen_t, ShouldBlock = ShouldBlock::Yes) override; + virtual KResult connect(FileDescription&, const sockaddr*, socklen_t, ShouldBlock = ShouldBlock::Yes) override; virtual bool get_local_address(sockaddr*, socklen_t*) override; virtual bool get_peer_address(sockaddr*, socklen_t*) override; - virtual void attach(FileDescriptor&) override; - virtual void detach(FileDescriptor&) override; - virtual bool can_read(FileDescriptor&) const override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override; - virtual ssize_t sendto(FileDescriptor&, const void*, size_t, int, const sockaddr*, socklen_t) override; - virtual ssize_t recvfrom(FileDescriptor&, void*, size_t, int flags, sockaddr*, socklen_t*) override; + virtual void attach(FileDescription&) override; + virtual void detach(FileDescription&) override; + virtual bool can_read(FileDescription&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_write(FileDescription&) const override; + virtual ssize_t sendto(FileDescription&, const void*, size_t, int, const sockaddr*, socklen_t) override; + virtual ssize_t recvfrom(FileDescription&, void*, size_t, int flags, sockaddr*, socklen_t*) override; private: explicit LocalSocket(int type); virtual bool is_local() const override { return true; } - bool has_attached_peer(const FileDescriptor&) const; + bool has_attached_peer(const FileDescription&) const; - RetainPtr m_file; + RetainPtr m_file; bool m_bound { false }; int m_accepted_fds_open { 0 }; diff --git a/Kernel/Net/Socket.cpp b/Kernel/Net/Socket.cpp index 8c800f8ebae162..ee4a78c47337ea 100644 --- a/Kernel/Net/Socket.cpp +++ b/Kernel/Net/Socket.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include #include @@ -142,7 +142,7 @@ static const char* to_string(SocketRole role) } } -String Socket::absolute_path(const FileDescriptor& descriptor) const +String Socket::absolute_path(const FileDescription& descriptor) const { return String::format("socket:%x (role: %s)", this, to_string(descriptor.socket_role())); } diff --git a/Kernel/Net/Socket.h b/Kernel/Net/Socket.h index f11f3e768bb8f2..336dc8623b20bb 100644 --- a/Kernel/Net/Socket.h +++ b/Kernel/Net/Socket.h @@ -23,7 +23,7 @@ enum class ShouldBlock Yes = 1 }; -class FileDescriptor; +class FileDescription; class Socket : public File { public: @@ -40,15 +40,15 @@ class Socket : public File { KResult listen(int backlog); virtual KResult bind(const sockaddr*, socklen_t) = 0; - virtual KResult connect(FileDescriptor&, const sockaddr*, socklen_t, ShouldBlock) = 0; + virtual KResult connect(FileDescription&, const sockaddr*, socklen_t, ShouldBlock) = 0; virtual bool get_local_address(sockaddr*, socklen_t*) = 0; virtual bool get_peer_address(sockaddr*, socklen_t*) = 0; virtual bool is_local() const { return false; } virtual bool is_ipv4() const { return false; } - virtual void attach(FileDescriptor&) = 0; - virtual void detach(FileDescriptor&) = 0; - virtual ssize_t sendto(FileDescriptor&, const void*, size_t, int flags, const sockaddr*, socklen_t) = 0; - virtual ssize_t recvfrom(FileDescriptor&, void*, size_t, int flags, sockaddr*, socklen_t*) = 0; + virtual void attach(FileDescription&) = 0; + virtual void detach(FileDescription&) = 0; + virtual ssize_t sendto(FileDescription&, const void*, size_t, int flags, const sockaddr*, socklen_t) = 0; + virtual ssize_t recvfrom(FileDescription&, void*, size_t, int flags, sockaddr*, socklen_t*) = 0; KResult setsockopt(int level, int option, const void*, socklen_t); KResult getsockopt(int level, int option, void*, socklen_t*); @@ -62,7 +62,7 @@ class Socket : public File { Lock& lock() { return m_lock; } - virtual String absolute_path(const FileDescriptor&) const override; + virtual String absolute_path(const FileDescription&) const override; protected: Socket(int domain, int type, int protocol); diff --git a/Kernel/Net/TCPSocket.cpp b/Kernel/Net/TCPSocket.cpp index acb3c4756942fe..fe60425fd33118 100644 --- a/Kernel/Net/TCPSocket.cpp +++ b/Kernel/Net/TCPSocket.cpp @@ -148,7 +148,7 @@ NetworkOrdered TCPSocket::compute_tcp_checksum(const IPv4Address& source, return ~(checksum & 0xffff); } -KResult TCPSocket::protocol_connect(FileDescriptor& descriptor, ShouldBlock should_block) +KResult TCPSocket::protocol_connect(FileDescription& descriptor, ShouldBlock should_block) { auto* adapter = adapter_for_route_to(peer_address()); if (!adapter) diff --git a/Kernel/Net/TCPSocket.h b/Kernel/Net/TCPSocket.h index 35856d7ae81bab..7ced06f56f5b09 100644 --- a/Kernel/Net/TCPSocket.h +++ b/Kernel/Net/TCPSocket.h @@ -36,7 +36,7 @@ class TCPSocket final : public IPv4Socket { virtual int protocol_receive(const ByteBuffer&, void* buffer, size_t buffer_size, int flags, sockaddr* addr, socklen_t* addr_length) override; virtual int protocol_send(const void*, int) override; - virtual KResult protocol_connect(FileDescriptor&, ShouldBlock) override; + virtual KResult protocol_connect(FileDescription&, ShouldBlock) override; virtual int protocol_allocate_local_port() override; virtual bool protocol_is_disconnected() const override; virtual KResult protocol_bind() override; diff --git a/Kernel/Net/UDPSocket.h b/Kernel/Net/UDPSocket.h index a76eaa7fe7042c..80ef09b7bf98f3 100644 --- a/Kernel/Net/UDPSocket.h +++ b/Kernel/Net/UDPSocket.h @@ -18,7 +18,7 @@ class UDPSocket final : public IPv4Socket { virtual int protocol_receive(const ByteBuffer&, void* buffer, size_t buffer_size, int flags, sockaddr* addr, socklen_t* addr_length) override; virtual int protocol_send(const void*, int) override; - virtual KResult protocol_connect(FileDescriptor&, ShouldBlock) override { return KSuccess; } + virtual KResult protocol_connect(FileDescription&, ShouldBlock) override { return KSuccess; } virtual int protocol_allocate_local_port() override; virtual KResult protocol_bind() override; }; diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index a4a9e03205fd54..2e219f7612cfb9 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -3,7 +3,7 @@ #include "kmalloc.h" #include "StdLib.h" #include "i386.h" -#include +#include #include #include #include @@ -190,7 +190,7 @@ void* Process::sys$mmap(const Syscall::SC_mmap_params* params) } if (offset & ~PAGE_MASK) return (void*)-EINVAL; - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return (void*)-EBADF; auto region_or_error = descriptor->mmap(*this, LinearAddress((dword)addr), offset, size, prot); @@ -765,7 +765,7 @@ Process* Process::from_pid(pid_t pid) return nullptr; } -FileDescriptor* Process::file_descriptor(int fd) +FileDescription* Process::file_description(int fd) { if (fd < 0) return nullptr; @@ -774,7 +774,7 @@ FileDescriptor* Process::file_descriptor(int fd) return nullptr; } -const FileDescriptor* Process::file_descriptor(int fd) const +const FileDescription* Process::file_description(int fd) const { if (fd < 0) return nullptr; @@ -789,7 +789,7 @@ ssize_t Process::sys$get_dir_entries(int fd, void* buffer, ssize_t size) return -EINVAL; if (!validate_write(buffer, size)) return -EFAULT; - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; return descriptor->get_dir_entries((byte*)buffer, size); @@ -797,7 +797,7 @@ ssize_t Process::sys$get_dir_entries(int fd, void* buffer, ssize_t size) int Process::sys$lseek(int fd, off_t offset, int whence) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; return descriptor->seek(offset, whence); @@ -809,7 +809,7 @@ int Process::sys$ttyname_r(int fd, char* buffer, ssize_t size) return -EINVAL; if (!validate_write(buffer, size)) return -EFAULT; - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; if (!descriptor->is_tty()) @@ -827,7 +827,7 @@ int Process::sys$ptsname_r(int fd, char* buffer, ssize_t size) return -EINVAL; if (!validate_write(buffer, size)) return -EFAULT; - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; auto* master_pty = descriptor->master_pty(); @@ -850,7 +850,7 @@ ssize_t Process::sys$writev(int fd, const struct iovec* iov, int iov_count) // FIXME: Return EINVAL if sum of iovecs is greater than INT_MAX - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; @@ -874,7 +874,7 @@ ssize_t Process::sys$writev(int fd, const struct iovec* iov, int iov_count) return nwritten; } -ssize_t Process::do_write(FileDescriptor& descriptor, const byte* data, int data_size) +ssize_t Process::do_write(FileDescription& descriptor, const byte* data, int data_size) { ssize_t nwritten = 0; if (!descriptor.is_blocking()) { @@ -931,7 +931,7 @@ ssize_t Process::sys$write(int fd, const byte* data, ssize_t size) #ifdef DEBUG_IO dbgprintf("%s(%u): sys$write(%d, %p, %u)\n", name().characters(), pid(), fd, data, size); #endif - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; auto nwritten = do_write(*descriptor, data, size); @@ -954,7 +954,7 @@ ssize_t Process::sys$read(int fd, byte* buffer, ssize_t size) #ifdef DEBUG_IO dbgprintf("%s(%u) sys$read(%d, %p, %u)\n", name().characters(), pid(), fd, buffer, size); #endif - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; if (descriptor->is_blocking()) { @@ -969,7 +969,7 @@ ssize_t Process::sys$read(int fd, byte* buffer, ssize_t size) int Process::sys$close(int fd) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; int rc = descriptor->close(); @@ -1009,10 +1009,10 @@ int Process::sys$fcntl(int fd, int cmd, dword arg) (void) cmd; (void) arg; dbgprintf("sys$fcntl: fd=%d, cmd=%d, arg=%u\n", fd, cmd, arg); - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; - // NOTE: The FD flags are not shared between FileDescriptor objects. + // NOTE: The FD flags are not shared between FileDescription objects. // This means that dup() doesn't copy the FD_CLOEXEC flag! switch (cmd) { case F_DUPFD: { @@ -1045,7 +1045,7 @@ int Process::sys$fstat(int fd, stat* statbuf) { if (!validate_write_typed(statbuf)) return -EFAULT; - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; return descriptor->fstat(*statbuf); @@ -1226,7 +1226,7 @@ int Process::sys$uname(utsname* buf) int Process::sys$isatty(int fd) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; if (!descriptor->is_tty()) @@ -1607,7 +1607,7 @@ int Process::sys$setpgid(pid_t specified_pid, pid_t specified_pgid) int Process::sys$ioctl(int fd, unsigned request, unsigned arg) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; return descriptor->file().ioctl(*descriptor, request, arg); @@ -1620,7 +1620,7 @@ int Process::sys$getdtablesize() int Process::sys$dup(int old_fd) { - auto* descriptor = file_descriptor(old_fd); + auto* descriptor = file_description(old_fd); if (!descriptor) return -EBADF; int new_fd = alloc_fd(0); @@ -1632,7 +1632,7 @@ int Process::sys$dup(int old_fd) int Process::sys$dup2(int old_fd, int new_fd) { - auto* descriptor = file_descriptor(old_fd); + auto* descriptor = file_description(old_fd); if (!descriptor) return -EBADF; if (new_fd < 0 || new_fd >= m_max_open_file_descriptors) @@ -1779,7 +1779,7 @@ int Process::sys$select(const Syscall::SC_select_params* params) return 0; for (int fd = 0; fd < params->nfds; ++fd) { if (FD_ISSET(fd, fds)) { - if (!file_descriptor(fd)) + if (!file_description(fd)) return -EBADF; vector.append(fd); } @@ -1806,7 +1806,7 @@ int Process::sys$select(const Syscall::SC_select_params* params) return; FD_ZERO(fds); for (int fd : vector) { - if (auto* descriptor = file_descriptor(fd); descriptor && should_mark(*descriptor)) { + if (auto* descriptor = file_description(fd); descriptor && should_mark(*descriptor)) { FD_SET(fd, fds); ++marked_fd_count; } @@ -1858,7 +1858,7 @@ int Process::sys$poll(pollfd* fds, int nfds, int timeout) int fds_with_revents = 0; for (int i = 0; i < nfds; ++i) { - auto* descriptor = file_descriptor(fds[i].fd); + auto* descriptor = file_description(fds[i].fd); if (!descriptor) { fds[i].revents = POLLNVAL; continue; @@ -1934,7 +1934,7 @@ int Process::sys$chmod(const char* pathname, mode_t mode) int Process::sys$fchmod(int fd, mode_t mode) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; return descriptor->fchmod(mode); @@ -1942,7 +1942,7 @@ int Process::sys$fchmod(int fd, mode_t mode) int Process::sys$fchown(int fd, uid_t uid, gid_t gid) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; return descriptor->chown(uid, gid); @@ -2041,7 +2041,7 @@ int Process::sys$socket(int domain, int type, int protocol) auto result = Socket::create(domain, type, protocol); if (result.is_error()) return result.error(); - auto descriptor = FileDescriptor::create(*result.value()); + auto descriptor = FileDescription::create(*result.value()); unsigned flags = 0; if (type & SOCK_CLOEXEC) flags |= FD_CLOEXEC; @@ -2055,7 +2055,7 @@ int Process::sys$bind(int sockfd, const sockaddr* address, socklen_t address_len { if (!validate_read(address, address_length)) return -EFAULT; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2066,7 +2066,7 @@ int Process::sys$bind(int sockfd, const sockaddr* address, socklen_t address_len int Process::sys$listen(int sockfd, int backlog) { - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2088,7 +2088,7 @@ int Process::sys$accept(int accepting_socket_fd, sockaddr* address, socklen_t* a int accepted_socket_fd = alloc_fd(); if (accepted_socket_fd < 0) return accepted_socket_fd; - auto* accepting_socket_descriptor = file_descriptor(accepting_socket_fd); + auto* accepting_socket_descriptor = file_description(accepting_socket_fd); if (!accepting_socket_descriptor) return -EBADF; if (!accepting_socket_descriptor->is_socket()) @@ -2102,7 +2102,7 @@ int Process::sys$accept(int accepting_socket_fd, sockaddr* address, socklen_t* a ASSERT(accepted_socket); bool success = accepted_socket->get_local_address(address, address_size); ASSERT(success); - auto accepted_socket_descriptor = FileDescriptor::create(move(accepted_socket), SocketRole::Accepted); + auto accepted_socket_descriptor = FileDescription::create(move(accepted_socket), SocketRole::Accepted); // NOTE: The accepted socket inherits fd flags from the accepting socket. // I'm not sure if this matches other systems but it makes sense to me. accepted_socket_descriptor->set_blocking(accepting_socket_descriptor->is_blocking()); @@ -2117,7 +2117,7 @@ int Process::sys$connect(int sockfd, const sockaddr* address, socklen_t address_ int fd = alloc_fd(); if (fd < 0) return fd; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2151,7 +2151,7 @@ ssize_t Process::sys$sendto(const Syscall::SC_sendto_params* params) return -EFAULT; if (addr && !validate_read(addr, addr_length)) return -EFAULT; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2183,7 +2183,7 @@ ssize_t Process::sys$recvfrom(const Syscall::SC_recvfrom_params* params) } else if (addr) { return -EINVAL; } - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2212,7 +2212,7 @@ int Process::sys$getsockname(int sockfd, sockaddr* addr, socklen_t* addrlen) if (!validate_write(addr, *addrlen)) return -EFAULT; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; @@ -2237,7 +2237,7 @@ int Process::sys$getpeername(int sockfd, sockaddr* addr, socklen_t* addrlen) if (!validate_write(addr, *addrlen)) return -EFAULT; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; @@ -2312,7 +2312,7 @@ int Process::sys$getsockopt(const Syscall::SC_getsockopt_params* params) return -EFAULT; if (!validate_write(value, *value_size)) return -EFAULT; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2333,7 +2333,7 @@ int Process::sys$setsockopt(const Syscall::SC_setsockopt_params* params) if (!validate_read(value, value_size)) return -EFAULT; - auto* descriptor = file_descriptor(sockfd); + auto* descriptor = file_description(sockfd); if (!descriptor) return -EBADF; if (!descriptor->is_socket()) @@ -2672,7 +2672,7 @@ int Process::sys$shm_open(const char* name, int flags, mode_t mode) auto shm_or_error = SharedMemory::open(String(name), flags, mode); if (shm_or_error.is_error()) return shm_or_error.error(); - auto descriptor = FileDescriptor::create(shm_or_error.value().ptr()); + auto descriptor = FileDescription::create(shm_or_error.value().ptr()); m_fds[fd].set(move(descriptor), FD_CLOEXEC); return fd; } @@ -2686,7 +2686,7 @@ int Process::sys$shm_unlink(const char* name) int Process::sys$ftruncate(int fd, off_t length) { - auto* descriptor = file_descriptor(fd); + auto* descriptor = file_description(fd); if (!descriptor) return -EBADF; // FIXME: Check that fd is writable, otherwise EINVAL. @@ -2704,7 +2704,7 @@ int Process::sys$systrace(pid_t pid) int fd = alloc_fd(); if (fd < 0) return fd; - auto descriptor = FileDescriptor::create(peer->ensure_tracer()); + auto descriptor = FileDescription::create(peer->ensure_tracer()); m_fds[fd].set(move(descriptor), 0); return fd; } @@ -2716,13 +2716,13 @@ ProcessTracer& Process::ensure_tracer() return *m_tracer; } -void Process::FileDescriptorAndFlags::clear() +void Process::FileDescriptionAndFlags::clear() { descriptor = nullptr; flags = 0; } -void Process::FileDescriptorAndFlags::set(Retained&& d, dword f) +void Process::FileDescriptionAndFlags::set(Retained&& d, dword f) { descriptor = move(d); flags = f; diff --git a/Kernel/Process.h b/Kernel/Process.h index b5cadaec0c55cd..a792e5a2a2b86e 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -16,7 +16,7 @@ #include class ELFLoader; -class FileDescriptor; +class FileDescription; class PageDirectory; class Region; class VMObject; @@ -87,8 +87,8 @@ class Process : public InlineLinkedListNode bool in_group(gid_t) const; - FileDescriptor* file_descriptor(int fd); - const FileDescriptor* file_descriptor(int fd) const; + FileDescription* file_description(int fd); + const FileDescription* file_description(int fd) const; template static void for_each(Callback); @@ -280,7 +280,7 @@ class Process : public InlineLinkedListNode Range allocate_range(LinearAddress, size_t); int do_exec(String path, Vector arguments, Vector environment); - ssize_t do_write(FileDescriptor&, const byte*, int data_size); + ssize_t do_write(FileDescription&, const byte*, int data_size); int alloc_fd(int first_candidate_fd = 0); void disown_all_shared_buffers(); @@ -306,17 +306,17 @@ class Process : public InlineLinkedListNode Priority m_priority { NormalPriority }; - struct FileDescriptorAndFlags { + struct FileDescriptionAndFlags { operator bool() const { return !!descriptor; } void clear(); - void set(Retained&& d, dword f = 0); - RetainPtr descriptor; + void set(Retained&& d, dword f = 0); + RetainPtr descriptor; dword flags { 0 }; }; - Vector m_fds; + Vector m_fds; RingLevel m_ring { Ring0 }; - int m_max_open_file_descriptors { 128 }; + static const int m_max_open_file_descriptors { FD_SETSIZE }; byte m_termination_status { 0 }; byte m_termination_signal { 0 }; diff --git a/Kernel/ProcessTracer.cpp b/Kernel/ProcessTracer.cpp index e81568b4a01c60..66aeb8ac492d6a 100644 --- a/Kernel/ProcessTracer.cpp +++ b/Kernel/ProcessTracer.cpp @@ -18,7 +18,7 @@ void ProcessTracer::did_syscall(dword function, dword arg1, dword arg2, dword ar m_calls.enqueue(data); } -int ProcessTracer::read(FileDescriptor&, byte* buffer, int buffer_size) +int ProcessTracer::read(FileDescription&, byte* buffer, int buffer_size) { if (m_calls.is_empty()) return 0; @@ -29,7 +29,7 @@ int ProcessTracer::read(FileDescriptor&, byte* buffer, int buffer_size) return sizeof(data); } -String ProcessTracer::absolute_path(const FileDescriptor&) const +String ProcessTracer::absolute_path(const FileDescription&) const { return String::format("tracer:%d", m_pid); } diff --git a/Kernel/ProcessTracer.h b/Kernel/ProcessTracer.h index 3f23e4e31d9486..0b71b0ba0afe39 100644 --- a/Kernel/ProcessTracer.h +++ b/Kernel/ProcessTracer.h @@ -12,13 +12,13 @@ class ProcessTracer : public File { bool is_dead() const { return m_dead; } void set_dead() { m_dead = true; } - virtual bool can_read(FileDescriptor&) const override { return !m_calls.is_empty() || m_dead; } - virtual int read(FileDescriptor&, byte*, int) override; + virtual bool can_read(FileDescription&) const override { return !m_calls.is_empty() || m_dead; } + virtual int read(FileDescription&, byte*, int) override; - virtual bool can_write(FileDescriptor&) const override { return true; } - virtual int write(FileDescriptor&, const byte*, int) override { return -EIO; } + virtual bool can_write(FileDescription&) const override { return true; } + virtual int write(FileDescription&, const byte*, int) override { return -EIO; } - virtual String absolute_path(const FileDescriptor&) const override; + virtual String absolute_path(const FileDescription&) const override; void did_syscall(dword function, dword arg1, dword arg2, dword arg3, dword result); pid_t pid() const { return m_pid; } diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 98c357e6b13aa4..5063f157e7f0e0 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -4,7 +4,7 @@ #include "i8253.h" #include #include -#include +#include #include //#define LOG_EVERY_CONTEXT_SWITCH diff --git a/Kernel/SharedMemory.cpp b/Kernel/SharedMemory.cpp index 830c8ffee9e11d..5f4e54c4ddcb1e 100644 --- a/Kernel/SharedMemory.cpp +++ b/Kernel/SharedMemory.cpp @@ -68,12 +68,12 @@ KResult SharedMemory::truncate(int length) return KResult(-ENOTIMPL); } -String SharedMemory::absolute_path(const FileDescriptor&) const +String SharedMemory::absolute_path(const FileDescription&) const { return String::format("shm:%u", this); } -int SharedMemory::read(FileDescriptor&, byte* buffer, int buffer_size) +int SharedMemory::read(FileDescription&, byte* buffer, int buffer_size) { UNUSED_PARAM(buffer); UNUSED_PARAM(buffer_size); @@ -81,7 +81,7 @@ int SharedMemory::read(FileDescriptor&, byte* buffer, int buffer_size) ASSERT_NOT_REACHED(); } -int SharedMemory::write(FileDescriptor&, const byte* data, int data_size) +int SharedMemory::write(FileDescription&, const byte* data, int data_size) { UNUSED_PARAM(data); UNUSED_PARAM(data_size); @@ -89,7 +89,7 @@ int SharedMemory::write(FileDescriptor&, const byte* data, int data_size) ASSERT_NOT_REACHED(); } -KResultOr SharedMemory::mmap(Process& process, FileDescriptor&, LinearAddress laddr, size_t offset, size_t size, int prot) +KResultOr SharedMemory::mmap(Process& process, FileDescription&, LinearAddress laddr, size_t offset, size_t size, int prot) { if (!vmo()) return KResult(-ENODEV); diff --git a/Kernel/SharedMemory.h b/Kernel/SharedMemory.h index b0de2e500921ca..c0ec93a132968e 100644 --- a/Kernel/SharedMemory.h +++ b/Kernel/SharedMemory.h @@ -24,14 +24,14 @@ class SharedMemory : public File { private: // ^File - virtual bool can_read(FileDescriptor&) const override { return true; } - virtual bool can_write(FileDescriptor&) const override { return true; } - virtual int read(FileDescriptor&, byte*, int) override; - virtual int write(FileDescriptor&, const byte*, int) override; - virtual String absolute_path(const FileDescriptor&) const override; + virtual bool can_read(FileDescription&) const override { return true; } + virtual bool can_write(FileDescription&) const override { return true; } + virtual int read(FileDescription&, byte*, int) override; + virtual int write(FileDescription&, const byte*, int) override; + virtual String absolute_path(const FileDescription&) const override; virtual const char* class_name() const override { return "SharedMemory"; } virtual bool is_shared_memory() const override { return true; } - virtual KResultOr mmap(Process&, FileDescriptor&, LinearAddress, size_t offset, size_t size, int prot) override; + virtual KResultOr mmap(Process&, FileDescription&, LinearAddress, size_t offset, size_t size, int prot) override; SharedMemory(const String& name, uid_t, gid_t, mode_t); diff --git a/Kernel/TTY/MasterPTY.cpp b/Kernel/TTY/MasterPTY.cpp index 22e87495b042a5..c3eb39b0b194ad 100644 --- a/Kernel/TTY/MasterPTY.cpp +++ b/Kernel/TTY/MasterPTY.cpp @@ -31,14 +31,14 @@ String MasterPTY::pts_name() const return m_pts_name; } -ssize_t MasterPTY::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t MasterPTY::read(FileDescription&, byte* buffer, ssize_t size) { if (!m_slave && m_buffer.is_empty()) return 0; return m_buffer.read(buffer, size); } -ssize_t MasterPTY::write(FileDescriptor&, const byte* buffer, ssize_t size) +ssize_t MasterPTY::write(FileDescription&, const byte* buffer, ssize_t size) { if (!m_slave) return -EIO; @@ -46,14 +46,14 @@ ssize_t MasterPTY::write(FileDescriptor&, const byte* buffer, ssize_t size) return size; } -bool MasterPTY::can_read(FileDescriptor&) const +bool MasterPTY::can_read(FileDescription&) const { if (!m_slave) return true; return !m_buffer.is_empty(); } -bool MasterPTY::can_write(FileDescriptor&) const +bool MasterPTY::can_write(FileDescription&) const { return true; } @@ -64,7 +64,7 @@ void MasterPTY::notify_slave_closed(Badge) dbgprintf("MasterPTY(%u): slave closed, my retains: %u, slave retains: %u\n", m_index, retain_count(), m_slave->retain_count()); #endif // +1 retain for my MasterPTY::m_slave - // +1 retain for FileDescriptor::m_device + // +1 retain for FileDescription::m_device if (m_slave->retain_count() == 2) m_slave = nullptr; } @@ -88,7 +88,7 @@ void MasterPTY::close() { if (retain_count() == 2) { InterruptDisabler disabler; - // After the closing FileDescriptor dies, slave is the only thing keeping me alive. + // After the closing FileDescription dies, slave is the only thing keeping me alive. // From this point, let's consider ourselves closed. m_closed = true; @@ -96,7 +96,7 @@ void MasterPTY::close() } } -int MasterPTY::ioctl(FileDescriptor& descriptor, unsigned request, unsigned arg) +int MasterPTY::ioctl(FileDescription& descriptor, unsigned request, unsigned arg) { if (request == TIOCSWINSZ) return m_slave->ioctl(descriptor, request, arg); diff --git a/Kernel/TTY/MasterPTY.h b/Kernel/TTY/MasterPTY.h index 22fd3db48e7154..accb6902bc451d 100644 --- a/Kernel/TTY/MasterPTY.h +++ b/Kernel/TTY/MasterPTY.h @@ -20,13 +20,13 @@ class MasterPTY final : public CharacterDevice { private: // ^CharacterDevice - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override; virtual void close() override; virtual bool is_master_pty() const override { return true; } - virtual int ioctl(FileDescriptor&, unsigned request, unsigned arg) override; + virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override; virtual const char* class_name() const override { return "MasterPTY"; } RetainPtr m_slave; diff --git a/Kernel/TTY/PTYMultiplexer.cpp b/Kernel/TTY/PTYMultiplexer.cpp index 1620f8f9524fb2..3b8b59650213cd 100644 --- a/Kernel/TTY/PTYMultiplexer.cpp +++ b/Kernel/TTY/PTYMultiplexer.cpp @@ -1,6 +1,6 @@ #include "PTYMultiplexer.h" #include "MasterPTY.h" -#include +#include #include #include @@ -28,7 +28,7 @@ PTYMultiplexer::~PTYMultiplexer() { } -KResultOr> PTYMultiplexer::open(int options) +KResultOr> PTYMultiplexer::open(int options) { UNUSED_PARAM(options); LOCKER(m_lock); @@ -39,7 +39,7 @@ KResultOr> PTYMultiplexer::open(int options) #ifdef PTMX_DEBUG dbgprintf("PTYMultiplexer::open: Vending master %u\n", master->index()); #endif - return FileDescriptor::create(master.ptr()); + return FileDescription::create(master.ptr()); } void PTYMultiplexer::notify_master_destroyed(Badge, unsigned index) diff --git a/Kernel/TTY/PTYMultiplexer.h b/Kernel/TTY/PTYMultiplexer.h index 1d06d6f4d81107..b25a5674fc5167 100644 --- a/Kernel/TTY/PTYMultiplexer.h +++ b/Kernel/TTY/PTYMultiplexer.h @@ -15,11 +15,11 @@ class PTYMultiplexer final : public CharacterDevice { static PTYMultiplexer& the(); // ^CharacterDevice - virtual KResultOr> open(int options) override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override { return 0; } - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override { return 0; } - virtual bool can_read(FileDescriptor&) const override { return true; } - virtual bool can_write(FileDescriptor&) const override { return true; } + virtual KResultOr> open(int options) override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override { return 0; } + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override { return 0; } + virtual bool can_read(FileDescription&) const override { return true; } + virtual bool can_write(FileDescription&) const override { return true; } void notify_master_destroyed(Badge, unsigned index); diff --git a/Kernel/TTY/SlavePTY.cpp b/Kernel/TTY/SlavePTY.cpp index f40392037cb543..102a7ee48ae9c3 100644 --- a/Kernel/TTY/SlavePTY.cpp +++ b/Kernel/TTY/SlavePTY.cpp @@ -41,19 +41,19 @@ ssize_t SlavePTY::on_tty_write(const byte* data, ssize_t size) return m_master->on_slave_write(data, size); } -bool SlavePTY::can_write(FileDescriptor&) const +bool SlavePTY::can_write(FileDescription&) const { return m_master->can_write_from_slave(); } -bool SlavePTY::can_read(FileDescriptor& descriptor) const +bool SlavePTY::can_read(FileDescription& descriptor) const { if (m_master->is_closed()) return true; return TTY::can_read(descriptor); } -ssize_t SlavePTY::read(FileDescriptor& descriptor, byte* buffer, ssize_t size) +ssize_t SlavePTY::read(FileDescription& descriptor, byte* buffer, ssize_t size) { if (m_master->is_closed()) return 0; diff --git a/Kernel/TTY/SlavePTY.h b/Kernel/TTY/SlavePTY.h index ffe7ebd8b1a781..83387d87312f76 100644 --- a/Kernel/TTY/SlavePTY.h +++ b/Kernel/TTY/SlavePTY.h @@ -21,9 +21,9 @@ class SlavePTY final : public TTY { virtual ssize_t on_tty_write(const byte*, ssize_t) override; // ^CharacterDevice - virtual bool can_read(FileDescriptor&) const override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual bool can_write(FileDescriptor&) const override; + virtual bool can_read(FileDescription&) const override; + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual bool can_write(FileDescription&) const override; virtual const char* class_name() const override { return "SlavePTY"; } virtual void close() override; diff --git a/Kernel/TTY/TTY.cpp b/Kernel/TTY/TTY.cpp index 3a659a9585b632..eb82d6f72010ee 100644 --- a/Kernel/TTY/TTY.cpp +++ b/Kernel/TTY/TTY.cpp @@ -24,12 +24,12 @@ void TTY::set_default_termios() memcpy(m_termios.c_cc, default_cc, sizeof(default_cc)); } -ssize_t TTY::read(FileDescriptor&, byte* buffer, ssize_t size) +ssize_t TTY::read(FileDescription&, byte* buffer, ssize_t size) { return m_buffer.read(buffer, size); } -ssize_t TTY::write(FileDescriptor&, const byte* buffer, ssize_t size) +ssize_t TTY::write(FileDescription&, const byte* buffer, ssize_t size) { #ifdef TTY_DEBUG dbgprintf("TTY::write {%u} ", size); @@ -42,12 +42,12 @@ ssize_t TTY::write(FileDescriptor&, const byte* buffer, ssize_t size) return size; } -bool TTY::can_read(FileDescriptor&) const +bool TTY::can_read(FileDescription&) const { return !m_buffer.is_empty(); } -bool TTY::can_write(FileDescriptor&) const +bool TTY::can_write(FileDescription&) const { return true; } @@ -111,7 +111,7 @@ void TTY::set_termios(const termios& t) ); } -int TTY::ioctl(FileDescriptor&, unsigned request, unsigned arg) +int TTY::ioctl(FileDescription&, unsigned request, unsigned arg) { auto& process = current->process(); pid_t pgid; diff --git a/Kernel/TTY/TTY.h b/Kernel/TTY/TTY.h index 150b7c3761a111..78c77628292236 100644 --- a/Kernel/TTY/TTY.h +++ b/Kernel/TTY/TTY.h @@ -10,12 +10,12 @@ class TTY : public CharacterDevice { public: virtual ~TTY() override; - virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override; - virtual ssize_t write(FileDescriptor&, const byte*, ssize_t) override; - virtual bool can_read(FileDescriptor&) const override; - virtual bool can_write(FileDescriptor&) const override; - virtual int ioctl(FileDescriptor&, unsigned request, unsigned arg) override final; - virtual String absolute_path(const FileDescriptor&) const override { return tty_name(); } + virtual ssize_t read(FileDescription&, byte*, ssize_t) override; + virtual ssize_t write(FileDescription&, const byte*, ssize_t) override; + virtual bool can_read(FileDescription&) const override; + virtual bool can_write(FileDescription&) const override; + virtual int ioctl(FileDescription&, unsigned request, unsigned arg) override final; + virtual String absolute_path(const FileDescription&) const override { return tty_name(); } virtual String tty_name() const = 0; diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 62caa2ce237d8b..0d53125938a2fb 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include #include @@ -129,7 +129,7 @@ void Thread::block(Thread::State new_state) process().big_lock().lock(); } -void Thread::block(Thread::State new_state, FileDescriptor& descriptor) +void Thread::block(Thread::State new_state, FileDescription& descriptor) { m_blocked_descriptor = &descriptor; block(new_state); @@ -512,7 +512,7 @@ Thread* Thread::clone(Process& process) return clone; } -KResult Thread::wait_for_connect(FileDescriptor& descriptor) +KResult Thread::wait_for_connect(FileDescription& descriptor) { ASSERT(descriptor.is_socket()); auto& socket = *descriptor.socket(); diff --git a/Kernel/Thread.h b/Kernel/Thread.h index 40f7abba11873e..328d2b038805f1 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -12,7 +12,7 @@ #include class Alarm; -class FileDescriptor; +class FileDescription; class Process; class Region; class Thread; @@ -97,13 +97,13 @@ class Thread : public InlineLinkedListNode { void sleep(dword ticks); void block(Thread::State); - void block(Thread::State, FileDescriptor&); + void block(Thread::State, FileDescription&); void unblock(); void set_wakeup_time(qword t) { m_wakeup_time = t; } qword wakeup_time() const { return m_wakeup_time; } void snooze_until(Alarm&); - KResult wait_for_connect(FileDescriptor&); + KResult wait_for_connect(FileDescription&); const FarPtr& far_ptr() const { return m_far_ptr; } @@ -181,7 +181,7 @@ class Thread : public InlineLinkedListNode { RetainPtr m_kernel_stack_region; RetainPtr m_kernel_stack_for_signal_handler_region; pid_t m_waitee_pid { -1 }; - RetainPtr m_blocked_descriptor; + RetainPtr m_blocked_descriptor; timeval m_select_timeout; SignalActionData m_signal_action_data[32]; Region* m_signal_stack_user_region { nullptr }; diff --git a/LibCore/CFile.cpp b/LibCore/CFile.cpp index ce686ec4163e04..335f54009abb46 100644 --- a/LibCore/CFile.cpp +++ b/LibCore/CFile.cpp @@ -10,11 +10,11 @@ CFile::CFile(const StringView& filename) CFile::~CFile() { - if (m_should_close_file_descriptor == ShouldCloseFileDescriptor::Yes && mode() != NotOpen) + if (m_should_close_file_descriptor == ShouldCloseFileDescription::Yes && mode() != NotOpen) close(); } -bool CFile::open(int fd, CIODevice::OpenMode mode, ShouldCloseFileDescriptor should_close) +bool CFile::open(int fd, CIODevice::OpenMode mode, ShouldCloseFileDescription should_close) { set_fd(fd); set_mode(mode); diff --git a/LibCore/CFile.h b/LibCore/CFile.h index de051b3084f059..669f0df4eb4b9d 100644 --- a/LibCore/CFile.h +++ b/LibCore/CFile.h @@ -14,16 +14,16 @@ class CFile final : public CIODevice { virtual bool open(CIODevice::OpenMode) override; - enum class ShouldCloseFileDescriptor + enum class ShouldCloseFileDescription { No = 0, Yes }; - bool open(int fd, CIODevice::OpenMode, ShouldCloseFileDescriptor); + bool open(int fd, CIODevice::OpenMode, ShouldCloseFileDescription); virtual const char* class_name() const override { return "CFile"; } private: String m_filename; - ShouldCloseFileDescriptor m_should_close_file_descriptor { ShouldCloseFileDescriptor::Yes }; + ShouldCloseFileDescription m_should_close_file_descriptor { ShouldCloseFileDescription::Yes }; }; diff --git a/Shell/main.cpp b/Shell/main.cpp index 769e88273cc676..b5e26767dc0080 100644 --- a/Shell/main.cpp +++ b/Shell/main.cpp @@ -189,10 +189,10 @@ static bool handle_builtin(int argc, char** argv, int& retval) return false; } -class FileDescriptorCollector { +class FileDescriptionCollector { public: - FileDescriptorCollector() { } - ~FileDescriptorCollector() { collect(); } + FileDescriptionCollector() { } + ~FileDescriptionCollector() { collect(); } void collect() { @@ -302,7 +302,7 @@ static int run_command(const String& cmd) if (subcommands.is_empty()) return 0; - FileDescriptorCollector fds; + FileDescriptionCollector fds; for (int i = 0; i < subcommands.size(); ++i) { auto& subcommand = subcommands[i];