Kernel: Make pseudo terminals not overwrite old data

If pseudo terminal buffer was filled, old implementation would overwrite
old data. This is bad if producer is capable of producing more data than
consumer can handle.
This commit is contained in:
2025-04-23 22:02:17 +03:00
parent 73f9de6635
commit 9f4cb5c4dd
8 changed files with 36 additions and 27 deletions

View File

@@ -20,7 +20,7 @@ namespace Kernel
BAN::ErrorOr<BAN::String> ptsname();
void putchar(uint8_t ch);
bool putchar(uint8_t ch);
protected:
BAN::ErrorOr<size_t> read_impl(off_t, BAN::ByteSpan) override;
@@ -61,7 +61,7 @@ namespace Kernel
void clear() override;
protected:
void putchar_impl(uint8_t ch) override;
bool putchar_impl(uint8_t ch) override;
BAN::ErrorOr<long> ioctl_impl(int, void*) override;

View File

@@ -53,7 +53,7 @@ namespace Kernel
protected:
virtual BAN::StringView name() const override { return m_name; }
virtual void putchar_impl(uint8_t) override;
virtual bool putchar_impl(uint8_t) override;
private:
SerialTTY(Serial);

View File

@@ -58,14 +58,14 @@ namespace Kernel
protected:
TTY(mode_t mode, uid_t uid, gid_t gid);
virtual void putchar_impl(uint8_t ch) = 0;
virtual bool putchar_impl(uint8_t ch) = 0;
virtual void update_cursor() {}
virtual BAN::ErrorOr<size_t> read_impl(off_t, BAN::ByteSpan) override;
virtual BAN::ErrorOr<size_t> write_impl(off_t, BAN::ConstByteSpan) override;
private:
void putchar(uint8_t ch);
bool putchar(uint8_t ch);
void do_backspace();
protected:

View File

@@ -26,7 +26,7 @@ namespace Kernel
protected:
virtual BAN::StringView name() const override { return m_name; }
virtual void putchar_impl(uint8_t ch) override;
virtual bool putchar_impl(uint8_t ch) override;
void update_cursor() override;
private: