diff options
author | Andreas Schwab <schwab@suse.de> | 2018-01-29 11:47:06 +0100 |
---|---|---|
committer | Laurent Vivier <laurent@vivier.eu> | 2018-02-18 18:52:32 +0100 |
commit | 2b74f621f1c78023177eab59bce4357867d772f2 (patch) | |
tree | bc49a815eee372e55f095545fdcf4b171903a7ba | |
parent | f0fa81767555fe2c4b5f8c9e0725a80eac1d7f56 (diff) | |
download | qemu-2b74f621f1c78023177eab59bce4357867d772f2.zip qemu-2b74f621f1c78023177eab59bce4357867d772f2.tar.gz qemu-2b74f621f1c78023177eab59bce4357867d772f2.tar.bz2 |
linux-user: Implement ioctl cmd TIOCGPTPEER
With glibc 2.27 the openpty function prefers the TIOCGPTPEER ioctl.
Signed-off-by: Andreas Schwab <schwab@suse.de>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <mvmbmhdosb9.fsf_-_@suse.de>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rw-r--r-- | linux-user/aarch64/termbits.h | 2 | ||||
-rw-r--r-- | linux-user/alpha/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/arm/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/cris/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/hppa/termbits.h | 2 | ||||
-rw-r--r-- | linux-user/i386/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/ioctls.h | 3 | ||||
-rw-r--r-- | linux-user/m68k/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/microblaze/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/mips/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/nios2/termbits.h | 2 | ||||
-rw-r--r-- | linux-user/openrisc/termbits.h | 2 | ||||
-rw-r--r-- | linux-user/ppc/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/s390x/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/sh4/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/sparc/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/sparc64/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/syscall.c | 9 | ||||
-rw-r--r-- | linux-user/tilegx/termbits.h | 1 | ||||
-rw-r--r-- | linux-user/x86_64/termbits.h | 1 |
20 files changed, 34 insertions, 0 deletions
diff --git a/linux-user/aarch64/termbits.h b/linux-user/aarch64/termbits.h index b64ba97..f9f80f0 100644 --- a/linux-user/aarch64/termbits.h +++ b/linux-user/aarch64/termbits.h @@ -187,6 +187,8 @@ struct target_termios { /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) + /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/alpha/termbits.h b/linux-user/alpha/termbits.h index 6406b6a..139bc87 100644 --- a/linux-user/alpha/termbits.h +++ b/linux-user/alpha/termbits.h @@ -245,6 +245,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_TIOCSERCONFIG 0x5453 #define TARGET_TIOCSERGWILD 0x5454 diff --git a/linux-user/arm/termbits.h b/linux-user/arm/termbits.h index 7772df1..a61e138 100644 --- a/linux-user/arm/termbits.h +++ b/linux-user/arm/termbits.h @@ -185,6 +185,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/cris/termbits.h b/linux-user/cris/termbits.h index fc82ca0..c825cd2 100644 --- a/linux-user/cris/termbits.h +++ b/linux-user/cris/termbits.h @@ -182,6 +182,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/hppa/termbits.h b/linux-user/hppa/termbits.h index e9633ef..ad51c9c 100644 --- a/linux-user/hppa/termbits.h +++ b/linux-user/hppa/termbits.h @@ -186,6 +186,8 @@ struct target_termios { /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) + /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/i386/termbits.h b/linux-user/i386/termbits.h index e051a3a..32dd0dd 100644 --- a/linux-user/i386/termbits.h +++ b/linux-user/i386/termbits.h @@ -195,6 +195,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 35cad6f..586c794 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -40,6 +40,9 @@ IOCTL(TIOCSETD, IOC_W, MK_PTR(TYPE_INT)) IOCTL(TIOCGPTN, IOC_R, MK_PTR(TYPE_INT)) IOCTL(TIOCSPTLCK, IOC_W, MK_PTR(TYPE_INT)) +#ifdef TIOCGPTPEER + IOCTL_SPECIAL(TIOCGPTPEER, 0, do_ioctl_tiocgptpeer, TYPE_INT) +#endif IOCTL(FIOCLEX, 0, TYPE_NULL) IOCTL(FIONCLEX, 0, TYPE_NULL) IOCTL(FIOASYNC, IOC_W, MK_PTR(TYPE_INT)) diff --git a/linux-user/m68k/termbits.h b/linux-user/m68k/termbits.h index f7982fb..9df58dc 100644 --- a/linux-user/m68k/termbits.h +++ b/linux-user/m68k/termbits.h @@ -196,6 +196,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/microblaze/termbits.h b/linux-user/microblaze/termbits.h index fc82ca0..c825cd2 100644 --- a/linux-user/microblaze/termbits.h +++ b/linux-user/microblaze/termbits.h @@ -182,6 +182,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/mips/termbits.h b/linux-user/mips/termbits.h index a0bcad0..49a72c5 100644 --- a/linux-user/mips/termbits.h +++ b/linux-user/mips/termbits.h @@ -233,6 +233,7 @@ struct target_termios { #define TARGET_TIOCGPKT TARGET_IOR('T', 0x38, int) #define TARGET_TIOCGPTLCK TARGET_IOR('T', 0x39, int) #define TARGET_TIOCGEXCL TARGET_IOR('T', 0x40, int) +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* I hope the range from 0x5480 on is free ... */ #define TARGET_TIOCSCTTY 0x5480 /* become controlling tty */ diff --git a/linux-user/nios2/termbits.h b/linux-user/nios2/termbits.h index b64ba97..f9f80f0 100644 --- a/linux-user/nios2/termbits.h +++ b/linux-user/nios2/termbits.h @@ -187,6 +187,8 @@ struct target_termios { /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) + /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/openrisc/termbits.h b/linux-user/openrisc/termbits.h index 373af77..231a498 100644 --- a/linux-user/openrisc/termbits.h +++ b/linux-user/openrisc/termbits.h @@ -245,6 +245,8 @@ struct target_termios3 { #define TARGET_TIOCGPTN TARGET_IOR('T', 0x30, unsigned int) /* Lock/unlock Pty */ #define TARGET_TIOCSPTLCK TARGET_IOW('T', 0x31, int) +/* Safely open the slave */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Get primary device node of /dev/console */ #define TARGET_TIOCGDEV TARGET_IOR('T', 0x32, unsigned int) #define TARGET_TCGETX 0x5432 /* SYS5 TCGETX compatibility */ diff --git a/linux-user/ppc/termbits.h b/linux-user/ppc/termbits.h index 73e7151..a5b1bb7 100644 --- a/linux-user/ppc/termbits.h +++ b/linux-user/ppc/termbits.h @@ -219,6 +219,7 @@ struct target_termios { #define TARGET_TIOCGSID 0x5429 /* Return the session ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_TIOCSERCONFIG 0x5453 #define TARGET_TIOCSERGWILD 0x5454 diff --git a/linux-user/s390x/termbits.h b/linux-user/s390x/termbits.h index 2a78a05..8bcca89 100644 --- a/linux-user/s390x/termbits.h +++ b/linux-user/s390x/termbits.h @@ -252,6 +252,7 @@ struct target_ktermios { #define TARGET_TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ #define TARGET_TIOCGDEV _IOR('T',0x32, unsigned int) /* Get real dev no below /dev/console */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/sh4/termbits.h b/linux-user/sh4/termbits.h index 2ff774f..5723ed7 100644 --- a/linux-user/sh4/termbits.h +++ b/linux-user/sh4/termbits.h @@ -250,6 +250,7 @@ ID of FD */ #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-m ux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_TIOCSERCONFIG TARGET_IO('T', 83) /* 0x5453 */ diff --git a/linux-user/sparc/termbits.h b/linux-user/sparc/termbits.h index 691600d..113d6df 100644 --- a/linux-user/sparc/termbits.h +++ b/linux-user/sparc/termbits.h @@ -245,6 +245,7 @@ struct target_termios { /* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ #define TARGET_TIOCGPTN TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */ #define TARGET_TIOCSPTLCK TARGET_IOW('t', 135, int) /* Lock/unlock PTY */ +#define TARGET_TIOCGPTPEER TARGET_IO('t', 137) /* Safely open the slave */ /* Little f */ #define TARGET_FIOCLEX TARGET_IO('f', 1) diff --git a/linux-user/sparc64/termbits.h b/linux-user/sparc64/termbits.h index 691600d..113d6df 100644 --- a/linux-user/sparc64/termbits.h +++ b/linux-user/sparc64/termbits.h @@ -245,6 +245,7 @@ struct target_termios { /* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ #define TARGET_TIOCGPTN TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */ #define TARGET_TIOCSPTLCK TARGET_IOW('t', 135, int) /* Lock/unlock PTY */ +#define TARGET_TIOCGPTPEER TARGET_IO('t', 137) /* Safely open the slave */ /* Little f */ #define TARGET_FIOCLEX TARGET_IO('f', 1) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 82b35a6..effc3a0 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -5636,6 +5636,15 @@ static abi_long do_ioctl_kdsigaccept(const IOCTLEntry *ie, uint8_t *buf_temp, return get_errno(safe_ioctl(fd, ie->host_cmd, sig)); } +#ifdef TIOCGPTPEER +static abi_long do_ioctl_tiocgptpeer(const IOCTLEntry *ie, uint8_t *buf_temp, + int fd, int cmd, abi_long arg) +{ + int flags = target_to_host_bitmask(arg, fcntl_flags_tbl); + return get_errno(safe_ioctl(fd, ie->host_cmd, flags)); +} +#endif + static IOCTLEntry ioctl_entries[] = { #define IOCTL(cmd, access, ...) \ { TARGET_ ## cmd, cmd, #cmd, access, 0, { __VA_ARGS__ } }, diff --git a/linux-user/tilegx/termbits.h b/linux-user/tilegx/termbits.h index 91ec236..966daec 100644 --- a/linux-user/tilegx/termbits.h +++ b/linux-user/tilegx/termbits.h @@ -242,6 +242,7 @@ struct target_termios2 { #define TARGET_TIOCGPKT TARGET_IOR('T', 0x38, int) #define TARGET_TIOCGPTLCK TARGET_IOR('T', 0x39, int) #define TARGET_TIOCGEXCL TARGET_IOR('T', 0x40, int) +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) #define TARGET_FIONCLEX 0x5450 #define TARGET_FIOCLEX 0x5451 diff --git a/linux-user/x86_64/termbits.h b/linux-user/x86_64/termbits.h index 387e742..f5776a8 100644 --- a/linux-user/x86_64/termbits.h +++ b/linux-user/x86_64/termbits.h @@ -215,6 +215,7 @@ struct target_termios { #define TARGET_TCSETSF2 TARGET_IOW('T',0x2D, struct termios2) #define TARGET_TIOCGPTN TARGET_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ #define TARGET_TIOCSPTLCK TARGET_IOW('T',0x31, int) /* Lock/unlock Pty */ +#define TARGET_TIOCGPTPEER TARGET_IO('T', 0x41) /* Safely open the slave */ #define TARGET_FIONCLEX 0x5450 /* these numbers need to be adjusted. */ #define TARGET_FIOCLEX 0x5451 |