26df6d1340
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>
109 lines
4.1 KiB
C
109 lines
4.1 KiB
C
/*
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
* for more details.
|
|
*
|
|
* Copyright (C) 1995, 1996, 2001 Ralf Baechle
|
|
* Copyright (C) 2001 MIPS Technologies, Inc.
|
|
*/
|
|
#ifndef __ASM_IOCTLS_H
|
|
#define __ASM_IOCTLS_H
|
|
|
|
#include <asm/ioctl.h>
|
|
|
|
#define TCGETA 0x5401
|
|
#define TCSETA 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */
|
|
#define TCSETAW 0x5403
|
|
#define TCSETAF 0x5404
|
|
|
|
#define TCSBRK 0x5405
|
|
#define TCXONC 0x5406
|
|
#define TCFLSH 0x5407
|
|
|
|
#define TCGETS 0x540d
|
|
#define TCSETS 0x540e
|
|
#define TCSETSW 0x540f
|
|
#define TCSETSF 0x5410
|
|
|
|
#define TIOCEXCL 0x740d /* set exclusive use of tty */
|
|
#define TIOCNXCL 0x740e /* reset exclusive use of tty */
|
|
#define TIOCOUTQ 0x7472 /* output queue size */
|
|
#define TIOCSTI 0x5472 /* simulate terminal input */
|
|
#define TIOCMGET 0x741d /* get all modem bits */
|
|
#define TIOCMBIS 0x741b /* bis modem bits */
|
|
#define TIOCMBIC 0x741c /* bic modem bits */
|
|
#define TIOCMSET 0x741a /* set all modem bits */
|
|
#define TIOCPKT 0x5470 /* pty: set/clear packet mode */
|
|
#define TIOCPKT_DATA 0x00 /* data packet */
|
|
#define TIOCPKT_FLUSHREAD 0x01 /* flush packet */
|
|
#define TIOCPKT_FLUSHWRITE 0x02 /* flush packet */
|
|
#define TIOCPKT_STOP 0x04 /* stop output */
|
|
#define TIOCPKT_START 0x08 /* start output */
|
|
#define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */
|
|
#define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */
|
|
#define TIOCPKT_IOCTL 0x40 /* state change of pty driver */
|
|
#define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */
|
|
#define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */
|
|
#define TIOCNOTTY 0x5471 /* void tty association */
|
|
#define TIOCSETD 0x7401
|
|
#define TIOCGETD 0x7400
|
|
|
|
#define FIOCLEX 0x6601
|
|
#define FIONCLEX 0x6602
|
|
#define FIOASYNC 0x667d
|
|
#define FIONBIO 0x667e
|
|
#define FIOQSIZE 0x667f
|
|
|
|
#define TIOCGLTC 0x7474 /* get special local chars */
|
|
#define TIOCSLTC 0x7475 /* set special local chars */
|
|
#define TIOCSPGRP _IOW('t', 118, int) /* set pgrp of tty */
|
|
#define TIOCGPGRP _IOR('t', 119, int) /* get pgrp of tty */
|
|
#define TIOCCONS _IOW('t', 120, int) /* become virtual console */
|
|
|
|
#define FIONREAD 0x467f
|
|
#define TIOCINQ FIONREAD
|
|
|
|
#define TIOCGETP 0x7408
|
|
#define TIOCSETP 0x7409
|
|
#define TIOCSETN 0x740a /* TIOCSETP wo flush */
|
|
|
|
/* #define TIOCSETA _IOW('t', 20, struct termios) set termios struct */
|
|
/* #define TIOCSETAW _IOW('t', 21, struct termios) drain output, set */
|
|
/* #define TIOCSETAF _IOW('t', 22, struct termios) drn out, fls in, set */
|
|
/* #define TIOCGETD _IOR('t', 26, int) get line discipline */
|
|
/* #define TIOCSETD _IOW('t', 27, int) set line discipline */
|
|
/* 127-124 compat */
|
|
|
|
#define TIOCSBRK 0x5427 /* BSD compatibility */
|
|
#define TIOCCBRK 0x5428 /* BSD compatibility */
|
|
#define TIOCGSID 0x7416 /* 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 */
|
|
|
|
/* I hope the range from 0x5480 on is free ... */
|
|
#define TIOCSCTTY 0x5480 /* become controlling tty */
|
|
#define TIOCGSOFTCAR 0x5481
|
|
#define TIOCSSOFTCAR 0x5482
|
|
#define TIOCLINUX 0x5483
|
|
#define TIOCGSERIAL 0x5484
|
|
#define TIOCSSERIAL 0x5485
|
|
#define TCSBRKP 0x5486 /* Needed for POSIX tcsendbreak() */
|
|
#define TIOCSERCONFIG 0x5488
|
|
#define TIOCSERGWILD 0x5489
|
|
#define TIOCSERSWILD 0x548a
|
|
#define TIOCGLCKTRMIOS 0x548b
|
|
#define TIOCSLCKTRMIOS 0x548c
|
|
#define TIOCSERGSTRUCT 0x548d /* For debugging only */
|
|
#define TIOCSERGETLSR 0x548e /* Get line status register */
|
|
#define TIOCSERGETMULTI 0x548f /* Get multiport config */
|
|
#define TIOCSERSETMULTI 0x5490 /* Set multiport config */
|
|
#define TIOCMIWAIT 0x5491 /* wait for a change on serial input line(s) */
|
|
#define TIOCGICOUNT 0x5492 /* read serial port inline interrupt counts */
|
|
|
|
#endif /* __ASM_IOCTLS_H */
|