summaryrefslogtreecommitdiff
path: root/Kernel/TTY
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-11-08 00:51:39 +0100
committerAndreas Kling <kling@serenityos.org>2021-11-08 01:10:53 +0100
commit79fa9765ca89869d19364143989436d117974c21 (patch)
tree3af62f70127d9217d841047f6b7461351800d1ae /Kernel/TTY
parent7ee10c69264cb278845a1e1b06d5acf2e5e7ddf0 (diff)
downloadserenity-79fa9765ca89869d19364143989436d117974c21.zip
Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T>
We now use AK::Error and AK::ErrorOr<T> in both kernel and userspace! This was a slightly tedious refactoring that took a long time, so it's not unlikely that some bugs crept in. Nevertheless, it does pass basic functionality testing, and it's just real nice to finally see the same pattern in all contexts. :^)
Diffstat (limited to 'Kernel/TTY')
-rw-r--r--Kernel/TTY/MasterPTY.cpp16
-rw-r--r--Kernel/TTY/MasterPTY.h14
-rw-r--r--Kernel/TTY/PTYMultiplexer.cpp4
-rw-r--r--Kernel/TTY/PTYMultiplexer.h6
-rw-r--r--Kernel/TTY/SlavePTY.cpp8
-rw-r--r--Kernel/TTY/SlavePTY.h6
-rw-r--r--Kernel/TTY/TTY.cpp28
-rw-r--r--Kernel/TTY/TTY.h12
-rw-r--r--Kernel/TTY/VirtualConsole.cpp2
-rw-r--r--Kernel/TTY/VirtualConsole.h2
10 files changed, 49 insertions, 49 deletions
diff --git a/Kernel/TTY/MasterPTY.cpp b/Kernel/TTY/MasterPTY.cpp
index 7f1680bb82..d4b6c96804 100644
--- a/Kernel/TTY/MasterPTY.cpp
+++ b/Kernel/TTY/MasterPTY.cpp
@@ -16,7 +16,7 @@
namespace Kernel {
-KResultOr<NonnullRefPtr<MasterPTY>> MasterPTY::try_create(unsigned int index)
+ErrorOr<NonnullRefPtr<MasterPTY>> MasterPTY::try_create(unsigned int index)
{
// FIXME: Don't make a temporary String here
auto pts_name = TRY(KString::try_create(String::formatted("/dev/pts/{}", index)));
@@ -58,14 +58,14 @@ KString const& MasterPTY::pts_name() const
return *m_pts_name;
}
-KResultOr<size_t> MasterPTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
+ErrorOr<size_t> MasterPTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
{
if (!m_slave && m_buffer->is_empty())
return 0;
return m_buffer->read(buffer, size);
}
-KResultOr<size_t> MasterPTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size)
+ErrorOr<size_t> MasterPTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size)
{
if (!m_slave)
return EIO;
@@ -94,7 +94,7 @@ void MasterPTY::notify_slave_closed(Badge<SlavePTY>)
m_slave = nullptr;
}
-KResultOr<size_t> MasterPTY::on_slave_write(const UserOrKernelBuffer& data, size_t size)
+ErrorOr<size_t> MasterPTY::on_slave_write(const UserOrKernelBuffer& data, size_t size)
{
if (m_closed)
return EIO;
@@ -108,7 +108,7 @@ bool MasterPTY::can_write_from_slave() const
return m_buffer->space_for_writing();
}
-KResult MasterPTY::close()
+ErrorOr<void> MasterPTY::close()
{
InterruptDisabler disabler;
// After the closing OpenFileDescription dies, slave is the only thing keeping me alive.
@@ -118,10 +118,10 @@ KResult MasterPTY::close()
if (m_slave)
m_slave->hang_up();
- return KSuccess;
+ return {};
}
-KResult MasterPTY::ioctl(OpenFileDescription& description, unsigned request, Userspace<void*> arg)
+ErrorOr<void> MasterPTY::ioctl(OpenFileDescription& description, unsigned request, Userspace<void*> arg)
{
REQUIRE_PROMISE(tty);
if (!m_slave)
@@ -131,7 +131,7 @@ KResult MasterPTY::ioctl(OpenFileDescription& description, unsigned request, Use
return EINVAL;
}
-KResultOr<NonnullOwnPtr<KString>> MasterPTY::pseudo_path(const OpenFileDescription&) const
+ErrorOr<NonnullOwnPtr<KString>> MasterPTY::pseudo_path(const OpenFileDescription&) const
{
// FIXME: Replace this and others of this pattern by KString::formatted()
return KString::try_create(String::formatted("ptm:{}", m_pts_name));
diff --git a/Kernel/TTY/MasterPTY.h b/Kernel/TTY/MasterPTY.h
index cf5f1da616..6ebe95dd4c 100644
--- a/Kernel/TTY/MasterPTY.h
+++ b/Kernel/TTY/MasterPTY.h
@@ -16,28 +16,28 @@ class SlavePTY;
class MasterPTY final : public CharacterDevice {
public:
- static KResultOr<NonnullRefPtr<MasterPTY>> try_create(unsigned index);
+ static ErrorOr<NonnullRefPtr<MasterPTY>> try_create(unsigned index);
virtual ~MasterPTY() override;
unsigned index() const { return m_index; }
KString const& pts_name() const;
- KResultOr<size_t> on_slave_write(const UserOrKernelBuffer&, size_t);
+ ErrorOr<size_t> on_slave_write(const UserOrKernelBuffer&, size_t);
bool can_write_from_slave() const;
void notify_slave_closed(Badge<SlavePTY>);
bool is_closed() const { return m_closed; }
- virtual KResultOr<NonnullOwnPtr<KString>> pseudo_path(const OpenFileDescription&) const override;
+ virtual ErrorOr<NonnullOwnPtr<KString>> pseudo_path(const OpenFileDescription&) const override;
private:
explicit MasterPTY(unsigned index, NonnullOwnPtr<DoubleBuffer> buffer, NonnullOwnPtr<KString> pts_name);
// ^CharacterDevice
- virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
- virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
virtual bool can_read(const OpenFileDescription&, size_t) const override;
virtual bool can_write(const OpenFileDescription&, size_t) const override;
- virtual KResult close() override;
+ virtual ErrorOr<void> close() override;
virtual bool is_master_pty() const override { return true; }
- virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) override;
+ virtual ErrorOr<void> ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) override;
virtual StringView class_name() const override { return "MasterPTY"sv; }
RefPtr<SlavePTY> m_slave;
diff --git a/Kernel/TTY/PTYMultiplexer.cpp b/Kernel/TTY/PTYMultiplexer.cpp
index 22ae1312c0..77578c3b1d 100644
--- a/Kernel/TTY/PTYMultiplexer.cpp
+++ b/Kernel/TTY/PTYMultiplexer.cpp
@@ -40,9 +40,9 @@ void PTYMultiplexer::initialize()
the().after_inserting();
}
-KResultOr<NonnullRefPtr<OpenFileDescription>> PTYMultiplexer::open(int options)
+ErrorOr<NonnullRefPtr<OpenFileDescription>> PTYMultiplexer::open(int options)
{
- return m_freelist.with_exclusive([&](auto& freelist) -> KResultOr<NonnullRefPtr<OpenFileDescription>> {
+ return m_freelist.with_exclusive([&](auto& freelist) -> ErrorOr<NonnullRefPtr<OpenFileDescription>> {
if (freelist.is_empty())
return EBUSY;
diff --git a/Kernel/TTY/PTYMultiplexer.h b/Kernel/TTY/PTYMultiplexer.h
index 025d32f7f8..7b9b3ff150 100644
--- a/Kernel/TTY/PTYMultiplexer.h
+++ b/Kernel/TTY/PTYMultiplexer.h
@@ -24,9 +24,9 @@ public:
static PTYMultiplexer& the();
// ^CharacterDevice
- virtual KResultOr<NonnullRefPtr<OpenFileDescription>> open(int options) override;
- virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return 0; }
- virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return 0; }
+ virtual ErrorOr<NonnullRefPtr<OpenFileDescription>> open(int options) override;
+ virtual ErrorOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override { return 0; }
+ virtual ErrorOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override { return 0; }
virtual bool can_read(const OpenFileDescription&, size_t) const override { return true; }
virtual bool can_write(const OpenFileDescription&, size_t) const override { return true; }
diff --git a/Kernel/TTY/SlavePTY.cpp b/Kernel/TTY/SlavePTY.cpp
index 738c777e2e..200072d4b0 100644
--- a/Kernel/TTY/SlavePTY.cpp
+++ b/Kernel/TTY/SlavePTY.cpp
@@ -78,7 +78,7 @@ void SlavePTY::on_master_write(const UserOrKernelBuffer& buffer, size_t size)
evaluate_block_conditions();
}
-KResultOr<size_t> SlavePTY::on_tty_write(const UserOrKernelBuffer& data, size_t size)
+ErrorOr<size_t> SlavePTY::on_tty_write(const UserOrKernelBuffer& data, size_t size)
{
m_time_of_last_write = kgettimeofday().to_truncated_seconds();
return m_master->on_slave_write(data, size);
@@ -96,17 +96,17 @@ bool SlavePTY::can_read(const OpenFileDescription& description, size_t offset) c
return TTY::can_read(description, offset);
}
-KResultOr<size_t> SlavePTY::read(OpenFileDescription& description, u64 offset, UserOrKernelBuffer& buffer, size_t size)
+ErrorOr<size_t> SlavePTY::read(OpenFileDescription& description, u64 offset, UserOrKernelBuffer& buffer, size_t size)
{
if (m_master->is_closed())
return 0;
return TTY::read(description, offset, buffer, size);
}
-KResult SlavePTY::close()
+ErrorOr<void> SlavePTY::close()
{
m_master->notify_slave_closed({});
- return KSuccess;
+ return {};
}
FileBlockerSet& SlavePTY::blocker_set()
diff --git a/Kernel/TTY/SlavePTY.h b/Kernel/TTY/SlavePTY.h
index c2928a3e25..4be7373e77 100644
--- a/Kernel/TTY/SlavePTY.h
+++ b/Kernel/TTY/SlavePTY.h
@@ -28,15 +28,15 @@ public:
private:
// ^TTY
virtual KString const& tty_name() const override;
- virtual KResultOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) override;
virtual void echo(u8) override;
// ^CharacterDevice
virtual bool can_read(const OpenFileDescription&, size_t) const override;
- virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
virtual bool can_write(const OpenFileDescription&, size_t) const override;
virtual StringView class_name() const override { return "SlavePTY"sv; }
- virtual KResult close() override;
+ virtual ErrorOr<void> close() override;
friend class MasterPTY;
SlavePTY(MasterPTY&, unsigned index, NonnullOwnPtr<KString> pts_name);
diff --git a/Kernel/TTY/TTY.cpp b/Kernel/TTY/TTY.cpp
index dc428433ab..7153d14772 100644
--- a/Kernel/TTY/TTY.cpp
+++ b/Kernel/TTY/TTY.cpp
@@ -41,7 +41,7 @@ void TTY::set_default_termios()
memcpy(m_termios.c_cc, ttydefchars, sizeof(ttydefchars));
}
-KResultOr<size_t> TTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
+ErrorOr<size_t> TTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffer, size_t size)
{
if (Process::current().pgid() != pgid()) {
// FIXME: Should we propagate this error path somehow?
@@ -80,7 +80,7 @@ KResultOr<size_t> TTY::read(OpenFileDescription&, u64, UserOrKernelBuffer& buffe
return result;
}
-KResultOr<size_t> TTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size)
+ErrorOr<size_t> TTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer& buffer, size_t size)
{
if (m_termios.c_lflag & TOSTOP && Process::current().pgid() != pgid()) {
[[maybe_unused]] auto rc = Process::current().send_signal(SIGTTOU, nullptr);
@@ -88,7 +88,7 @@ KResultOr<size_t> TTY::write(OpenFileDescription&, u64, const UserOrKernelBuffer
}
constexpr size_t num_chars = 256;
- return buffer.read_buffered<num_chars>(size, [&](ReadonlyBytes bytes) -> KResultOr<size_t> {
+ return buffer.read_buffered<num_chars>(size, [&](ReadonlyBytes bytes) -> ErrorOr<size_t> {
u8 modified_data[num_chars * 2];
size_t modified_data_size = 0;
for (const auto& byte : bytes) {
@@ -378,9 +378,9 @@ void TTY::flush_input()
evaluate_block_conditions();
}
-KResult TTY::set_termios(const termios& t)
+ErrorOr<void> TTY::set_termios(const termios& t)
{
- KResult rc = KSuccess;
+ ErrorOr<void> rc;
m_termios = t;
dbgln_if(TTY_DEBUG, "{} set_termios: ECHO={}, ISIG={}, ICANON={}, ECHOE={}, ECHOK={}, ECHONL={}, ISTRIP={}, ICRNL={}, INLCR={}, IGNCR={}, OPOST={}, ONLCR={}",
@@ -472,7 +472,7 @@ KResult TTY::set_termios(const termios& t)
return rc;
}
-KResult TTY::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
+ErrorOr<void> TTY::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
{
REQUIRE_PROMISE(tty);
auto& current_process = Process::current();
@@ -513,12 +513,12 @@ KResult TTY::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
if (process) {
if (auto parent = Process::from_pid(process->ppid())) {
m_original_process_parent = *parent;
- return KSuccess;
+ return {};
}
}
m_original_process_parent = nullptr;
- return KSuccess;
+ return {};
}
case TCGETS: {
user_termios = static_ptr_cast<termios*>(arg);
@@ -543,7 +543,7 @@ KResult TTY::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
} else if (operation != TCOFLUSH) {
return EINVAL;
}
- return KSuccess;
+ return {};
}
case TIOCGWINSZ:
user_winsize = static_ptr_cast<winsize*>(arg);
@@ -558,25 +558,25 @@ KResult TTY::ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg)
winsize ws;
TRY(copy_from_user(&ws, user_winsize));
if (ws.ws_col == m_columns && ws.ws_row == m_rows)
- return KSuccess;
+ return {};
m_rows = ws.ws_row;
m_columns = ws.ws_col;
generate_signal(SIGWINCH);
- return KSuccess;
+ return {};
}
case TIOCSCTTY:
current_process.set_tty(this);
- return KSuccess;
+ return {};
case TIOCSTI:
return EIO;
case TIOCNOTTY:
current_process.set_tty(nullptr);
- return KSuccess;
+ return {};
}
return EINVAL;
}
-KResultOr<NonnullOwnPtr<KString>> TTY::pseudo_path(const OpenFileDescription&) const
+ErrorOr<NonnullOwnPtr<KString>> TTY::pseudo_path(const OpenFileDescription&) const
{
return tty_name().try_clone();
}
diff --git a/Kernel/TTY/TTY.h b/Kernel/TTY/TTY.h
index 12f7f3ac26..0f66f80046 100644
--- a/Kernel/TTY/TTY.h
+++ b/Kernel/TTY/TTY.h
@@ -21,12 +21,12 @@ class TTY : public CharacterDevice {
public:
virtual ~TTY() override;
- virtual KResultOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
- virtual KResultOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> write(OpenFileDescription&, u64, const UserOrKernelBuffer&, size_t) override;
virtual bool can_read(const OpenFileDescription&, size_t) const override;
virtual bool can_write(const OpenFileDescription&, size_t) const override;
- virtual KResult ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) override final;
- virtual KResultOr<NonnullOwnPtr<KString>> pseudo_path(const OpenFileDescription&) const override;
+ virtual ErrorOr<void> ioctl(OpenFileDescription&, unsigned request, Userspace<void*> arg) override final;
+ virtual ErrorOr<NonnullOwnPtr<KString>> pseudo_path(const OpenFileDescription&) const override;
virtual KString const& tty_name() const = 0;
@@ -40,7 +40,7 @@ public:
return 0;
}
- KResult set_termios(const termios&);
+ ErrorOr<void> set_termios(const termios&);
bool should_generate_signals() const { return m_termios.c_lflag & ISIG; }
bool should_flush_on_signal() const { return !(m_termios.c_lflag & NOFLSH); }
bool should_echo_input() const { return m_termios.c_lflag & ECHO; }
@@ -50,7 +50,7 @@ public:
void hang_up();
protected:
- virtual KResultOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) = 0;
+ virtual ErrorOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) = 0;
void set_size(unsigned short columns, unsigned short rows);
TTY(unsigned major, unsigned minor);
diff --git a/Kernel/TTY/VirtualConsole.cpp b/Kernel/TTY/VirtualConsole.cpp
index 9a6d0ddf11..453ba36da2 100644
--- a/Kernel/TTY/VirtualConsole.cpp
+++ b/Kernel/TTY/VirtualConsole.cpp
@@ -258,7 +258,7 @@ void VirtualConsole::on_key_pressed(KeyEvent event)
});
}
-KResultOr<size_t> VirtualConsole::on_tty_write(const UserOrKernelBuffer& data, size_t size)
+ErrorOr<size_t> VirtualConsole::on_tty_write(const UserOrKernelBuffer& data, size_t size)
{
SpinlockLocker global_lock(ConsoleManagement::the().tty_write_lock());
auto result = data.read_buffered<512>(size, [&](ReadonlyBytes buffer) {
diff --git a/Kernel/TTY/VirtualConsole.h b/Kernel/TTY/VirtualConsole.h
index d29d123a21..dd7ce2a99b 100644
--- a/Kernel/TTY/VirtualConsole.h
+++ b/Kernel/TTY/VirtualConsole.h
@@ -91,7 +91,7 @@ private:
virtual void on_key_pressed(KeyEvent) override;
// ^TTY
- virtual KResultOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) override;
+ virtual ErrorOr<size_t> on_tty_write(const UserOrKernelBuffer&, size_t) override;
virtual KString const& tty_name() const override { return *m_tty_name; }
virtual void echo(u8) override;