1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:47:34 +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,9 +125,17 @@ ErrorOr<void> MasterPTY::ioctl(OpenFileDescription& description, unsigned reques
TRY(Process::current().require_promise(Pledge::tty)); TRY(Process::current().require_promise(Pledge::tty));
if (!m_slave) if (!m_slave)
return EIO; 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); return m_slave->ioctl(description, request, arg);
return EINVAL; default:
return EINVAL;
}
} }
ErrorOr<NonnullOwnPtr<KString>> MasterPTY::pseudo_path(const OpenFileDescription&) const ErrorOr<NonnullOwnPtr<KString>> MasterPTY::pseudo_path(const OpenFileDescription&) const

View file

@ -89,6 +89,7 @@ enum IOCtlNumber {
TIOCSTI, TIOCSTI,
TIOCNOTTY, TIOCNOTTY,
TIOCSWINSZ, TIOCSWINSZ,
TIOCGPTN,
FB_IOCTL_GET_PROPERTIES, FB_IOCTL_GET_PROPERTIES,
FB_IOCTL_GET_HEAD_PROPERTIES, FB_IOCTL_GET_HEAD_PROPERTIES,
FB_IOCTL_SET_HEAD_RESOLUTION, FB_IOCTL_SET_HEAD_RESOLUTION,
@ -143,6 +144,7 @@ enum IOCtlNumber {
#define TIOCSTI TIOCSTI #define TIOCSTI TIOCSTI
#define TIOCNOTTY TIOCNOTTY #define TIOCNOTTY TIOCNOTTY
#define TIOCSWINSZ TIOCSWINSZ #define TIOCSWINSZ TIOCSWINSZ
#define TIOCGPTN TIOCGPTN
#define FB_IOCTL_GET_PROPERTIES FB_IOCTL_GET_PROPERTIES #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_PROPERTIES FB_IOCTL_GET_HEAD_PROPERTIES
#define FB_IOCTL_GET_HEAD_EDID FB_IOCTL_GET_HEAD_EDID #define FB_IOCTL_GET_HEAD_EDID FB_IOCTL_GET_HEAD_EDID