diff options
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/ioctls.h | 5 | ||||
-rw-r--r-- | linux-user/syscall.c | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 1bad701481..eaf6fe61b0 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -422,3 +422,8 @@ MK_PTR(MK_STRUCT(STRUCT_rtentry))) IOCTL_SPECIAL(SIOCDELRT, IOC_W, do_ioctl_rt, MK_PTR(MK_STRUCT(STRUCT_rtentry))) + +#ifdef TARGET_TIOCSTART + IOCTL_IGNORE(TIOCSTART) + IOCTL_IGNORE(TIOCSTOP) +#endif diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 7b77503f94..acb004f035 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5453,6 +5453,8 @@ static IOCTLEntry ioctl_entries[] = { { TARGET_ ## cmd, cmd, #cmd, access, 0, { __VA_ARGS__ } }, #define IOCTL_SPECIAL(cmd, access, dofn, ...) \ { TARGET_ ## cmd, cmd, #cmd, access, dofn, { __VA_ARGS__ } }, +#define IOCTL_IGNORE(cmd) \ + { TARGET_ ## cmd, 0, #cmd }, #include "ioctls.h" { 0, 0, }, }; @@ -5484,6 +5486,10 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg) #endif if (ie->do_ioctl) { return ie->do_ioctl(ie, buf_temp, fd, cmd, arg); + } else if (!ie->host_cmd) { + /* Some architectures define BSD ioctls in their headers + that are not implemented in Linux. */ + return -TARGET_ENOSYS; } switch(arg_type[0]) { |