1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:27:44 +00:00

Kernel/TTY: Implement TIOCGPTN ioctl for MasterPTY

This ioctl operation will allow userspace to determine the index number
of a MasterPTY after opening /dev/ptmx and actually getting an internal
file descriptor of MasterPTY.
This commit is contained in:
Liav A 2022-02-15 21:31:17 +02:00 committed by Andreas Kling
parent e508073168
commit 5ffe2f117c
2 changed files with 12 additions and 2 deletions

View file

@ -125,10 +125,18 @@ ErrorOr<void> MasterPTY::ioctl(OpenFileDescription& description, unsigned reques
TRY(Process::current().require_promise(Pledge::tty));
if (!m_slave)
return EIO;
if (request == TIOCSWINSZ || request == TIOCGPGRP)
switch (request) {
case TIOCGPTN: {
int master_pty_index = index();
return copy_to_user(static_ptr_cast<int*>(arg), &master_pty_index);
}
case TIOCSWINSZ:
case TIOCGPGRP:
return m_slave->ioctl(description, request, arg);
default:
return EINVAL;
}
}
ErrorOr<NonnullOwnPtr<KString>> MasterPTY::pseudo_path(const OpenFileDescription&) const
{

View file

@ -89,6 +89,7 @@ enum IOCtlNumber {
TIOCSTI,
TIOCNOTTY,
TIOCSWINSZ,
TIOCGPTN,
FB_IOCTL_GET_PROPERTIES,
FB_IOCTL_GET_HEAD_PROPERTIES,
FB_IOCTL_SET_HEAD_RESOLUTION,
@ -143,6 +144,7 @@ enum IOCtlNumber {
#define TIOCSTI TIOCSTI
#define TIOCNOTTY TIOCNOTTY
#define TIOCSWINSZ TIOCSWINSZ
#define TIOCGPTN TIOCGPTN
#define FB_IOCTL_GET_PROPERTIES FB_IOCTL_GET_PROPERTIES
#define FB_IOCTL_GET_HEAD_PROPERTIES FB_IOCTL_GET_HEAD_PROPERTIES
#define FB_IOCTL_GET_HEAD_EDID FB_IOCTL_GET_HEAD_EDID