mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
![hyc@symas.com](/assets/img/avatar_default.png)
This patch is against the 2.6.34 source. Paraphrased from the 1989 BSD patch by David Borman @ cray.com: These are the changes needed for the kernel to support LINEMODE in the server. There is a new bit in the termios local flag word, EXTPROC. When this bit is set, several aspects of the terminal driver are disabled. Input line editing, character echo, and mapping of signals are all disabled. This allows the telnetd to turn off these functions when in linemode, but still keep track of what state the user wants the terminal to be in. New ioctl: TIOCSIG Generate a signal to processes in the current process group of the pty. There is a new mode for packet driver, the TIOCPKT_IOCTL bit. When packet mode is turned on in the pty, and the EXTPROC bit is set, then whenever the state of the pty is changed, the next read on the master side of the pty will have the TIOCPKT_IOCTL bit set. This allows the process on the server side of the pty to know when the state of the terminal has changed; it can then issue the appropriate ioctl to retrieve the new state. Since the original BSD patches accompanied the source code for telnet I've left that reference here, but obviously the feature is useful for any remote terminal protocol, including ssh. The corresponding feature has existed in the BSD tty driver since 1989. For historical reference, a good copy of the relevant files can be found here: http://anonsvn.mit.edu/viewvc/krb5/trunk/src/appl/telnet/?pathrev=17741 Signed-off-by: Howard Chu <hyc@symas.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
88 lines
2.7 KiB
C
88 lines
2.7 KiB
C
#ifndef _ASM_IOCTLS_H
|
|
#define _ASM_IOCTLS_H
|
|
|
|
#include <asm/ioctl.h>
|
|
|
|
/* 0x54 is just a magic number to make these relatively unique ('T') */
|
|
|
|
#define TCGETS 0x5401
|
|
#define TCSETS 0x5402
|
|
#define TCSETSW 0x5403
|
|
#define TCSETSF 0x5404
|
|
#define TCGETA 0x5405
|
|
#define TCSETA 0x5406
|
|
#define TCSETAW 0x5407
|
|
#define TCSETAF 0x5408
|
|
#define TCSBRK 0x5409
|
|
#define TCXONC 0x540A
|
|
#define TCFLSH 0x540B
|
|
#define TIOCEXCL 0x540C
|
|
#define TIOCNXCL 0x540D
|
|
#define TIOCSCTTY 0x540E
|
|
#define TIOCGPGRP 0x540F
|
|
#define TIOCSPGRP 0x5410
|
|
#define TIOCOUTQ 0x5411
|
|
#define TIOCSTI 0x5412
|
|
#define TIOCGWINSZ 0x5413
|
|
#define TIOCSWINSZ 0x5414
|
|
#define TIOCMGET 0x5415
|
|
#define TIOCMBIS 0x5416
|
|
#define TIOCMBIC 0x5417
|
|
#define TIOCMSET 0x5418
|
|
#define TIOCGSOFTCAR 0x5419
|
|
#define TIOCSSOFTCAR 0x541A
|
|
#define FIONREAD 0x541B
|
|
#define TIOCINQ FIONREAD
|
|
#define TIOCLINUX 0x541C
|
|
#define TIOCCONS 0x541D
|
|
#define TIOCGSERIAL 0x541E
|
|
#define TIOCSSERIAL 0x541F
|
|
#define TIOCPKT 0x5420
|
|
#define FIONBIO 0x5421
|
|
#define TIOCNOTTY 0x5422
|
|
#define TIOCSETD 0x5423
|
|
#define TIOCGETD 0x5424
|
|
#define TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
|
|
/* #define TIOCTTYGSTRUCT 0x5426 - Former debugging-only ioctl */
|
|
#define TIOCSBRK 0x5427 /* BSD compatibility */
|
|
#define TIOCCBRK 0x5428 /* BSD compatibility */
|
|
#define TIOCGSID 0x5429 /* Return the session ID of FD */
|
|
#define TCGETS2 _IOR('T', 0x2A, struct termios2)
|
|
#define TCSETS2 _IOW('T', 0x2B, struct termios2)
|
|
#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
|
|
#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
|
|
#define TIOCGPTN _IOR('T', 0x30, unsigned int) /* Get Pty Number
|
|
* (of pty-mux device) */
|
|
#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
|
|
#define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */
|
|
|
|
#define FIONCLEX 0x5450
|
|
#define FIOCLEX 0x5451
|
|
#define FIOASYNC 0x5452
|
|
#define TIOCSERCONFIG 0x5453
|
|
#define TIOCSERGWILD 0x5454
|
|
#define TIOCSERSWILD 0x5455
|
|
#define TIOCGLCKTRMIOS 0x5456
|
|
#define TIOCSLCKTRMIOS 0x5457
|
|
#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
|
|
#define TIOCSERGETLSR 0x5459 /* Get line status register */
|
|
#define TIOCSERGETMULTI 0x545A /* Get multiport config */
|
|
#define TIOCSERSETMULTI 0x545B /* Set multiport config */
|
|
|
|
#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
|
|
#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
|
|
#define FIOQSIZE 0x5460
|
|
|
|
/* Used for packet mode */
|
|
#define TIOCPKT_DATA 0
|
|
#define TIOCPKT_FLUSHREAD 1
|
|
#define TIOCPKT_FLUSHWRITE 2
|
|
#define TIOCPKT_STOP 4
|
|
#define TIOCPKT_START 8
|
|
#define TIOCPKT_NOSTOP 16
|
|
#define TIOCPKT_DOSTOP 32
|
|
#define TIOCPKT_IOCTL 64
|
|
|
|
#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
|
|
|
|
#endif /* _ASM_IOCTLS_H */
|