Kernel: Add basic support for O_NONBLOCK (only for tty)

This commit is contained in:
Bananymous
2023-09-04 12:57:52 +03:00
parent 6f002c926a
commit b2139c0b1e
4 changed files with 11 additions and 1 deletions

View File

@@ -87,6 +87,7 @@ namespace Kernel
virtual BAN::ErrorOr<size_t> read(size_t, void*, size_t) { if (mode().ifdir()) return BAN::Error::from_errno(EISDIR); ASSERT_NOT_REACHED(); }
virtual BAN::ErrorOr<size_t> write(size_t, const void*, size_t) { if (mode().ifdir()) return BAN::Error::from_errno(EISDIR); ASSERT_NOT_REACHED(); }
virtual bool has_data() const { dwarnln("nonblock not supported"); return true; }
virtual BAN::ErrorOr<void> truncate(size_t) { if (mode().ifdir()) return BAN::Error::from_errno(EISDIR); return BAN::Error::from_errno(ENOTSUP); }

View File

@@ -35,6 +35,7 @@ namespace Kernel
virtual BAN::ErrorOr<size_t> read(size_t, void*, size_t) override;
virtual BAN::ErrorOr<size_t> write(size_t, const void*, size_t) override;
virtual bool has_data() const override;
private:
void clear();
@@ -78,7 +79,7 @@ namespace Kernel
};
private:
Kernel::SpinLock m_lock;
mutable Kernel::SpinLock m_lock;
State m_state { State::Normal };
AnsiState m_ansi_state { };