Kernel: Implement FIONREAD for tty and pty

This commit is contained in:
Bananymous 2025-11-24 18:13:54 +02:00
parent 9d0990e5e8
commit 6a924db68c
2 changed files with 18 additions and 4 deletions

View File

@ -157,10 +157,19 @@ namespace Kernel
BAN::ErrorOr<long> PseudoTerminalMaster::ioctl_impl(int request, void* argument)
{
auto slave = m_slave.lock();
if (!slave)
return BAN::Error::from_errno(ENODEV);
switch (request)
{
case FIONREAD:
*static_cast<int*>(argument) = m_buffer_size;
return 0;
case TIOCGWINSZ:
case TIOCSWINSZ:
if (auto slave = m_slave.lock())
return slave->ioctl(request, argument);
return BAN::Error::from_errno(ENODEV);
}
return BAN::Error::from_errno(ENOTSUP);
}
PseudoTerminalSlave::PseudoTerminalSlave(BAN::String&& name, uint32_t number, mode_t mode, uid_t uid, gid_t gid)

View File

@ -202,6 +202,11 @@ namespace Kernel
TRY(set_font(BAN::move(new_font)));
return 0;
}
case FIONREAD:
{
*static_cast<int*>(argument) = m_output.flush ? m_output.bytes : 0;
return 0;
}
case TIOCGWINSZ:
{
auto* winsize = static_cast<struct winsize*>(argument);