diff --git a/DevTools/UserspaceEmulator/Emulator.cpp b/DevTools/UserspaceEmulator/Emulator.cpp index 0727bf69d3..6330c8b5a2 100644 --- a/DevTools/UserspaceEmulator/Emulator.cpp +++ b/DevTools/UserspaceEmulator/Emulator.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #if defined(__GNUC__) && !defined(__clang__) @@ -905,6 +906,22 @@ int Emulator::virt$ioctl(int fd, unsigned request, FlatPtr arg) if (request == TIOCSPGRP) { return syscall(SC_ioctl, fd, request, arg); } + if (request == TCGETS) { + struct termios termios; + int rc = syscall(SC_ioctl, fd, request, &termios); + if (rc < 0) + return rc; + mmu().copy_to_vm(arg, &termios, sizeof(termios)); + return rc; + } + if (request == TCSETS) { + struct termios termios; + mmu().copy_from_vm(&termios, arg, sizeof(termios)); + int rc = syscall(SC_ioctl, fd, request, &termios); + if (rc < 0) + return rc; + return rc; + } dbg() << "Unsupported ioctl: " << request; dump_backtrace(); TODO();