summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Kernel/Console.cpp6
-rw-r--r--Kernel/Console.h8
-rw-r--r--Kernel/Devices/BXVGADevice.cpp12
-rw-r--r--Kernel/Devices/BXVGADevice.h10
-rw-r--r--Kernel/Devices/DebugLogDevice.cpp2
-rw-r--r--Kernel/Devices/DebugLogDevice.h8
-rw-r--r--Kernel/Devices/FullDevice.cpp6
-rw-r--r--Kernel/Devices/FullDevice.h8
-rw-r--r--Kernel/Devices/KeyboardDevice.cpp6
-rw-r--r--Kernel/Devices/KeyboardDevice.h8
-rw-r--r--Kernel/Devices/NullDevice.cpp6
-rw-r--r--Kernel/Devices/NullDevice.h8
-rw-r--r--Kernel/Devices/PS2MouseDevice.cpp6
-rw-r--r--Kernel/Devices/PS2MouseDevice.h8
-rw-r--r--Kernel/Devices/RandomDevice.cpp6
-rw-r--r--Kernel/Devices/RandomDevice.h8
-rw-r--r--Kernel/Devices/ZeroDevice.cpp6
-rw-r--r--Kernel/Devices/ZeroDevice.h8
-rw-r--r--Kernel/File.cpp2
-rw-r--r--Kernel/File.h10
-rw-r--r--Kernel/FileSystem/FIFO.cpp8
-rw-r--r--Kernel/FileSystem/FIFO.h8
-rw-r--r--Kernel/FileSystem/FileDescriptor.cpp20
-rw-r--r--Kernel/FileSystem/FileDescriptor.h10
-rw-r--r--Kernel/KSyms.cpp2
-rw-r--r--Kernel/Process.cpp22
-rw-r--r--Kernel/ProcessTracer.cpp2
-rw-r--r--Kernel/ProcessTracer.h8
-rw-r--r--Kernel/Scheduler.cpp8
-rw-r--r--Kernel/SharedMemory.cpp4
-rw-r--r--Kernel/SharedMemory.h8
-rw-r--r--Kernel/TTY/MasterPTY.cpp12
-rw-r--r--Kernel/TTY/MasterPTY.h10
-rw-r--r--Kernel/TTY/PTYMultiplexer.h8
-rw-r--r--Kernel/TTY/SlavePTY.cpp10
-rw-r--r--Kernel/TTY/SlavePTY.h6
-rw-r--r--Kernel/TTY/TTY.cpp11
-rw-r--r--Kernel/TTY/TTY.h10
-rw-r--r--Kernel/kprintf.cpp2
39 files changed, 156 insertions, 155 deletions
diff --git a/Kernel/Console.cpp b/Kernel/Console.cpp
index 267926280e..394270a785 100644
--- a/Kernel/Console.cpp
+++ b/Kernel/Console.cpp
@@ -23,19 +23,19 @@ Console::~Console()
{
}
-bool Console::can_read(Process&) const
+bool Console::can_read(FileDescriptor&) const
{
return false;
}
-ssize_t Console::read(Process&, byte*, ssize_t)
+ssize_t Console::read(FileDescriptor&, 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(Process&, const byte* data, ssize_t size)
+ssize_t Console::write(FileDescriptor&, const byte* data, ssize_t size)
{
if (!size)
return 0;
diff --git a/Kernel/Console.h b/Kernel/Console.h
index b7e19d53af..45101a8d0d 100644
--- a/Kernel/Console.h
+++ b/Kernel/Console.h
@@ -19,10 +19,10 @@ public:
virtual ~Console() override;
// ^CharacterDevice
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) const override { return true; }
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, 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(FileDescriptor&, byte*, ssize_t) override;
+ virtual ssize_t write(FileDescriptor&, 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 eacf06f4f2..bcdf4bb174 100644
--- a/Kernel/Devices/BXVGADevice.cpp
+++ b/Kernel/Devices/BXVGADevice.cpp
@@ -103,7 +103,7 @@ KResultOr<Region*> BXVGADevice::mmap(Process& process, LinearAddress preferred_l
return region;
}
-int BXVGADevice::ioctl(Process& process, unsigned request, unsigned arg)
+int BXVGADevice::ioctl(FileDescriptor&, unsigned request, unsigned arg)
{
switch (request) {
case BXVGA_DEV_IOCTL_SET_Y_OFFSET:
@@ -113,7 +113,7 @@ int BXVGADevice::ioctl(Process& process, unsigned request, unsigned arg)
return 0;
case BXVGA_DEV_IOCTL_SET_RESOLUTION: {
auto* resolution = (const BXVGAResolution*)arg;
- if (!process.validate_read_typed(resolution))
+ if (!current->process().validate_read_typed(resolution))
return -EFAULT;
set_resolution(resolution->width, resolution->height);
return 0;
@@ -123,22 +123,22 @@ int BXVGADevice::ioctl(Process& process, unsigned request, unsigned arg)
};
}
-bool BXVGADevice::can_read(Process&) const
+bool BXVGADevice::can_read(FileDescriptor&) const
{
ASSERT_NOT_REACHED();
}
-bool BXVGADevice::can_write(Process&) const
+bool BXVGADevice::can_write(FileDescriptor&) const
{
ASSERT_NOT_REACHED();
}
-ssize_t BXVGADevice::read(Process&, byte*, ssize_t)
+ssize_t BXVGADevice::read(FileDescriptor&, byte*, ssize_t)
{
ASSERT_NOT_REACHED();
}
-ssize_t BXVGADevice::write(Process&, const byte*, ssize_t)
+ssize_t BXVGADevice::write(FileDescriptor&, const byte*, ssize_t)
{
ASSERT_NOT_REACHED();
}
diff --git a/Kernel/Devices/BXVGADevice.h b/Kernel/Devices/BXVGADevice.h
index 4db38fc577..96207d400d 100644
--- a/Kernel/Devices/BXVGADevice.h
+++ b/Kernel/Devices/BXVGADevice.h
@@ -17,7 +17,7 @@ public:
void set_resolution(int width, int height);
void set_y_offset(int);
- virtual int ioctl(Process&, unsigned request, unsigned arg) override;
+ virtual int ioctl(FileDescriptor&, unsigned request, unsigned arg) override;
virtual KResultOr<Region*> mmap(Process&, LinearAddress preferred_laddr, size_t offset, size_t) override;
size_t framebuffer_size_in_bytes() const { return m_framebuffer_size.area() * sizeof(dword) * 2; }
@@ -25,10 +25,10 @@ public:
private:
virtual const char* class_name() const override { return "BXVGA"; }
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) const override;
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
+ 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;
void set_register(word index, word value);
dword find_framebuffer_address();
diff --git a/Kernel/Devices/DebugLogDevice.cpp b/Kernel/Devices/DebugLogDevice.cpp
index 321cd97d35..daa879ffb1 100644
--- a/Kernel/Devices/DebugLogDevice.cpp
+++ b/Kernel/Devices/DebugLogDevice.cpp
@@ -19,7 +19,7 @@ DebugLogDevice::~DebugLogDevice()
{
}
-ssize_t DebugLogDevice::write(Process&, const byte* data, ssize_t data_size)
+ssize_t DebugLogDevice::write(FileDescriptor&, 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 dd6db9f4d2..9b09205074 100644
--- a/Kernel/Devices/DebugLogDevice.h
+++ b/Kernel/Devices/DebugLogDevice.h
@@ -9,9 +9,9 @@ public:
private:
// ^CharacterDevice
- virtual ssize_t read(Process&, byte*, ssize_t) override { return 0; }
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_write(Process&) const override { return true; }
- virtual bool can_read(Process&) const override { return true; }
+ 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 const char* class_name() const override { return "DebugLogDevice"; }
};
diff --git a/Kernel/Devices/FullDevice.cpp b/Kernel/Devices/FullDevice.cpp
index 2b9ad32b4a..024cd699e2 100644
--- a/Kernel/Devices/FullDevice.cpp
+++ b/Kernel/Devices/FullDevice.cpp
@@ -12,19 +12,19 @@ FullDevice::~FullDevice()
{
}
-bool FullDevice::can_read(Process&) const
+bool FullDevice::can_read(FileDescriptor&) const
{
return true;
}
-ssize_t FullDevice::read(Process&, byte* buffer, ssize_t size)
+ssize_t FullDevice::read(FileDescriptor&, byte* buffer, ssize_t size)
{
ssize_t count = min(PAGE_SIZE, size);
memset(buffer, 0, (size_t)count);
return count;
}
-ssize_t FullDevice::write(Process&, const byte*, ssize_t size)
+ssize_t FullDevice::write(FileDescriptor&, const byte*, ssize_t size)
{
if (size == 0)
return 0;
diff --git a/Kernel/Devices/FullDevice.h b/Kernel/Devices/FullDevice.h
index b494656047..c88e6f6857 100644
--- a/Kernel/Devices/FullDevice.h
+++ b/Kernel/Devices/FullDevice.h
@@ -10,10 +10,10 @@ public:
private:
// ^CharacterDevice
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) 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(FileDescriptor&) const override;
+ virtual bool can_write(FileDescriptor&) 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 9348ed7f23..856fcc2fb8 100644
--- a/Kernel/Devices/KeyboardDevice.cpp
+++ b/Kernel/Devices/KeyboardDevice.cpp
@@ -208,12 +208,12 @@ KeyboardDevice::~KeyboardDevice()
{
}
-bool KeyboardDevice::can_read(Process&) const
+bool KeyboardDevice::can_read(FileDescriptor&) const
{
return !m_queue.is_empty();
}
-ssize_t KeyboardDevice::read(Process&, byte* buffer, ssize_t size)
+ssize_t KeyboardDevice::read(FileDescriptor&, byte* buffer, ssize_t size)
{
ssize_t nread = 0;
while (nread < size) {
@@ -229,7 +229,7 @@ ssize_t KeyboardDevice::read(Process&, byte* buffer, ssize_t size)
return nread;
}
-ssize_t KeyboardDevice::write(Process&, const byte*, ssize_t)
+ssize_t KeyboardDevice::write(FileDescriptor&, const byte*, ssize_t)
{
return 0;
}
diff --git a/Kernel/Devices/KeyboardDevice.h b/Kernel/Devices/KeyboardDevice.h
index 8931deab12..c6e9fa972e 100644
--- a/Kernel/Devices/KeyboardDevice.h
+++ b/Kernel/Devices/KeyboardDevice.h
@@ -22,10 +22,10 @@ public:
void set_client(KeyboardClient* client) { m_client = client; }
// ^CharacterDevice
- virtual ssize_t read(Process&, byte* buffer, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual ssize_t write(Process&, const byte* buffer, ssize_t) override;
- virtual bool can_write(Process&) const override { return true; }
+ 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; }
private:
// ^IRQHandler
diff --git a/Kernel/Devices/NullDevice.cpp b/Kernel/Devices/NullDevice.cpp
index eae5a2e037..e93bd55891 100644
--- a/Kernel/Devices/NullDevice.cpp
+++ b/Kernel/Devices/NullDevice.cpp
@@ -20,17 +20,17 @@ NullDevice::~NullDevice()
{
}
-bool NullDevice::can_read(Process&) const
+bool NullDevice::can_read(FileDescriptor&) const
{
return true;
}
-ssize_t NullDevice::read(Process&, byte*, ssize_t)
+ssize_t NullDevice::read(FileDescriptor&, byte*, ssize_t)
{
return 0;
}
-ssize_t NullDevice::write(Process&, const byte*, ssize_t buffer_size)
+ssize_t NullDevice::write(FileDescriptor&, 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 d325bbecb5..b00cfeed67 100644
--- a/Kernel/Devices/NullDevice.h
+++ b/Kernel/Devices/NullDevice.h
@@ -12,10 +12,10 @@ public:
private:
// ^CharacterDevice
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_write(Process&) const override { return true; }
- virtual bool can_read(Process&) 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(FileDescriptor&) const override;
virtual const char* class_name() const override { return "NullDevice"; }
};
diff --git a/Kernel/Devices/PS2MouseDevice.cpp b/Kernel/Devices/PS2MouseDevice.cpp
index b21f489b63..0af6ca4010 100644
--- a/Kernel/Devices/PS2MouseDevice.cpp
+++ b/Kernel/Devices/PS2MouseDevice.cpp
@@ -160,12 +160,12 @@ byte PS2MouseDevice::mouse_read()
return IO::in8(0x60);
}
-bool PS2MouseDevice::can_read(Process&) const
+bool PS2MouseDevice::can_read(FileDescriptor&) const
{
return !m_queue.is_empty();
}
-ssize_t PS2MouseDevice::read(Process&, byte* buffer, ssize_t size)
+ssize_t PS2MouseDevice::read(FileDescriptor&, byte* buffer, ssize_t size)
{
ssize_t nread = 0;
while (nread < size) {
@@ -181,7 +181,7 @@ ssize_t PS2MouseDevice::read(Process&, byte* buffer, ssize_t size)
return nread;
}
-ssize_t PS2MouseDevice::write(Process&, const byte*, ssize_t)
+ssize_t PS2MouseDevice::write(FileDescriptor&, const byte*, ssize_t)
{
return 0;
}
diff --git a/Kernel/Devices/PS2MouseDevice.h b/Kernel/Devices/PS2MouseDevice.h
index 3ca6832797..a3e4eef698 100644
--- a/Kernel/Devices/PS2MouseDevice.h
+++ b/Kernel/Devices/PS2MouseDevice.h
@@ -13,10 +13,10 @@ public:
static PS2MouseDevice& the();
// ^CharacterDevice
- virtual bool can_read(Process&) const override;
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_write(Process&) const override { return true; }
+ 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; }
private:
// ^IRQHandler
diff --git a/Kernel/Devices/RandomDevice.cpp b/Kernel/Devices/RandomDevice.cpp
index 25d9159dd2..354212fbcd 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(Process&) const
+bool RandomDevice::can_read(FileDescriptor&) const
{
return true;
}
-ssize_t RandomDevice::read(Process&, byte* buffer, ssize_t size)
+ssize_t RandomDevice::read(FileDescriptor&, 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(Process&, byte* buffer, ssize_t size)
return nread;
}
-ssize_t RandomDevice::write(Process&, const byte*, ssize_t size)
+ssize_t RandomDevice::write(FileDescriptor&, 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 7de52f0d82..fe7fd1a439 100644
--- a/Kernel/Devices/RandomDevice.h
+++ b/Kernel/Devices/RandomDevice.h
@@ -12,10 +12,10 @@ public:
private:
// ^CharacterDevice
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) 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(FileDescriptor&) const override;
+ virtual bool can_write(FileDescriptor&) 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 be9ef67529..ee809045bc 100644
--- a/Kernel/Devices/ZeroDevice.cpp
+++ b/Kernel/Devices/ZeroDevice.cpp
@@ -11,19 +11,19 @@ ZeroDevice::~ZeroDevice()
{
}
-bool ZeroDevice::can_read(Process&) const
+bool ZeroDevice::can_read(FileDescriptor&) const
{
return true;
}
-ssize_t ZeroDevice::read(Process&, byte* buffer, ssize_t size)
+ssize_t ZeroDevice::read(FileDescriptor&, byte* buffer, ssize_t size)
{
ssize_t count = min(PAGE_SIZE, size);
memset(buffer, 0, (size_t)count);
return count;
}
-ssize_t ZeroDevice::write(Process&, const byte*, ssize_t size)
+ssize_t ZeroDevice::write(FileDescriptor&, const byte*, ssize_t size)
{
return min(PAGE_SIZE, size);
}
diff --git a/Kernel/Devices/ZeroDevice.h b/Kernel/Devices/ZeroDevice.h
index cfcb00db9c..74cfb60361 100644
--- a/Kernel/Devices/ZeroDevice.h
+++ b/Kernel/Devices/ZeroDevice.h
@@ -10,10 +10,10 @@ public:
private:
// ^CharacterDevice
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) 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(FileDescriptor&) const override;
+ virtual bool can_write(FileDescriptor&) const override { return true; }
virtual const char* class_name() const override { return "ZeroDevice"; }
};
diff --git a/Kernel/File.cpp b/Kernel/File.cpp
index 8f09ad25e8..78a1371cef 100644
--- a/Kernel/File.cpp
+++ b/Kernel/File.cpp
@@ -19,7 +19,7 @@ void File::close()
{
}
-int File::ioctl(Process&, unsigned, unsigned)
+int File::ioctl(FileDescriptor&, unsigned, unsigned)
{
return -ENOTTY;
}
diff --git a/Kernel/File.h b/Kernel/File.h
index fcc0db246d..60fbab1d41 100644
--- a/Kernel/File.h
+++ b/Kernel/File.h
@@ -18,12 +18,12 @@ public:
virtual KResultOr<Retained<FileDescriptor>> open(int options);
virtual void close();
- virtual bool can_read(Process&) const = 0;
- virtual bool can_write(Process&) const = 0;
+ virtual bool can_read(FileDescriptor&) const = 0;
+ virtual bool can_write(FileDescriptor&) const = 0;
- virtual ssize_t read(Process&, byte*, ssize_t) = 0;
- virtual ssize_t write(Process&, const byte*, ssize_t) = 0;
- virtual int ioctl(Process&, unsigned request, unsigned arg);
+ 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<Region*> mmap(Process&, LinearAddress preferred_laddr, size_t offset, size_t size);
virtual String absolute_path() const = 0;
diff --git a/Kernel/FileSystem/FIFO.cpp b/Kernel/FileSystem/FIFO.cpp
index 1bc4a550ac..2564fb9d4a 100644
--- a/Kernel/FileSystem/FIFO.cpp
+++ b/Kernel/FileSystem/FIFO.cpp
@@ -81,17 +81,17 @@ void FIFO::detach(Direction direction)
}
}
-bool FIFO::can_read(Process&) const
+bool FIFO::can_read(FileDescriptor&) const
{
return !m_buffer.is_empty() || !m_writers;
}
-bool FIFO::can_write(Process&) const
+bool FIFO::can_write(FileDescriptor&) const
{
return m_buffer.bytes_in_write_buffer() < 4096;
}
-ssize_t FIFO::read(Process&, byte* buffer, ssize_t size)
+ssize_t FIFO::read(FileDescriptor&, byte* buffer, ssize_t size)
{
if (!m_writers && m_buffer.is_empty())
return 0;
@@ -105,7 +105,7 @@ ssize_t FIFO::read(Process&, byte* buffer, ssize_t size)
return nread;
}
-ssize_t FIFO::write(Process&, const byte* buffer, ssize_t size)
+ssize_t FIFO::write(FileDescriptor&, const byte* buffer, ssize_t size)
{
if (!m_readers)
return 0;
diff --git a/Kernel/FileSystem/FIFO.h b/Kernel/FileSystem/FIFO.h
index 4e72032c28..e10d6e6c22 100644
--- a/Kernel/FileSystem/FIFO.h
+++ b/Kernel/FileSystem/FIFO.h
@@ -26,10 +26,10 @@ public:
private:
// ^File
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) const override;
+ 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 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/FileDescriptor.cpp
index b185ed5585..3add6c4739 100644
--- a/Kernel/FileSystem/FileDescriptor.cpp
+++ b/Kernel/FileSystem/FileDescriptor.cpp
@@ -173,10 +173,10 @@ off_t FileDescriptor::seek(off_t offset, int whence)
return m_current_offset;
}
-ssize_t FileDescriptor::read(Process& process, byte* buffer, ssize_t count)
+ssize_t FileDescriptor::read(byte* buffer, ssize_t count)
{
if (m_file) {
- int nread = m_file->read(process, buffer, count);
+ int nread = m_file->read(*this, buffer, count);
if (!m_file->is_seekable())
m_current_offset += nread;
return nread;
@@ -189,10 +189,10 @@ ssize_t FileDescriptor::read(Process& process, byte* buffer, ssize_t count)
return nread;
}
-ssize_t FileDescriptor::write(Process& process, const byte* data, ssize_t size)
+ssize_t FileDescriptor::write(const byte* data, ssize_t size)
{
if (m_file) {
- int nwritten = m_file->write(process, data, size);
+ int nwritten = m_file->write(*this, data, size);
if (m_file->is_seekable())
m_current_offset += nwritten;
return nwritten;
@@ -205,25 +205,25 @@ ssize_t FileDescriptor::write(Process& process, const byte* data, ssize_t size)
return nwritten;
}
-bool FileDescriptor::can_write(Process& process)
+bool FileDescriptor::can_write()
{
if (m_file)
- return m_file->can_write(process);
+ return m_file->can_write(*this);
if (m_socket)
return m_socket->can_write(m_socket_role);
return true;
}
-bool FileDescriptor::can_read(Process& process)
+bool FileDescriptor::can_read()
{
if (m_file)
- return m_file->can_read(process);
+ return m_file->can_read(*this);
if (m_socket)
return m_socket->can_read(m_socket_role);
return true;
}
-ByteBuffer FileDescriptor::read_entire_file(Process& process)
+ByteBuffer FileDescriptor::read_entire_file()
{
// HACK ALERT: (This entire function)
@@ -231,7 +231,7 @@ ByteBuffer FileDescriptor::read_entire_file(Process& process)
if (m_file) {
auto buffer = ByteBuffer::create_uninitialized(1024);
- ssize_t nread = m_file->read(process, buffer.pointer(), buffer.size());
+ ssize_t nread = m_file->read(*this, buffer.pointer(), buffer.size());
ASSERT(nread >= 0);
buffer.trim(nread);
return buffer;
diff --git a/Kernel/FileSystem/FileDescriptor.h b/Kernel/FileSystem/FileDescriptor.h
index 33b4ee1062..7de49267f2 100644
--- a/Kernel/FileSystem/FileDescriptor.h
+++ b/Kernel/FileSystem/FileDescriptor.h
@@ -30,18 +30,18 @@ public:
int close();
off_t seek(off_t, int whence);
- ssize_t read(Process&, byte*, ssize_t);
- ssize_t write(Process&, const byte* data, ssize_t);
+ ssize_t read(byte*, ssize_t);
+ ssize_t write(const byte* data, ssize_t);
KResult fstat(stat&);
KResult fchmod(mode_t);
- bool can_read(Process&);
- bool can_write(Process&);
+ bool can_read();
+ bool can_write();
ssize_t get_dir_entries(byte* buffer, ssize_t);
- ByteBuffer read_entire_file(Process&);
+ ByteBuffer read_entire_file();
KResultOr<String> absolute_path();
diff --git a/Kernel/KSyms.cpp b/Kernel/KSyms.cpp
index e07c86089b..92ad15d785 100644
--- a/Kernel/KSyms.cpp
+++ b/Kernel/KSyms.cpp
@@ -135,7 +135,7 @@ void load_ksyms()
auto result = VFS::the().open("/kernel.map", 0, 0, *VFS::the().root_inode());
ASSERT(!result.is_error());
auto descriptor = result.value();
- auto buffer = descriptor->read_entire_file(current->process());
+ auto buffer = descriptor->read_entire_file();
ASSERT(buffer);
load_ksyms_from_data(buffer);
}
diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp
index 7810a39e53..64a5959a77 100644
--- a/Kernel/Process.cpp
+++ b/Kernel/Process.cpp
@@ -837,14 +837,14 @@ ssize_t Process::sys$write(int fd, const byte* data, ssize_t size)
#ifdef IO_DEBUG
dbgprintf("while %u < %u\n", nwritten, size);
#endif
- if (!descriptor->can_write(*this)) {
+ if (!descriptor->can_write()) {
#ifdef IO_DEBUG
dbgprintf("block write on %d\n", fd);
#endif
current->m_blocked_fd = fd;
current->block(Thread::State::BlockedWrite);
}
- ssize_t rc = descriptor->write(*this, (const byte*)data + nwritten, size - nwritten);
+ ssize_t rc = descriptor->write((const byte*)data + nwritten, size - nwritten);
#ifdef IO_DEBUG
dbgprintf(" -> write returned %d\n", rc);
#endif
@@ -863,7 +863,7 @@ ssize_t Process::sys$write(int fd, const byte* data, ssize_t size)
nwritten += rc;
}
} else {
- nwritten = descriptor->write(*this, (const byte*)data, size);
+ nwritten = descriptor->write((const byte*)data, size);
}
if (current->has_unmasked_pending_signals()) {
current->block(Thread::State::BlockedSignal);
@@ -888,14 +888,14 @@ ssize_t Process::sys$read(int fd, byte* buffer, ssize_t size)
if (!descriptor)
return -EBADF;
if (descriptor->is_blocking()) {
- if (!descriptor->can_read(*this)) {
+ if (!descriptor->can_read()) {
current->m_blocked_fd = fd;
current->block(Thread::State::BlockedRead);
if (current->m_was_interrupted_while_blocked)
return -EINTR;
}
}
- return descriptor->read(*this, buffer, size);
+ return descriptor->read(buffer, size);
}
int Process::sys$close(int fd)
@@ -1014,7 +1014,7 @@ int Process::sys$readlink(const char* path, char* buffer, ssize_t size)
if (!descriptor->metadata().is_symlink())
return -EINVAL;
- auto contents = descriptor->read_entire_file(*this);
+ auto contents = descriptor->read_entire_file();
if (!contents)
return -EIO; // FIXME: Get a more detailed error from VFS.
@@ -1540,7 +1540,7 @@ int Process::sys$ioctl(int fd, unsigned request, unsigned arg)
return -EBADF;
if (!descriptor->is_file())
return -ENOTTY;
- return descriptor->file()->ioctl(*this, request, arg);
+ return descriptor->file()->ioctl(*descriptor, request, arg);
}
int Process::sys$getdtablesize()
@@ -1755,7 +1755,7 @@ int Process::sys$select(const Syscall::SC_select_params* params)
auto* descriptor = file_descriptor(fd);
if (!descriptor)
continue;
- if (descriptor->can_read(*this)) {
+ if (descriptor->can_read()) {
bitmap.set(fd, true);
++markedfds;
}
@@ -1769,7 +1769,7 @@ int Process::sys$select(const Syscall::SC_select_params* params)
auto* descriptor = file_descriptor(fd);
if (!descriptor)
continue;
- if (descriptor->can_write(*this)) {
+ if (descriptor->can_write()) {
bitmap.set(fd, true);
++markedfds;
}
@@ -1807,9 +1807,9 @@ int Process::sys$poll(pollfd* fds, int nfds, int timeout)
continue;
}
fds[i].revents = 0;
- if (fds[i].events & POLLIN && descriptor->can_read(*this))
+ if (fds[i].events & POLLIN && descriptor->can_read())
fds[i].revents |= POLLIN;
- if (fds[i].events & POLLOUT && descriptor->can_write(*this))
+ if (fds[i].events & POLLOUT && descriptor->can_write())
fds[i].revents |= POLLOUT;
if (fds[i].revents)
diff --git a/Kernel/ProcessTracer.cpp b/Kernel/ProcessTracer.cpp
index 30889a121d..5805a84f70 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(Process&, byte* buffer, int buffer_size)
+int ProcessTracer::read(FileDescriptor&, byte* buffer, int buffer_size)
{
if (m_calls.is_empty())
return 0;
diff --git a/Kernel/ProcessTracer.h b/Kernel/ProcessTracer.h
index 355d5512d1..8cc043d8fe 100644
--- a/Kernel/ProcessTracer.h
+++ b/Kernel/ProcessTracer.h
@@ -12,11 +12,11 @@ public:
bool is_dead() const { return m_dead; }
void set_dead() { m_dead = true; }
- virtual bool can_read(Process&) const override { return !m_calls.is_empty() || m_dead; }
- virtual int read(Process&, byte*, int) override;
+ virtual bool can_read(FileDescriptor&) const override { return !m_calls.is_empty() || m_dead; }
+ virtual int read(FileDescriptor&, byte*, int) override;
- virtual bool can_write(Process&) const override { return true; }
- virtual int write(Process&, const byte*, int) override { return -EIO; }
+ virtual bool can_write(FileDescriptor&) const override { return true; }
+ virtual int write(FileDescriptor&, const byte*, int) override { return -EIO; }
virtual String absolute_path() const override;
diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp
index 14507c4bfb..a92e57041f 100644
--- a/Kernel/Scheduler.cpp
+++ b/Kernel/Scheduler.cpp
@@ -90,14 +90,14 @@ bool Scheduler::pick_next()
if (thread.state() == Thread::BlockedRead) {
ASSERT(thread.m_blocked_fd != -1);
// FIXME: Block until the amount of data wanted is available.
- if (process.m_fds[thread.m_blocked_fd].descriptor->can_read(process))
+ if (process.m_fds[thread.m_blocked_fd].descriptor->can_read())
thread.unblock();
return IterationDecision::Continue;
}
if (thread.state() == Thread::BlockedWrite) {
ASSERT(thread.m_blocked_fd != -1);
- if (process.m_fds[thread.m_blocked_fd].descriptor->can_write(process))
+ if (process.m_fds[thread.m_blocked_fd].descriptor->can_write())
thread.unblock();
return IterationDecision::Continue;
}
@@ -130,13 +130,13 @@ bool Scheduler::pick_next()
}
}
for (int fd : thread.m_select_read_fds) {
- if (process.m_fds[fd].descriptor->can_read(process)) {
+ if (process.m_fds[fd].descriptor->can_read()) {
thread.unblock();
return IterationDecision::Continue;
}
}
for (int fd : thread.m_select_write_fds) {
- if (process.m_fds[fd].descriptor->can_write(process)) {
+ if (process.m_fds[fd].descriptor->can_write()) {
thread.unblock();
return IterationDecision::Continue;
}
diff --git a/Kernel/SharedMemory.cpp b/Kernel/SharedMemory.cpp
index 698efbf8db..72472f3073 100644
--- a/Kernel/SharedMemory.cpp
+++ b/Kernel/SharedMemory.cpp
@@ -73,7 +73,7 @@ String SharedMemory::absolute_path() const
return String::format("shm:%u", this);
}
-int SharedMemory::read(Process&, byte* buffer, int buffer_size)
+int SharedMemory::read(FileDescriptor&, byte* buffer, int buffer_size)
{
UNUSED_PARAM(buffer);
UNUSED_PARAM(buffer_size);
@@ -81,7 +81,7 @@ int SharedMemory::read(Process&, byte* buffer, int buffer_size)
ASSERT_NOT_REACHED();
}
-int SharedMemory::write(Process&, const byte* data, int data_size)
+int SharedMemory::write(FileDescriptor&, const byte* data, int data_size)
{
UNUSED_PARAM(data);
UNUSED_PARAM(data_size);
diff --git a/Kernel/SharedMemory.h b/Kernel/SharedMemory.h
index a7347274ea..0641519503 100644
--- a/Kernel/SharedMemory.h
+++ b/Kernel/SharedMemory.h
@@ -24,10 +24,10 @@ public:
private:
// ^File
- virtual bool can_read(Process&) const override { return true; }
- virtual bool can_write(Process&) const override { return true; }
- virtual int read(Process&, byte*, int) override;
- virtual int write(Process&, const byte*, int) override;
+ 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 override;
virtual const char* class_name() const override { return "SharedMemory"; }
virtual bool is_shared_memory() const override { return true; }
diff --git a/Kernel/TTY/MasterPTY.cpp b/Kernel/TTY/MasterPTY.cpp
index 6c9fd6a6ef..f4fd8b6b98 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(Process&, byte* buffer, ssize_t size)
+ssize_t MasterPTY::read(FileDescriptor&, byte* buffer, ssize_t size)
{
if (!m_slave && m_buffer.is_empty())
return 0;
return m_buffer.read(buffer, size);
}
-ssize_t MasterPTY::write(Process&, const byte* buffer, ssize_t size)
+ssize_t MasterPTY::write(FileDescriptor&, const byte* buffer, ssize_t size)
{
if (!m_slave)
return -EIO;
@@ -46,14 +46,14 @@ ssize_t MasterPTY::write(Process&, const byte* buffer, ssize_t size)
return size;
}
-bool MasterPTY::can_read(Process&) const
+bool MasterPTY::can_read(FileDescriptor&) const
{
if (!m_slave)
return true;
return !m_buffer.is_empty();
}
-bool MasterPTY::can_write(Process&) const
+bool MasterPTY::can_write(FileDescriptor&) const
{
return true;
}
@@ -96,9 +96,9 @@ void MasterPTY::close()
}
}
-int MasterPTY::ioctl(Process& process, unsigned request, unsigned arg)
+int MasterPTY::ioctl(FileDescriptor& descriptor, unsigned request, unsigned arg)
{
if (request == TIOCSWINSZ)
- return m_slave->ioctl(process, request, arg);
+ return m_slave->ioctl(descriptor, request, arg);
return -EINVAL;
}
diff --git a/Kernel/TTY/MasterPTY.h b/Kernel/TTY/MasterPTY.h
index c98dd625f9..22fd3db48e 100644
--- a/Kernel/TTY/MasterPTY.h
+++ b/Kernel/TTY/MasterPTY.h
@@ -20,13 +20,13 @@ public:
private:
// ^CharacterDevice
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) 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(FileDescriptor&) const override;
+ virtual bool can_write(FileDescriptor&) const override;
virtual void close() override;
virtual bool is_master_pty() const override { return true; }
- virtual int ioctl(Process&, unsigned request, unsigned arg) override;
+ virtual int ioctl(FileDescriptor&, unsigned request, unsigned arg) override;
virtual const char* class_name() const override { return "MasterPTY"; }
RetainPtr<SlavePTY> m_slave;
diff --git a/Kernel/TTY/PTYMultiplexer.h b/Kernel/TTY/PTYMultiplexer.h
index ec801456c5..59ff194d65 100644
--- a/Kernel/TTY/PTYMultiplexer.h
+++ b/Kernel/TTY/PTYMultiplexer.h
@@ -16,10 +16,10 @@ public:
// ^CharacterDevice
virtual KResultOr<Retained<FileDescriptor>> open(int options) override;
- virtual ssize_t read(Process&, byte*, ssize_t) override { return 0; }
- virtual ssize_t write(Process&, const byte*, ssize_t) override { return 0; }
- virtual bool can_read(Process&) const override { return true; }
- virtual bool can_write(Process&) const override { return true; }
+ 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; }
void notify_master_destroyed(Badge<MasterPTY>, unsigned index);
diff --git a/Kernel/TTY/SlavePTY.cpp b/Kernel/TTY/SlavePTY.cpp
index 4725f815a3..c16319566a 100644
--- a/Kernel/TTY/SlavePTY.cpp
+++ b/Kernel/TTY/SlavePTY.cpp
@@ -41,23 +41,23 @@ ssize_t SlavePTY::on_tty_write(const byte* data, ssize_t size)
return m_master->on_slave_write(data, size);
}
-bool SlavePTY::can_write(Process&) const
+bool SlavePTY::can_write(FileDescriptor&) const
{
return m_master->can_write_from_slave();
}
-bool SlavePTY::can_read(Process& process) const
+bool SlavePTY::can_read(FileDescriptor& descriptor) const
{
if (m_master->is_closed())
return true;
- return TTY::can_read(process);
+ return TTY::can_read(descriptor);
}
-ssize_t SlavePTY::read(Process& process, byte* buffer, ssize_t size)
+ssize_t SlavePTY::read(FileDescriptor& descriptor, byte* buffer, ssize_t size)
{
if (m_master->is_closed())
return 0;
- return TTY::read(process, buffer, size);
+ return TTY::read(descriptor, buffer, size);
}
void SlavePTY::close()
diff --git a/Kernel/TTY/SlavePTY.h b/Kernel/TTY/SlavePTY.h
index 56ecb33c61..f764c43649 100644
--- a/Kernel/TTY/SlavePTY.h
+++ b/Kernel/TTY/SlavePTY.h
@@ -21,9 +21,9 @@ private:
virtual ssize_t on_tty_write(const byte*, ssize_t) override;
// ^CharacterDevice
- virtual bool can_read(Process&) const override;
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual bool can_write(Process&) const override;
+ virtual bool can_read(FileDescriptor&) const override;
+ virtual ssize_t read(FileDescriptor&, byte*, ssize_t) override;
+ virtual bool can_write(FileDescriptor&) 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 ebcb7e196d..5c02f4c5a9 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(Process&, byte* buffer, ssize_t size)
+ssize_t TTY::read(FileDescriptor&, byte* buffer, ssize_t size)
{
return m_buffer.read(buffer, size);
}
-ssize_t TTY::write(Process&, const byte* buffer, ssize_t size)
+ssize_t TTY::write(FileDescriptor&, const byte* buffer, ssize_t size)
{
#ifdef TTY_DEBUG
dbgprintf("TTY::write {%u} ", size);
@@ -42,12 +42,12 @@ ssize_t TTY::write(Process&, const byte* buffer, ssize_t size)
return size;
}
-bool TTY::can_read(Process&) const
+bool TTY::can_read(FileDescriptor&) const
{
return !m_buffer.is_empty();
}
-bool TTY::can_write(Process&) const
+bool TTY::can_write(FileDescriptor&) const
{
return true;
}
@@ -106,8 +106,9 @@ void TTY::set_termios(const termios& t)
);
}
-int TTY::ioctl(Process& process, unsigned request, unsigned arg)
+int TTY::ioctl(FileDescriptor&, unsigned request, unsigned arg)
{
+ auto& process = current->process();
pid_t pgid;
termios* tp;
winsize* ws;
diff --git a/Kernel/TTY/TTY.h b/Kernel/TTY/TTY.h
index bcd2146b49..ffda96f967 100644
--- a/Kernel/TTY/TTY.h
+++ b/Kernel/TTY/TTY.h
@@ -10,11 +10,11 @@ class TTY : public CharacterDevice {
public:
virtual ~TTY() override;
- virtual ssize_t read(Process&, byte*, ssize_t) override;
- virtual ssize_t write(Process&, const byte*, ssize_t) override;
- virtual bool can_read(Process&) const override;
- virtual bool can_write(Process&) const override;
- virtual int ioctl(Process&, unsigned request, unsigned arg) override final;
+ 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 override { return tty_name(); }
virtual String tty_name() const = 0;
diff --git a/Kernel/kprintf.cpp b/Kernel/kprintf.cpp
index fd9037a9ac..884dfa9f39 100644
--- a/Kernel/kprintf.cpp
+++ b/Kernel/kprintf.cpp
@@ -12,7 +12,7 @@ static void console_putch(char*&, char ch)
IO::out8(0xe9, ch);
return;
}
- Console::the().write(current->process(), (byte*)&ch, 1);
+ Console::the().put_char(ch);
}
int kprintf(const char* fmt, ...)