xref: /plan9/sys/include/ape/termios.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier #pragma lib "/$M/lib/ape/libap.a"
23e12c5d1SDavid du Colombier /* input modes */
33e12c5d1SDavid du Colombier #define BRKINT	0x001
43e12c5d1SDavid du Colombier #define ICRNL	0x002
53e12c5d1SDavid du Colombier #define IGNBRK	0x004
63e12c5d1SDavid du Colombier #define IGNCR	0x008
73e12c5d1SDavid du Colombier #define IGNPAR	0x010
83e12c5d1SDavid du Colombier #define INLCR	0x020
93e12c5d1SDavid du Colombier #define INPCK	0x040
103e12c5d1SDavid du Colombier #define ISTRIP	0x080
113e12c5d1SDavid du Colombier #define IXOFF	0x100
123e12c5d1SDavid du Colombier #define IXON	0x200
133e12c5d1SDavid du Colombier #define PARMRK	0x400
143e12c5d1SDavid du Colombier 
15*219b2ee8SDavid du Colombier /* output modes: ONLCR, TAB3 are an extension to POSIX! */
16*219b2ee8SDavid du Colombier #define	OPOST	0000001
17*219b2ee8SDavid du Colombier #define	OLCUC	0000002
18*219b2ee8SDavid du Colombier #define	ONLCR	0000004
19*219b2ee8SDavid du Colombier #define	OCRNL	0000010
20*219b2ee8SDavid du Colombier #define	ONOCR	0000020
21*219b2ee8SDavid du Colombier #define	ONLRET	0000040
22*219b2ee8SDavid du Colombier #define	OFILL	0000100
23*219b2ee8SDavid du Colombier #define	OFDEL	0000200
24*219b2ee8SDavid du Colombier #define	NLDLY	0000400
25*219b2ee8SDavid du Colombier #define	NL0	0
26*219b2ee8SDavid du Colombier #define	NL1	0000400
27*219b2ee8SDavid du Colombier #define	CRDLY	0003000
28*219b2ee8SDavid du Colombier #define	CR0	0
29*219b2ee8SDavid du Colombier #define	CR1	0001000
30*219b2ee8SDavid du Colombier #define	CR2	0002000
31*219b2ee8SDavid du Colombier #define	CR3	0003000
32*219b2ee8SDavid du Colombier #define	TABDLY	0014000
33*219b2ee8SDavid du Colombier #define	TAB0	0
34*219b2ee8SDavid du Colombier #define	TAB1	0004000
35*219b2ee8SDavid du Colombier #define	TAB2	0010000
36*219b2ee8SDavid du Colombier #define	TAB3	0014000
37*219b2ee8SDavid du Colombier #define	BSDLY	0020000
38*219b2ee8SDavid du Colombier #define	BS0	0
39*219b2ee8SDavid du Colombier #define	BS1	0020000
40*219b2ee8SDavid du Colombier #define	VTDLY	0040000
41*219b2ee8SDavid du Colombier #define	VT0	0
42*219b2ee8SDavid du Colombier #define	VT1	0040000
43*219b2ee8SDavid du Colombier #define	FFDLY	0100000
44*219b2ee8SDavid du Colombier #define	FF0	0
45*219b2ee8SDavid du Colombier #define	FF1	0100000
463e12c5d1SDavid du Colombier 
473e12c5d1SDavid du Colombier /* control modes */
483e12c5d1SDavid du Colombier #define CLOCAL	0x001
493e12c5d1SDavid du Colombier #define CREAD	0x002
503e12c5d1SDavid du Colombier #define CSIZE	0x01C
513e12c5d1SDavid du Colombier #define CS5	0x004
523e12c5d1SDavid du Colombier #define CS6	0x008
533e12c5d1SDavid du Colombier #define CS7	0x00C
543e12c5d1SDavid du Colombier #define CS8	0x010
553e12c5d1SDavid du Colombier #define CSTOPB	0x020
563e12c5d1SDavid du Colombier #define HUPCL	0x040
573e12c5d1SDavid du Colombier #define PARENB	0x080
583e12c5d1SDavid du Colombier #define PARODD	0x100
593e12c5d1SDavid du Colombier 
603e12c5d1SDavid du Colombier /* local modes */
613e12c5d1SDavid du Colombier #define ECHO	0x001
623e12c5d1SDavid du Colombier #define ECHOE	0x002
633e12c5d1SDavid du Colombier #define ECHOK	0x004
643e12c5d1SDavid du Colombier #define ECHONL	0x008
653e12c5d1SDavid du Colombier #define ICANON	0x010
663e12c5d1SDavid du Colombier #define IEXTEN	0x020
673e12c5d1SDavid du Colombier #define ISIG	0x040
683e12c5d1SDavid du Colombier #define NOFLSH	0x080
693e12c5d1SDavid du Colombier #define TOSTOP	0x100
703e12c5d1SDavid du Colombier 
713e12c5d1SDavid du Colombier /* control characters */
723e12c5d1SDavid du Colombier #define VEOF	0
733e12c5d1SDavid du Colombier #define VEOL	1
743e12c5d1SDavid du Colombier #define VERASE	2
753e12c5d1SDavid du Colombier #define VINTR	3
763e12c5d1SDavid du Colombier #define VKILL	4
773e12c5d1SDavid du Colombier #define VMIN	5
783e12c5d1SDavid du Colombier #define VQUIT	6
793e12c5d1SDavid du Colombier #define VSUSP	7
803e12c5d1SDavid du Colombier #define VTIME	8
813e12c5d1SDavid du Colombier #define VSTART	9
823e12c5d1SDavid du Colombier #define VSTOP	10
833e12c5d1SDavid du Colombier #define NCCS	11
843e12c5d1SDavid du Colombier 
853e12c5d1SDavid du Colombier /* baud rates */
863e12c5d1SDavid du Colombier #define B0	0
873e12c5d1SDavid du Colombier #define B50	1
883e12c5d1SDavid du Colombier #define B75	2
893e12c5d1SDavid du Colombier #define B110	3
903e12c5d1SDavid du Colombier #define B134	4
913e12c5d1SDavid du Colombier #define B150	5
923e12c5d1SDavid du Colombier #define B200	6
933e12c5d1SDavid du Colombier #define B300	7
943e12c5d1SDavid du Colombier #define B600	8
953e12c5d1SDavid du Colombier #define B1200	9
963e12c5d1SDavid du Colombier #define B1800	10
973e12c5d1SDavid du Colombier #define B2400	11
983e12c5d1SDavid du Colombier #define B4800	12
993e12c5d1SDavid du Colombier #define B9600	13
1003e12c5d1SDavid du Colombier #define B19200	14
1013e12c5d1SDavid du Colombier #define B38400	15
1023e12c5d1SDavid du Colombier 
1033e12c5d1SDavid du Colombier /* optional actions for tcsetattr */
1043e12c5d1SDavid du Colombier #define TCSANOW	  1
1053e12c5d1SDavid du Colombier #define TCSADRAIN 2
1063e12c5d1SDavid du Colombier #define TCSAFLUSH 3
1073e12c5d1SDavid du Colombier 
1083e12c5d1SDavid du Colombier typedef unsigned long tcflag_t;
1093e12c5d1SDavid du Colombier typedef unsigned long speed_t;
1103e12c5d1SDavid du Colombier typedef unsigned char cc_t;
1113e12c5d1SDavid du Colombier 
1123e12c5d1SDavid du Colombier struct termios {
1133e12c5d1SDavid du Colombier 	tcflag_t	c_iflag;	/* input modes */
1143e12c5d1SDavid du Colombier 	tcflag_t	c_oflag;	/* output modes */
1153e12c5d1SDavid du Colombier 	tcflag_t	c_cflag;	/* control modes */
1163e12c5d1SDavid du Colombier 	tcflag_t	c_lflag;	/* local modes */
1173e12c5d1SDavid du Colombier 	cc_t		c_cc[NCCS];	/* control characters */
1183e12c5d1SDavid du Colombier };
1193e12c5d1SDavid du Colombier 
1203e12c5d1SDavid du Colombier extern speed_t cfgetospeed(const struct termios *);
1213e12c5d1SDavid du Colombier extern int cfsetospeed(struct termios *, speed_t);
1223e12c5d1SDavid du Colombier extern speed_t cfgetispeed(const struct termios *);
1233e12c5d1SDavid du Colombier extern int cfsetispeed(struct termios *, speed_t);
1243e12c5d1SDavid du Colombier extern int tcgetattr(int, struct termios *);
1253e12c5d1SDavid du Colombier extern int tcsetattr(int, int, const struct termios *);
126*219b2ee8SDavid du Colombier #ifdef __TYPES_H
127*219b2ee8SDavid du Colombier extern pid_t tcgetpgrp(int);
128*219b2ee8SDavid du Colombier extern int tcsetpgrp(int, pid_t);
129*219b2ee8SDavid du Colombier #endif
1303e12c5d1SDavid du Colombier extern int tcdrain(int);
1313e12c5d1SDavid du Colombier extern int tcflush(int, int);
1323e12c5d1SDavid du Colombier extern int tcflow(int, int);
133