From d608d714b98e9fc82b4c975a75db794c8b900ceb Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 5 Aug 2020 19:51:44 +0200 Subject: [PATCH] UserspaceEmulator: Support ioctl(TCGETS) and ioctl(TCSETS) --- DevTools/UserspaceEmulator/Emulator.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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();