diff options
39 files changed, 101 insertions, 10 deletions
diff --git a/arch/alpha/include/asm/ioctls.h b/arch/alpha/include/asm/ioctls.h index c7b0cc61ce5b..59617c3c2be6 100644 --- a/arch/alpha/include/asm/ioctls.h +++ b/arch/alpha/include/asm/ioctls.h | |||
| @@ -80,6 +80,7 @@ | |||
| 80 | # define TIOCPKT_START 8 | 80 | # define TIOCPKT_START 8 |
| 81 | # define TIOCPKT_NOSTOP 16 | 81 | # define TIOCPKT_NOSTOP 16 |
| 82 | # define TIOCPKT_DOSTOP 32 | 82 | # define TIOCPKT_DOSTOP 32 |
| 83 | # define TIOCPKT_IOCTL 64 | ||
| 83 | 84 | ||
| 84 | 85 | ||
| 85 | #define TIOCNOTTY 0x5422 | 86 | #define TIOCNOTTY 0x5422 |
| @@ -91,6 +92,7 @@ | |||
| 91 | #define TIOCGSID 0x5429 /* Return the session ID of FD */ | 92 | #define TIOCGSID 0x5429 /* Return the session ID of FD */ |
| 92 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 93 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 93 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 94 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 95 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 94 | 96 | ||
| 95 | #define TIOCSERCONFIG 0x5453 | 97 | #define TIOCSERCONFIG 0x5453 |
| 96 | #define TIOCSERGWILD 0x5454 | 98 | #define TIOCSERGWILD 0x5454 |
diff --git a/arch/alpha/include/asm/termbits.h b/arch/alpha/include/asm/termbits.h index ad854a4a3af6..879dd3589921 100644 --- a/arch/alpha/include/asm/termbits.h +++ b/arch/alpha/include/asm/termbits.h | |||
| @@ -180,6 +180,7 @@ struct ktermios { | |||
| 180 | #define FLUSHO 0x00800000 | 180 | #define FLUSHO 0x00800000 |
| 181 | #define PENDIN 0x20000000 | 181 | #define PENDIN 0x20000000 |
| 182 | #define IEXTEN 0x00000400 | 182 | #define IEXTEN 0x00000400 |
| 183 | #define EXTPROC 0x10000000 | ||
| 183 | 184 | ||
| 184 | /* Values for the ACTION argument to `tcflow'. */ | 185 | /* Values for the ACTION argument to `tcflow'. */ |
| 185 | #define TCOOFF 0 | 186 | #define TCOOFF 0 |
diff --git a/arch/arm/include/asm/ioctls.h b/arch/arm/include/asm/ioctls.h index 7f0b6d13296a..0b30894b5482 100644 --- a/arch/arm/include/asm/ioctls.h +++ b/arch/arm/include/asm/ioctls.h | |||
| @@ -52,6 +52,7 @@ | |||
| 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 55 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 55 | 56 | ||
| 56 | #define TIOCGRS485 0x542E | 57 | #define TIOCGRS485 0x542E |
| 57 | #define TIOCSRS485 0x542F | 58 | #define TIOCSRS485 0x542F |
| @@ -81,6 +82,7 @@ | |||
| 81 | #define TIOCPKT_START 8 | 82 | #define TIOCPKT_START 8 |
| 82 | #define TIOCPKT_NOSTOP 16 | 83 | #define TIOCPKT_NOSTOP 16 |
| 83 | #define TIOCPKT_DOSTOP 32 | 84 | #define TIOCPKT_DOSTOP 32 |
| 85 | #define TIOCPKT_IOCTL 64 | ||
| 84 | 86 | ||
| 85 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 87 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 86 | 88 | ||
diff --git a/arch/arm/include/asm/termbits.h b/arch/arm/include/asm/termbits.h index f784d11f40b5..704135d28d1d 100644 --- a/arch/arm/include/asm/termbits.h +++ b/arch/arm/include/asm/termbits.h | |||
| @@ -177,6 +177,7 @@ struct ktermios { | |||
| 177 | #define FLUSHO 0010000 | 177 | #define FLUSHO 0010000 |
| 178 | #define PENDIN 0040000 | 178 | #define PENDIN 0040000 |
| 179 | #define IEXTEN 0100000 | 179 | #define IEXTEN 0100000 |
| 180 | #define EXTPROC 0200000 | ||
| 180 | 181 | ||
| 181 | /* tcflow() and TCXONC use these */ | 182 | /* tcflow() and TCXONC use these */ |
| 182 | #define TCOOFF 0 | 183 | #define TCOOFF 0 |
diff --git a/arch/avr32/include/asm/ioctls.h b/arch/avr32/include/asm/ioctls.h index 143dafb3997e..b7dd324b46a9 100644 --- a/arch/avr32/include/asm/ioctls.h +++ b/arch/avr32/include/asm/ioctls.h | |||
| @@ -53,6 +53,7 @@ | |||
| 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 56 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 56 | 57 | ||
| 57 | #define TIOCGRS485 0x542E | 58 | #define TIOCGRS485 0x542E |
| 58 | #define TIOCSRS485 0x542F | 59 | #define TIOCSRS485 0x542F |
| @@ -82,6 +83,7 @@ | |||
| 82 | #define TIOCPKT_START 8 | 83 | #define TIOCPKT_START 8 |
| 83 | #define TIOCPKT_NOSTOP 16 | 84 | #define TIOCPKT_NOSTOP 16 |
| 84 | #define TIOCPKT_DOSTOP 32 | 85 | #define TIOCPKT_DOSTOP 32 |
| 86 | #define TIOCPKT_IOCTL 64 | ||
| 85 | 87 | ||
| 86 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 88 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 87 | 89 | ||
diff --git a/arch/avr32/include/asm/termbits.h b/arch/avr32/include/asm/termbits.h index db2daab31fdb..366adc5ebb10 100644 --- a/arch/avr32/include/asm/termbits.h +++ b/arch/avr32/include/asm/termbits.h | |||
| @@ -175,6 +175,7 @@ struct ktermios { | |||
| 175 | #define FLUSHO 0010000 | 175 | #define FLUSHO 0010000 |
| 176 | #define PENDIN 0040000 | 176 | #define PENDIN 0040000 |
| 177 | #define IEXTEN 0100000 | 177 | #define IEXTEN 0100000 |
| 178 | #define EXTPROC 0200000 | ||
| 178 | 179 | ||
| 179 | /* tcflow() and TCXONC use these */ | 180 | /* tcflow() and TCXONC use these */ |
| 180 | #define TCOOFF 0 | 181 | #define TCOOFF 0 |
diff --git a/arch/cris/include/asm/ioctls.h b/arch/cris/include/asm/ioctls.h index bb49142dc6ab..c9129ed37443 100644 --- a/arch/cris/include/asm/ioctls.h +++ b/arch/cris/include/asm/ioctls.h | |||
| @@ -54,6 +54,7 @@ | |||
| 54 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 54 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 55 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 55 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 56 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 56 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 57 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 57 | 58 | ||
| 58 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 59 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 59 | #define FIOCLEX 0x5451 | 60 | #define FIOCLEX 0x5451 |
| @@ -85,6 +86,7 @@ | |||
| 85 | #define TIOCPKT_START 8 | 86 | #define TIOCPKT_START 8 |
| 86 | #define TIOCPKT_NOSTOP 16 | 87 | #define TIOCPKT_NOSTOP 16 |
| 87 | #define TIOCPKT_DOSTOP 32 | 88 | #define TIOCPKT_DOSTOP 32 |
| 89 | #define TIOCPKT_IOCTL 64 | ||
| 88 | 90 | ||
| 89 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 91 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 90 | 92 | ||
diff --git a/arch/cris/include/asm/termbits.h b/arch/cris/include/asm/termbits.h index 66e1a7492a0c..1c43bc874ccf 100644 --- a/arch/cris/include/asm/termbits.h +++ b/arch/cris/include/asm/termbits.h | |||
| @@ -214,6 +214,7 @@ struct ktermios { | |||
| 214 | #define FLUSHO 0010000 | 214 | #define FLUSHO 0010000 |
| 215 | #define PENDIN 0040000 | 215 | #define PENDIN 0040000 |
| 216 | #define IEXTEN 0100000 | 216 | #define IEXTEN 0100000 |
| 217 | #define EXTPROC 0200000 | ||
| 217 | 218 | ||
| 218 | /* tcflow() and TCXONC use these */ | 219 | /* tcflow() and TCXONC use these */ |
| 219 | #define TCOOFF 0 | 220 | #define TCOOFF 0 |
diff --git a/arch/frv/include/asm/ioctls.h b/arch/frv/include/asm/ioctls.h index d0c30e31fbda..a993e3759ccf 100644 --- a/arch/frv/include/asm/ioctls.h +++ b/arch/frv/include/asm/ioctls.h | |||
| @@ -53,6 +53,7 @@ | |||
| 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 56 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 56 | 57 | ||
| 57 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 58 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 58 | #define FIOCLEX 0x5451 | 59 | #define FIOCLEX 0x5451 |
| @@ -79,6 +80,7 @@ | |||
| 79 | #define TIOCPKT_START 8 | 80 | #define TIOCPKT_START 8 |
| 80 | #define TIOCPKT_NOSTOP 16 | 81 | #define TIOCPKT_NOSTOP 16 |
| 81 | #define TIOCPKT_DOSTOP 32 | 82 | #define TIOCPKT_DOSTOP 32 |
| 83 | #define TIOCPKT_IOCTL 64 | ||
| 82 | 84 | ||
| 83 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 85 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 84 | 86 | ||
diff --git a/arch/frv/include/asm/termbits.h b/arch/frv/include/asm/termbits.h index 5568492b5086..7722e19cc349 100644 --- a/arch/frv/include/asm/termbits.h +++ b/arch/frv/include/asm/termbits.h | |||
| @@ -180,6 +180,7 @@ struct ktermios { | |||
| 180 | #define FLUSHO 0010000 | 180 | #define FLUSHO 0010000 |
| 181 | #define PENDIN 0040000 | 181 | #define PENDIN 0040000 |
| 182 | #define IEXTEN 0100000 | 182 | #define IEXTEN 0100000 |
| 183 | #define EXTPROC 0200000 | ||
| 183 | 184 | ||
| 184 | 185 | ||
| 185 | /* tcflow() and TCXONC use these */ | 186 | /* tcflow() and TCXONC use these */ |
diff --git a/arch/h8300/include/asm/ioctls.h b/arch/h8300/include/asm/ioctls.h index 98a53d067269..b6b249f9f308 100644 --- a/arch/h8300/include/asm/ioctls.h +++ b/arch/h8300/include/asm/ioctls.h | |||
| @@ -53,6 +53,7 @@ | |||
| 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 56 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 56 | 57 | ||
| 57 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 58 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 58 | #define FIOCLEX 0x5451 | 59 | #define FIOCLEX 0x5451 |
| @@ -79,6 +80,7 @@ | |||
| 79 | #define TIOCPKT_START 8 | 80 | #define TIOCPKT_START 8 |
| 80 | #define TIOCPKT_NOSTOP 16 | 81 | #define TIOCPKT_NOSTOP 16 |
| 81 | #define TIOCPKT_DOSTOP 32 | 82 | #define TIOCPKT_DOSTOP 32 |
| 83 | #define TIOCPKT_IOCTL 64 | ||
| 82 | 84 | ||
| 83 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 85 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 84 | 86 | ||
diff --git a/arch/h8300/include/asm/termbits.h b/arch/h8300/include/asm/termbits.h index 31eca81db3f7..3287a6244d74 100644 --- a/arch/h8300/include/asm/termbits.h +++ b/arch/h8300/include/asm/termbits.h | |||
| @@ -179,6 +179,7 @@ struct ktermios { | |||
| 179 | #define FLUSHO 0010000 | 179 | #define FLUSHO 0010000 |
| 180 | #define PENDIN 0040000 | 180 | #define PENDIN 0040000 |
| 181 | #define IEXTEN 0100000 | 181 | #define IEXTEN 0100000 |
| 182 | #define EXTPROC 0200000 | ||
| 182 | 183 | ||
| 183 | 184 | ||
| 184 | /* tcflow() and TCXONC use these */ | 185 | /* tcflow() and TCXONC use these */ |
diff --git a/arch/ia64/include/asm/ioctls.h b/arch/ia64/include/asm/ioctls.h index f0ee86c0b5f7..b79c385114ef 100644 --- a/arch/ia64/include/asm/ioctls.h +++ b/arch/ia64/include/asm/ioctls.h | |||
| @@ -59,6 +59,7 @@ | |||
| 59 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 59 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 60 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 60 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 61 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 61 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 62 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 62 | 63 | ||
| 63 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 64 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 64 | #define FIOCLEX 0x5451 | 65 | #define FIOCLEX 0x5451 |
| @@ -85,6 +86,7 @@ | |||
| 85 | #define TIOCPKT_START 8 | 86 | #define TIOCPKT_START 8 |
| 86 | #define TIOCPKT_NOSTOP 16 | 87 | #define TIOCPKT_NOSTOP 16 |
| 87 | #define TIOCPKT_DOSTOP 32 | 88 | #define TIOCPKT_DOSTOP 32 |
| 89 | #define TIOCPKT_IOCTL 64 | ||
| 88 | 90 | ||
| 89 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 91 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 90 | 92 | ||
diff --git a/arch/ia64/include/asm/termbits.h b/arch/ia64/include/asm/termbits.h index 9f162e0089ad..c009b94e58d9 100644 --- a/arch/ia64/include/asm/termbits.h +++ b/arch/ia64/include/asm/termbits.h | |||
| @@ -187,6 +187,7 @@ struct ktermios { | |||
| 187 | #define FLUSHO 0010000 | 187 | #define FLUSHO 0010000 |
| 188 | #define PENDIN 0040000 | 188 | #define PENDIN 0040000 |
| 189 | #define IEXTEN 0100000 | 189 | #define IEXTEN 0100000 |
| 190 | #define EXTPROC 0200000 | ||
| 190 | 191 | ||
| 191 | /* tcflow() and TCXONC use these */ | 192 | /* tcflow() and TCXONC use these */ |
| 192 | #define TCOOFF 0 | 193 | #define TCOOFF 0 |
diff --git a/arch/m32r/include/asm/ioctls.h b/arch/m32r/include/asm/ioctls.h index f4c13a52fe48..66288063a4c0 100644 --- a/arch/m32r/include/asm/ioctls.h +++ b/arch/m32r/include/asm/ioctls.h | |||
| @@ -53,6 +53,7 @@ | |||
| 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 53 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 54 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 55 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 56 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 56 | 57 | ||
| 57 | #define FIONCLEX 0x5450 | 58 | #define FIONCLEX 0x5450 |
| 58 | #define FIOCLEX 0x5451 | 59 | #define FIOCLEX 0x5451 |
| @@ -79,6 +80,7 @@ | |||
| 79 | #define TIOCPKT_START 8 | 80 | #define TIOCPKT_START 8 |
| 80 | #define TIOCPKT_NOSTOP 16 | 81 | #define TIOCPKT_NOSTOP 16 |
| 81 | #define TIOCPKT_DOSTOP 32 | 82 | #define TIOCPKT_DOSTOP 32 |
| 83 | #define TIOCPKT_IOCTL 64 | ||
| 82 | 84 | ||
| 83 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 85 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 84 | 86 | ||
diff --git a/arch/m32r/include/asm/termbits.h b/arch/m32r/include/asm/termbits.h index bc104008b55b..957a3c688549 100644 --- a/arch/m32r/include/asm/termbits.h +++ b/arch/m32r/include/asm/termbits.h | |||
| @@ -179,6 +179,7 @@ struct ktermios { | |||
| 179 | #define FLUSHO 0010000 | 179 | #define FLUSHO 0010000 |
| 180 | #define PENDIN 0040000 | 180 | #define PENDIN 0040000 |
| 181 | #define IEXTEN 0100000 | 181 | #define IEXTEN 0100000 |
| 182 | #define EXTPROC 0200000 | ||
| 182 | 183 | ||
| 183 | /* tcflow() and TCXONC use these */ | 184 | /* tcflow() and TCXONC use these */ |
| 184 | #define TCOOFF 0 | 185 | #define TCOOFF 0 |
diff --git a/arch/m68k/include/asm/ioctls.h b/arch/m68k/include/asm/ioctls.h index b8d2f4be7fd7..91a57d665460 100644 --- a/arch/m68k/include/asm/ioctls.h +++ b/arch/m68k/include/asm/ioctls.h | |||
| @@ -52,6 +52,7 @@ | |||
| 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 55 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 55 | 56 | ||
| 56 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 57 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 57 | #define FIOCLEX 0x5451 | 58 | #define FIOCLEX 0x5451 |
| @@ -78,6 +79,7 @@ | |||
| 78 | #define TIOCPKT_START 8 | 79 | #define TIOCPKT_START 8 |
| 79 | #define TIOCPKT_NOSTOP 16 | 80 | #define TIOCPKT_NOSTOP 16 |
| 80 | #define TIOCPKT_DOSTOP 32 | 81 | #define TIOCPKT_DOSTOP 32 |
| 82 | #define TIOCPKT_IOCTL 64 | ||
| 81 | 83 | ||
| 82 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 84 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 83 | 85 | ||
diff --git a/arch/m68k/include/asm/termbits.h b/arch/m68k/include/asm/termbits.h index 8c14170996bb..aea1e37b765a 100644 --- a/arch/m68k/include/asm/termbits.h +++ b/arch/m68k/include/asm/termbits.h | |||
| @@ -179,6 +179,7 @@ struct ktermios { | |||
| 179 | #define FLUSHO 0010000 | 179 | #define FLUSHO 0010000 |
| 180 | #define PENDIN 0040000 | 180 | #define PENDIN 0040000 |
| 181 | #define IEXTEN 0100000 | 181 | #define IEXTEN 0100000 |
| 182 | #define EXTPROC 0200000 | ||
| 182 | 183 | ||
| 183 | 184 | ||
| 184 | /* tcflow() and TCXONC use these */ | 185 | /* tcflow() and TCXONC use these */ |
diff --git a/arch/mips/include/asm/ioctls.h b/arch/mips/include/asm/ioctls.h index 2fb9e1693bf7..d87cb0465693 100644 --- a/arch/mips/include/asm/ioctls.h +++ b/arch/mips/include/asm/ioctls.h | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | #define TIOCPKT_START 0x08 /* start output */ | 41 | #define TIOCPKT_START 0x08 /* start output */ |
| 42 | #define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */ | 42 | #define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */ |
| 43 | #define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */ | 43 | #define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */ |
| 44 | /* #define TIOCPKT_IOCTL 0x40 state change of pty driver */ | 44 | #define TIOCPKT_IOCTL 0x40 /* state change of pty driver */ |
| 45 | #define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */ | 45 | #define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */ |
| 46 | #define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */ | 46 | #define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */ |
| 47 | #define TIOCNOTTY 0x5471 /* void tty association */ | 47 | #define TIOCNOTTY 0x5471 /* void tty association */ |
| @@ -83,6 +83,7 @@ | |||
| 83 | #define TCSETSF2 _IOW('T', 0x2D, struct termios2) | 83 | #define TCSETSF2 _IOW('T', 0x2D, struct termios2) |
| 84 | #define TIOCGPTN _IOR('T', 0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 84 | #define TIOCGPTN _IOR('T', 0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 85 | #define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */ | 85 | #define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */ |
| 86 | #define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */ | ||
| 86 | 87 | ||
| 87 | /* I hope the range from 0x5480 on is free ... */ | 88 | /* I hope the range from 0x5480 on is free ... */ |
| 88 | #define TIOCSCTTY 0x5480 /* become controlling tty */ | 89 | #define TIOCSCTTY 0x5480 /* become controlling tty */ |
diff --git a/arch/mips/include/asm/termbits.h b/arch/mips/include/asm/termbits.h index c83c68444e86..76630b396fac 100644 --- a/arch/mips/include/asm/termbits.h +++ b/arch/mips/include/asm/termbits.h | |||
| @@ -203,6 +203,7 @@ struct ktermios { | |||
| 203 | #define PENDIN 0040000 /* Retype pending input (state). */ | 203 | #define PENDIN 0040000 /* Retype pending input (state). */ |
| 204 | #define TOSTOP 0100000 /* Send SIGTTOU for background output. */ | 204 | #define TOSTOP 0100000 /* Send SIGTTOU for background output. */ |
| 205 | #define ITOSTOP TOSTOP | 205 | #define ITOSTOP TOSTOP |
| 206 | #define EXTPROC 0200000 /* External processing on pty */ | ||
| 206 | 207 | ||
| 207 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ | 208 | /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ |
| 208 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 209 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
diff --git a/arch/mn10300/include/asm/ioctls.h b/arch/mn10300/include/asm/ioctls.h index 638219a99b1e..cb8cf1902234 100644 --- a/arch/mn10300/include/asm/ioctls.h +++ b/arch/mn10300/include/asm/ioctls.h | |||
| @@ -54,6 +54,7 @@ | |||
| 54 | #define TIOCGPTN _IOR('T', 0x30, unsigned int) /* Get Pty Number | 54 | #define TIOCGPTN _IOR('T', 0x30, unsigned int) /* Get Pty Number |
| 55 | * (of pty-mux device) */ | 55 | * (of pty-mux device) */ |
| 56 | #define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */ | 56 | #define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */ |
| 57 | #define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */ | ||
| 57 | 58 | ||
| 58 | #define FIONCLEX 0x5450 | 59 | #define FIONCLEX 0x5450 |
| 59 | #define FIOCLEX 0x5451 | 60 | #define FIOCLEX 0x5451 |
| @@ -80,6 +81,7 @@ | |||
| 80 | #define TIOCPKT_START 8 | 81 | #define TIOCPKT_START 8 |
| 81 | #define TIOCPKT_NOSTOP 16 | 82 | #define TIOCPKT_NOSTOP 16 |
| 82 | #define TIOCPKT_DOSTOP 32 | 83 | #define TIOCPKT_DOSTOP 32 |
| 84 | #define TIOCPKT_IOCTL 64 | ||
| 83 | 85 | ||
| 84 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 86 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 85 | 87 | ||
diff --git a/arch/mn10300/include/asm/termbits.h b/arch/mn10300/include/asm/termbits.h index eb2b0dc1f696..130d42495972 100644 --- a/arch/mn10300/include/asm/termbits.h +++ b/arch/mn10300/include/asm/termbits.h | |||
| @@ -180,6 +180,7 @@ struct ktermios { | |||
| 180 | #define FLUSHO 0010000 | 180 | #define FLUSHO 0010000 |
| 181 | #define PENDIN 0040000 | 181 | #define PENDIN 0040000 |
| 182 | #define IEXTEN 0100000 | 182 | #define IEXTEN 0100000 |
| 183 | #define EXTPROC 0200000 | ||
| 183 | 184 | ||
| 184 | /* tcflow() and TCXONC use these */ | 185 | /* tcflow() and TCXONC use these */ |
| 185 | #define TCOOFF 0 | 186 | #define TCOOFF 0 |
diff --git a/arch/parisc/include/asm/ioctls.h b/arch/parisc/include/asm/ioctls.h index 6cc497e52532..4e0614456bea 100644 --- a/arch/parisc/include/asm/ioctls.h +++ b/arch/parisc/include/asm/ioctls.h | |||
| @@ -52,6 +52,7 @@ | |||
| 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 55 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 55 | 56 | ||
| 56 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 57 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 57 | #define FIOCLEX 0x5451 | 58 | #define FIOCLEX 0x5451 |
| @@ -82,6 +83,7 @@ | |||
| 82 | #define TIOCPKT_START 8 | 83 | #define TIOCPKT_START 8 |
| 83 | #define TIOCPKT_NOSTOP 16 | 84 | #define TIOCPKT_NOSTOP 16 |
| 84 | #define TIOCPKT_DOSTOP 32 | 85 | #define TIOCPKT_DOSTOP 32 |
| 86 | #define TIOCPKT_IOCTL 64 | ||
| 85 | 87 | ||
| 86 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 88 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 87 | 89 | ||
diff --git a/arch/parisc/include/asm/termbits.h b/arch/parisc/include/asm/termbits.h index d8bbc73b16b7..d1ab92177a5c 100644 --- a/arch/parisc/include/asm/termbits.h +++ b/arch/parisc/include/asm/termbits.h | |||
| @@ -180,6 +180,7 @@ struct ktermios { | |||
| 180 | #define FLUSHO 0010000 | 180 | #define FLUSHO 0010000 |
| 181 | #define PENDIN 0040000 | 181 | #define PENDIN 0040000 |
| 182 | #define IEXTEN 0100000 | 182 | #define IEXTEN 0100000 |
| 183 | #define EXTPROC 0200000 | ||
| 183 | 184 | ||
| 184 | /* tcflow() and TCXONC use these */ | 185 | /* tcflow() and TCXONC use these */ |
| 185 | #define TCOOFF 0 | 186 | #define TCOOFF 0 |
diff --git a/arch/powerpc/include/asm/ioctls.h b/arch/powerpc/include/asm/ioctls.h index 1842186d872c..851920052e08 100644 --- a/arch/powerpc/include/asm/ioctls.h +++ b/arch/powerpc/include/asm/ioctls.h | |||
| @@ -80,6 +80,7 @@ | |||
| 80 | # define TIOCPKT_START 8 | 80 | # define TIOCPKT_START 8 |
| 81 | # define TIOCPKT_NOSTOP 16 | 81 | # define TIOCPKT_NOSTOP 16 |
| 82 | # define TIOCPKT_DOSTOP 32 | 82 | # define TIOCPKT_DOSTOP 32 |
| 83 | # define TIOCPKT_IOCTL 64 | ||
| 83 | 84 | ||
| 84 | 85 | ||
| 85 | #define TIOCNOTTY 0x5422 | 86 | #define TIOCNOTTY 0x5422 |
| @@ -93,6 +94,7 @@ | |||
| 93 | #define TIOCSRS485 0x542f | 94 | #define TIOCSRS485 0x542f |
| 94 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 95 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 95 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 96 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 97 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 96 | 98 | ||
| 97 | #define TIOCSERCONFIG 0x5453 | 99 | #define TIOCSERCONFIG 0x5453 |
| 98 | #define TIOCSERGWILD 0x5454 | 100 | #define TIOCSERGWILD 0x5454 |
diff --git a/arch/powerpc/include/asm/termbits.h b/arch/powerpc/include/asm/termbits.h index 6698188ca550..549d700e18f2 100644 --- a/arch/powerpc/include/asm/termbits.h +++ b/arch/powerpc/include/asm/termbits.h | |||
| @@ -189,6 +189,7 @@ struct ktermios { | |||
| 189 | #define FLUSHO 0x00800000 | 189 | #define FLUSHO 0x00800000 |
| 190 | #define PENDIN 0x20000000 | 190 | #define PENDIN 0x20000000 |
| 191 | #define IEXTEN 0x00000400 | 191 | #define IEXTEN 0x00000400 |
| 192 | #define EXTPROC 0x10000000 | ||
| 192 | 193 | ||
| 193 | /* Values for the ACTION argument to `tcflow'. */ | 194 | /* Values for the ACTION argument to `tcflow'. */ |
| 194 | #define TCOOFF 0 | 195 | #define TCOOFF 0 |
diff --git a/arch/s390/include/asm/ioctls.h b/arch/s390/include/asm/ioctls.h index 40e481b1b461..2f3d8736361f 100644 --- a/arch/s390/include/asm/ioctls.h +++ b/arch/s390/include/asm/ioctls.h | |||
| @@ -60,6 +60,7 @@ | |||
| 60 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | 60 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) |
| 61 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 61 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 62 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 62 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 63 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 63 | 64 | ||
| 64 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ | 65 | #define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ |
| 65 | #define FIOCLEX 0x5451 | 66 | #define FIOCLEX 0x5451 |
| @@ -86,6 +87,7 @@ | |||
| 86 | #define TIOCPKT_START 8 | 87 | #define TIOCPKT_START 8 |
| 87 | #define TIOCPKT_NOSTOP 16 | 88 | #define TIOCPKT_NOSTOP 16 |
| 88 | #define TIOCPKT_DOSTOP 32 | 89 | #define TIOCPKT_DOSTOP 32 |
| 90 | #define TIOCPKT_IOCTL 64 | ||
| 89 | 91 | ||
| 90 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 92 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 91 | 93 | ||
diff --git a/arch/sh/include/asm/ioctls.h b/arch/sh/include/asm/ioctls.h index c212c371a4a5..eb6c4c687972 100644 --- a/arch/sh/include/asm/ioctls.h +++ b/arch/sh/include/asm/ioctls.h | |||
| @@ -69,6 +69,7 @@ | |||
| 69 | # define TIOCPKT_START 8 | 69 | # define TIOCPKT_START 8 |
| 70 | # define TIOCPKT_NOSTOP 16 | 70 | # define TIOCPKT_NOSTOP 16 |
| 71 | # define TIOCPKT_DOSTOP 32 | 71 | # define TIOCPKT_DOSTOP 32 |
| 72 | # define TIOCPKT_IOCTL 64 | ||
| 72 | 73 | ||
| 73 | 74 | ||
| 74 | #define TIOCNOTTY _IO('T', 34) /* 0x5422 */ | 75 | #define TIOCNOTTY _IO('T', 34) /* 0x5422 */ |
| @@ -84,6 +85,7 @@ | |||
| 84 | #define TCSETSF2 _IOW('T', 45, struct termios2) | 85 | #define TCSETSF2 _IOW('T', 45, struct termios2) |
| 85 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 86 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 86 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 87 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 88 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 87 | 89 | ||
| 88 | #define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */ | 90 | #define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */ |
| 89 | #define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */ | 91 | #define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */ |
diff --git a/arch/sparc/include/asm/ioctls.h b/arch/sparc/include/asm/ioctls.h index 1fe6855c5c18..53f4ee009bdd 100644 --- a/arch/sparc/include/asm/ioctls.h +++ b/arch/sparc/include/asm/ioctls.h | |||
| @@ -80,6 +80,7 @@ | |||
| 80 | /* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ | 80 | /* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ |
| 81 | #define TIOCGPTN _IOR('t', 134, unsigned int) /* Get Pty Number */ | 81 | #define TIOCGPTN _IOR('t', 134, unsigned int) /* Get Pty Number */ |
| 82 | #define TIOCSPTLCK _IOW('t', 135, int) /* Lock/unlock PTY */ | 82 | #define TIOCSPTLCK _IOW('t', 135, int) /* Lock/unlock PTY */ |
| 83 | #define TIOCSIG _IOW('t', 136, int) /* Generate signal on Pty slave */ | ||
| 83 | 84 | ||
| 84 | /* Little f */ | 85 | /* Little f */ |
| 85 | #define FIOCLEX _IO('f', 1) | 86 | #define FIOCLEX _IO('f', 1) |
| @@ -132,5 +133,6 @@ | |||
| 132 | #define TIOCPKT_START 8 | 133 | #define TIOCPKT_START 8 |
| 133 | #define TIOCPKT_NOSTOP 16 | 134 | #define TIOCPKT_NOSTOP 16 |
| 134 | #define TIOCPKT_DOSTOP 32 | 135 | #define TIOCPKT_DOSTOP 32 |
| 136 | #define TIOCPKT_IOCTL 64 | ||
| 135 | 137 | ||
| 136 | #endif /* !(_ASM_SPARC_IOCTLS_H) */ | 138 | #endif /* !(_ASM_SPARC_IOCTLS_H) */ |
diff --git a/arch/sparc/include/asm/termbits.h b/arch/sparc/include/asm/termbits.h index d72dfed1f9d7..23b10ff08df2 100644 --- a/arch/sparc/include/asm/termbits.h +++ b/arch/sparc/include/asm/termbits.h | |||
| @@ -225,6 +225,7 @@ struct ktermios { | |||
| 225 | #define FLUSHO 0x00002000 | 225 | #define FLUSHO 0x00002000 |
| 226 | #define PENDIN 0x00004000 | 226 | #define PENDIN 0x00004000 |
| 227 | #define IEXTEN 0x00008000 | 227 | #define IEXTEN 0x00008000 |
| 228 | #define EXTPROC 0x00010000 | ||
| 228 | 229 | ||
| 229 | /* modem lines */ | 230 | /* modem lines */ |
| 230 | #define TIOCM_LE 0x001 | 231 | #define TIOCM_LE 0x001 |
diff --git a/arch/xtensa/include/asm/ioctls.h b/arch/xtensa/include/asm/ioctls.h index 0ffa942954b9..ab1800012ed9 100644 --- a/arch/xtensa/include/asm/ioctls.h +++ b/arch/xtensa/include/asm/ioctls.h | |||
| @@ -81,6 +81,7 @@ | |||
| 81 | # define TIOCPKT_START 8 | 81 | # define TIOCPKT_START 8 |
| 82 | # define TIOCPKT_NOSTOP 16 | 82 | # define TIOCPKT_NOSTOP 16 |
| 83 | # define TIOCPKT_DOSTOP 32 | 83 | # define TIOCPKT_DOSTOP 32 |
| 84 | # define TIOCPKT_IOCTL 64 | ||
| 84 | 85 | ||
| 85 | 86 | ||
| 86 | #define TIOCNOTTY _IO('T', 34) | 87 | #define TIOCNOTTY _IO('T', 34) |
| @@ -97,6 +98,7 @@ | |||
| 97 | #define TCSETSF2 _IOW('T', 45, struct termios2) | 98 | #define TCSETSF2 _IOW('T', 45, struct termios2) |
| 98 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 99 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
| 99 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 100 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
| 101 | #define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */ | ||
| 100 | 102 | ||
| 101 | #define TIOCSERCONFIG _IO('T', 83) | 103 | #define TIOCSERCONFIG _IO('T', 83) |
| 102 | #define TIOCSERGWILD _IOR('T', 84, int) | 104 | #define TIOCSERGWILD _IOR('T', 84, int) |
diff --git a/arch/xtensa/include/asm/termbits.h b/arch/xtensa/include/asm/termbits.h index 85aa6a3c0b6e..0d6c8715b24f 100644 --- a/arch/xtensa/include/asm/termbits.h +++ b/arch/xtensa/include/asm/termbits.h | |||
| @@ -196,6 +196,7 @@ struct ktermios { | |||
| 196 | #define FLUSHO 0010000 | 196 | #define FLUSHO 0010000 |
| 197 | #define PENDIN 0040000 | 197 | #define PENDIN 0040000 |
| 198 | #define IEXTEN 0100000 | 198 | #define IEXTEN 0100000 |
| 199 | #define EXTPROC 0200000 | ||
| 199 | 200 | ||
| 200 | /* tcflow() and TCXONC use these */ | 201 | /* tcflow() and TCXONC use these */ |
| 201 | 202 | ||
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c index bdae8327143c..428f4fe0b5f7 100644 --- a/drivers/char/n_tty.c +++ b/drivers/char/n_tty.c | |||
| @@ -1102,6 +1102,11 @@ static inline void n_tty_receive_char(struct tty_struct *tty, unsigned char c) | |||
| 1102 | if (I_IUCLC(tty) && L_IEXTEN(tty)) | 1102 | if (I_IUCLC(tty) && L_IEXTEN(tty)) |
| 1103 | c = tolower(c); | 1103 | c = tolower(c); |
| 1104 | 1104 | ||
| 1105 | if (L_EXTPROC(tty)) { | ||
| 1106 | put_tty_queue(c, tty); | ||
| 1107 | return; | ||
| 1108 | } | ||
| 1109 | |||
| 1105 | if (tty->stopped && !tty->flow_stopped && I_IXON(tty) && | 1110 | if (tty->stopped && !tty->flow_stopped && I_IXON(tty) && |
| 1106 | I_IXANY(tty) && c != START_CHAR(tty) && c != STOP_CHAR(tty) && | 1111 | I_IXANY(tty) && c != START_CHAR(tty) && c != STOP_CHAR(tty) && |
| 1107 | c != INTR_CHAR(tty) && c != QUIT_CHAR(tty) && c != SUSP_CHAR(tty)) { | 1112 | c != INTR_CHAR(tty) && c != QUIT_CHAR(tty) && c != SUSP_CHAR(tty)) { |
| @@ -1409,7 +1414,8 @@ static void n_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp, | |||
| 1409 | 1414 | ||
| 1410 | n_tty_set_room(tty); | 1415 | n_tty_set_room(tty); |
| 1411 | 1416 | ||
| 1412 | if (!tty->icanon && (tty->read_cnt >= tty->minimum_to_wake)) { | 1417 | if ((!tty->icanon && (tty->read_cnt >= tty->minimum_to_wake)) || |
| 1418 | L_EXTPROC(tty)) { | ||
| 1413 | kill_fasync(&tty->fasync, SIGIO, POLL_IN); | 1419 | kill_fasync(&tty->fasync, SIGIO, POLL_IN); |
| 1414 | if (waitqueue_active(&tty->read_wait)) | 1420 | if (waitqueue_active(&tty->read_wait)) |
| 1415 | wake_up_interruptible(&tty->read_wait); | 1421 | wake_up_interruptible(&tty->read_wait); |
| @@ -1585,7 +1591,7 @@ static int n_tty_open(struct tty_struct *tty) | |||
| 1585 | static inline int input_available_p(struct tty_struct *tty, int amt) | 1591 | static inline int input_available_p(struct tty_struct *tty, int amt) |
| 1586 | { | 1592 | { |
| 1587 | tty_flush_to_ldisc(tty); | 1593 | tty_flush_to_ldisc(tty); |
| 1588 | if (tty->icanon) { | 1594 | if (tty->icanon && !L_EXTPROC(tty)) { |
| 1589 | if (tty->canon_data) | 1595 | if (tty->canon_data) |
| 1590 | return 1; | 1596 | return 1; |
| 1591 | } else if (tty->read_cnt >= (amt ? amt : 1)) | 1597 | } else if (tty->read_cnt >= (amt ? amt : 1)) |
| @@ -1632,6 +1638,11 @@ static int copy_from_read_buf(struct tty_struct *tty, | |||
| 1632 | spin_lock_irqsave(&tty->read_lock, flags); | 1638 | spin_lock_irqsave(&tty->read_lock, flags); |
| 1633 | tty->read_tail = (tty->read_tail + n) & (N_TTY_BUF_SIZE-1); | 1639 | tty->read_tail = (tty->read_tail + n) & (N_TTY_BUF_SIZE-1); |
| 1634 | tty->read_cnt -= n; | 1640 | tty->read_cnt -= n; |
| 1641 | /* Turn single EOF into zero-length read */ | ||
| 1642 | if (L_EXTPROC(tty) && tty->icanon && n == 1) { | ||
| 1643 | if (!tty->read_cnt && (*b)[n-1] == EOF_CHAR(tty)) | ||
| 1644 | n--; | ||
| 1645 | } | ||
| 1635 | spin_unlock_irqrestore(&tty->read_lock, flags); | 1646 | spin_unlock_irqrestore(&tty->read_lock, flags); |
| 1636 | *b += n; | 1647 | *b += n; |
| 1637 | *nr -= n; | 1648 | *nr -= n; |
| @@ -1812,7 +1823,7 @@ do_it_again: | |||
| 1812 | nr--; | 1823 | nr--; |
| 1813 | } | 1824 | } |
| 1814 | 1825 | ||
| 1815 | if (tty->icanon) { | 1826 | if (tty->icanon && !L_EXTPROC(tty)) { |
| 1816 | /* N.B. avoid overrun if nr == 0 */ | 1827 | /* N.B. avoid overrun if nr == 0 */ |
| 1817 | while (nr && tty->read_cnt) { | 1828 | while (nr && tty->read_cnt) { |
| 1818 | int eol; | 1829 | int eol; |
diff --git a/drivers/char/pty.c b/drivers/char/pty.c index d83a43130df4..b640ef29be1c 100644 --- a/drivers/char/pty.c +++ b/drivers/char/pty.c | |||
| @@ -171,6 +171,23 @@ static int pty_set_lock(struct tty_struct *tty, int __user *arg) | |||
| 171 | return 0; | 171 | return 0; |
| 172 | } | 172 | } |
| 173 | 173 | ||
| 174 | /* Send a signal to the slave */ | ||
| 175 | static int pty_signal(struct tty_struct *tty, int sig) | ||
| 176 | { | ||
| 177 | unsigned long flags; | ||
| 178 | struct pid *pgrp; | ||
| 179 | |||
| 180 | if (tty->link) { | ||
| 181 | spin_lock_irqsave(&tty->link->ctrl_lock, flags); | ||
| 182 | pgrp = get_pid(tty->link->pgrp); | ||
| 183 | spin_unlock_irqrestore(&tty->link->ctrl_lock, flags); | ||
| 184 | |||
| 185 | kill_pgrp(pgrp, sig, 1); | ||
| 186 | put_pid(pgrp); | ||
| 187 | } | ||
| 188 | return 0; | ||
| 189 | } | ||
| 190 | |||
| 174 | static void pty_flush_buffer(struct tty_struct *tty) | 191 | static void pty_flush_buffer(struct tty_struct *tty) |
| 175 | { | 192 | { |
| 176 | struct tty_struct *to = tty->link; | 193 | struct tty_struct *to = tty->link; |
| @@ -321,6 +338,8 @@ static int pty_bsd_ioctl(struct tty_struct *tty, struct file *file, | |||
| 321 | switch (cmd) { | 338 | switch (cmd) { |
| 322 | case TIOCSPTLCK: /* Set PT Lock (disallow slave open) */ | 339 | case TIOCSPTLCK: /* Set PT Lock (disallow slave open) */ |
| 323 | return pty_set_lock(tty, (int __user *) arg); | 340 | return pty_set_lock(tty, (int __user *) arg); |
| 341 | case TIOCSIG: /* Send signal to other side of pty */ | ||
| 342 | return pty_signal(tty, (int) arg); | ||
| 324 | } | 343 | } |
| 325 | return -ENOIOCTLCMD; | 344 | return -ENOIOCTLCMD; |
| 326 | } | 345 | } |
| @@ -476,6 +495,8 @@ static int pty_unix98_ioctl(struct tty_struct *tty, struct file *file, | |||
| 476 | return pty_set_lock(tty, (int __user *)arg); | 495 | return pty_set_lock(tty, (int __user *)arg); |
| 477 | case TIOCGPTN: /* Get PT Number */ | 496 | case TIOCGPTN: /* Get PT Number */ |
| 478 | return put_user(tty->index, (unsigned int __user *)arg); | 497 | return put_user(tty->index, (unsigned int __user *)arg); |
| 498 | case TIOCSIG: /* Send signal to other side of pty */ | ||
| 499 | return pty_signal(tty, (int) arg); | ||
| 479 | } | 500 | } |
| 480 | 501 | ||
| 481 | return -ENOIOCTLCMD; | 502 | return -ENOIOCTLCMD; |
diff --git a/drivers/char/tty_ioctl.c b/drivers/char/tty_ioctl.c index 6bd5f8866c74..0c1889971459 100644 --- a/drivers/char/tty_ioctl.c +++ b/drivers/char/tty_ioctl.c | |||
| @@ -517,19 +517,25 @@ static void change_termios(struct tty_struct *tty, struct ktermios *new_termios) | |||
| 517 | 517 | ||
| 518 | /* See if packet mode change of state. */ | 518 | /* See if packet mode change of state. */ |
| 519 | if (tty->link && tty->link->packet) { | 519 | if (tty->link && tty->link->packet) { |
| 520 | int extproc = (old_termios.c_lflag & EXTPROC) | | ||
| 521 | (tty->termios->c_lflag & EXTPROC); | ||
| 520 | int old_flow = ((old_termios.c_iflag & IXON) && | 522 | int old_flow = ((old_termios.c_iflag & IXON) && |
| 521 | (old_termios.c_cc[VSTOP] == '\023') && | 523 | (old_termios.c_cc[VSTOP] == '\023') && |
| 522 | (old_termios.c_cc[VSTART] == '\021')); | 524 | (old_termios.c_cc[VSTART] == '\021')); |
| 523 | int new_flow = (I_IXON(tty) && | 525 | int new_flow = (I_IXON(tty) && |
| 524 | STOP_CHAR(tty) == '\023' && | 526 | STOP_CHAR(tty) == '\023' && |
| 525 | START_CHAR(tty) == '\021'); | 527 | START_CHAR(tty) == '\021'); |
| 526 | if (old_flow != new_flow) { | 528 | if ((old_flow != new_flow) || extproc) { |
| 527 | spin_lock_irqsave(&tty->ctrl_lock, flags); | 529 | spin_lock_irqsave(&tty->ctrl_lock, flags); |
| 528 | tty->ctrl_status &= ~(TIOCPKT_DOSTOP | TIOCPKT_NOSTOP); | 530 | if (old_flow != new_flow) { |
| 529 | if (new_flow) | 531 | tty->ctrl_status &= ~(TIOCPKT_DOSTOP | TIOCPKT_NOSTOP); |
| 530 | tty->ctrl_status |= TIOCPKT_DOSTOP; | 532 | if (new_flow) |
| 531 | else | 533 | tty->ctrl_status |= TIOCPKT_DOSTOP; |
| 532 | tty->ctrl_status |= TIOCPKT_NOSTOP; | 534 | else |
| 535 | tty->ctrl_status |= TIOCPKT_NOSTOP; | ||
| 536 | } | ||
| 537 | if (extproc) | ||
| 538 | tty->ctrl_status |= TIOCPKT_IOCTL; | ||
| 533 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); | 539 | spin_unlock_irqrestore(&tty->ctrl_lock, flags); |
| 534 | wake_up_interruptible(&tty->link->read_wait); | 540 | wake_up_interruptible(&tty->link->read_wait); |
| 535 | } | 541 | } |
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index 63ae85831464..fa4bc48810fd 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c | |||
| @@ -969,6 +969,7 @@ COMPATIBLE_IOCTL(TIOCGPGRP) | |||
| 969 | COMPATIBLE_IOCTL(TIOCGPTN) | 969 | COMPATIBLE_IOCTL(TIOCGPTN) |
| 970 | COMPATIBLE_IOCTL(TIOCSPTLCK) | 970 | COMPATIBLE_IOCTL(TIOCSPTLCK) |
| 971 | COMPATIBLE_IOCTL(TIOCSERGETLSR) | 971 | COMPATIBLE_IOCTL(TIOCSERGETLSR) |
| 972 | COMPATIBLE_IOCTL(TIOCSIG) | ||
| 972 | #ifdef TCGETS2 | 973 | #ifdef TCGETS2 |
| 973 | COMPATIBLE_IOCTL(TCGETS2) | 974 | COMPATIBLE_IOCTL(TCGETS2) |
| 974 | COMPATIBLE_IOCTL(TCSETS2) | 975 | COMPATIBLE_IOCTL(TCSETS2) |
diff --git a/include/asm-generic/ioctls.h b/include/asm-generic/ioctls.h index 1375fa1a7a4d..8554cb6a81b9 100644 --- a/include/asm-generic/ioctls.h +++ b/include/asm-generic/ioctls.h | |||
| @@ -69,6 +69,7 @@ | |||
| 69 | #define TCSETX 0x5433 | 69 | #define TCSETX 0x5433 |
| 70 | #define TCSETXF 0x5434 | 70 | #define TCSETXF 0x5434 |
| 71 | #define TCSETXW 0x5435 | 71 | #define TCSETXW 0x5435 |
| 72 | #define TIOCSIG _IOW('T', 0x36, int) /* pty: generate signal */ | ||
| 72 | 73 | ||
| 73 | #define FIONCLEX 0x5450 | 74 | #define FIONCLEX 0x5450 |
| 74 | #define FIOCLEX 0x5451 | 75 | #define FIOCLEX 0x5451 |
| @@ -102,6 +103,7 @@ | |||
| 102 | #define TIOCPKT_START 8 | 103 | #define TIOCPKT_START 8 |
| 103 | #define TIOCPKT_NOSTOP 16 | 104 | #define TIOCPKT_NOSTOP 16 |
| 104 | #define TIOCPKT_DOSTOP 32 | 105 | #define TIOCPKT_DOSTOP 32 |
| 106 | #define TIOCPKT_IOCTL 64 | ||
| 105 | 107 | ||
| 106 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ | 108 | #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ |
| 107 | 109 | ||
diff --git a/include/asm-generic/termbits.h b/include/asm-generic/termbits.h index 1c9773d48cb0..232b4781aef3 100644 --- a/include/asm-generic/termbits.h +++ b/include/asm-generic/termbits.h | |||
| @@ -178,6 +178,7 @@ struct ktermios { | |||
| 178 | #define FLUSHO 0010000 | 178 | #define FLUSHO 0010000 |
| 179 | #define PENDIN 0040000 | 179 | #define PENDIN 0040000 |
| 180 | #define IEXTEN 0100000 | 180 | #define IEXTEN 0100000 |
| 181 | #define EXTPROC 0200000 | ||
| 181 | 182 | ||
| 182 | /* tcflow() and TCXONC use these */ | 183 | /* tcflow() and TCXONC use these */ |
| 183 | #define TCOOFF 0 | 184 | #define TCOOFF 0 |
diff --git a/include/linux/tty.h b/include/linux/tty.h index 7802a243ee13..2df60e4ff40e 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -179,6 +179,7 @@ struct tty_bufhead { | |||
| 179 | #define L_FLUSHO(tty) _L_FLAG((tty), FLUSHO) | 179 | #define L_FLUSHO(tty) _L_FLAG((tty), FLUSHO) |
| 180 | #define L_PENDIN(tty) _L_FLAG((tty), PENDIN) | 180 | #define L_PENDIN(tty) _L_FLAG((tty), PENDIN) |
| 181 | #define L_IEXTEN(tty) _L_FLAG((tty), IEXTEN) | 181 | #define L_IEXTEN(tty) _L_FLAG((tty), IEXTEN) |
| 182 | #define L_EXTPROC(tty) _L_FLAG((tty), EXTPROC) | ||
| 182 | 183 | ||
| 183 | struct device; | 184 | struct device; |
| 184 | struct signal_struct; | 185 | struct signal_struct; |
