xref: /freebsd/sys/sys/_termios.h (revision aa0a1e58)
1 /*-
2  * Copyright (c) 1988, 1989, 1993, 1994
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 4. Neither the name of the University nor the names of its contributors
14  *    may be used to endorse or promote products derived from this software
15  *    without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  *	@(#)termios.h	8.3 (Berkeley) 3/28/94
30  * $FreeBSD$
31  */
32 
33 #ifndef _SYS__TERMIOS_H_
34 #define	_SYS__TERMIOS_H_
35 
36 /*
37  * Special Control Characters
38  *
39  * Index into c_cc[] character array.
40  *
41  *	Name	     Subscript	Enabled by
42  */
43 #define	VEOF		0	/* ICANON */
44 #define	VEOL		1	/* ICANON */
45 #ifndef _POSIX_SOURCE
46 #define	VEOL2		2	/* ICANON together with IEXTEN */
47 #endif
48 #define	VERASE		3	/* ICANON */
49 #ifndef _POSIX_SOURCE
50 #define	VWERASE 	4	/* ICANON together with IEXTEN */
51 #endif
52 #define	VKILL		5	/* ICANON */
53 #ifndef _POSIX_SOURCE
54 #define	VREPRINT 	6	/* ICANON together with IEXTEN */
55 #define	VERASE2 	7	/* ICANON */
56 #endif
57 /*			7	   ex-spare 1 */
58 #define	VINTR		8	/* ISIG */
59 #define	VQUIT		9	/* ISIG */
60 #define	VSUSP		10	/* ISIG */
61 #ifndef _POSIX_SOURCE
62 #define	VDSUSP		11	/* ISIG together with IEXTEN */
63 #endif
64 #define	VSTART		12	/* IXON, IXOFF */
65 #define	VSTOP		13	/* IXON, IXOFF */
66 #ifndef _POSIX_SOURCE
67 #define	VLNEXT		14	/* IEXTEN */
68 #define	VDISCARD	15	/* IEXTEN */
69 #endif
70 #define	VMIN		16	/* !ICANON */
71 #define	VTIME		17	/* !ICANON */
72 #ifndef _POSIX_SOURCE
73 #define	VSTATUS		18	/* ICANON together with IEXTEN */
74 /*			19	   spare 2 */
75 #endif
76 #define	NCCS		20
77 
78 #define	_POSIX_VDISABLE	0xff
79 
80 /*
81  * Input flags - software input processing
82  */
83 #define	IGNBRK		0x00000001	/* ignore BREAK condition */
84 #define	BRKINT		0x00000002	/* map BREAK to SIGINTR */
85 #define	IGNPAR		0x00000004	/* ignore (discard) parity errors */
86 #define	PARMRK		0x00000008	/* mark parity and framing errors */
87 #define	INPCK		0x00000010	/* enable checking of parity errors */
88 #define	ISTRIP		0x00000020	/* strip 8th bit off chars */
89 #define	INLCR		0x00000040	/* map NL into CR */
90 #define	IGNCR		0x00000080	/* ignore CR */
91 #define	ICRNL		0x00000100	/* map CR to NL (ala CRMOD) */
92 #define	IXON		0x00000200	/* enable output flow control */
93 #define	IXOFF		0x00000400	/* enable input flow control */
94 #ifndef _POSIX_SOURCE
95 #define	IXANY		0x00000800	/* any char will restart after stop */
96 #define	IMAXBEL		0x00002000	/* ring bell on input queue full */
97 #endif  /*_POSIX_SOURCE */
98 
99 /*
100  * Output flags - software output processing
101  */
102 #define	OPOST		0x00000001	/* enable following output processing */
103 #ifndef _POSIX_SOURCE
104 #define	ONLCR		0x00000002	/* map NL to CR-NL (ala CRMOD) */
105 #define	TABDLY		0x00000004	/* tab delay mask */
106 #define	    TAB0	    0x00000000	    /* no tab delay and expansion */
107 #define	    TAB3	    0x00000004	    /* expand tabs to spaces */
108 #define	ONOEOT		0x00000008	/* discard EOT's (^D) on output) */
109 #define	OCRNL		0x00000010	/* map CR to NL on output */
110 #define	ONOCR		0x00000020	/* no CR output at column 0 */
111 #define	ONLRET		0x00000040	/* NL performs CR function */
112 #endif  /*_POSIX_SOURCE */
113 
114 /*
115  * Control flags - hardware control of terminal
116  */
117 #ifndef _POSIX_SOURCE
118 #define	CIGNORE		0x00000001	/* ignore control flags */
119 #endif
120 #define	CSIZE		0x00000300	/* character size mask */
121 #define	    CS5		    0x00000000	    /* 5 bits (pseudo) */
122 #define	    CS6		    0x00000100	    /* 6 bits */
123 #define	    CS7		    0x00000200	    /* 7 bits */
124 #define	    CS8		    0x00000300	    /* 8 bits */
125 #define	CSTOPB		0x00000400	/* send 2 stop bits */
126 #define	CREAD		0x00000800	/* enable receiver */
127 #define	PARENB		0x00001000	/* parity enable */
128 #define	PARODD		0x00002000	/* odd parity, else even */
129 #define	HUPCL		0x00004000	/* hang up on last close */
130 #define	CLOCAL		0x00008000	/* ignore modem status lines */
131 #ifndef _POSIX_SOURCE
132 #define	CCTS_OFLOW	0x00010000	/* CTS flow control of output */
133 #define	CRTSCTS		(CCTS_OFLOW | CRTS_IFLOW)
134 #define	CRTS_IFLOW	0x00020000	/* RTS flow control of input */
135 #define	CDTR_IFLOW	0x00040000	/* DTR flow control of input */
136 #define	CDSR_OFLOW	0x00080000	/* DSR flow control of output */
137 #define	CCAR_OFLOW	0x00100000	/* DCD flow control of output */
138 #endif
139 
140 
141 /*
142  * "Local" flags - dumping ground for other state
143  *
144  * Warning: some flags in this structure begin with
145  * the letter "I" and look like they belong in the
146  * input flag.
147  */
148 
149 #ifndef _POSIX_SOURCE
150 #define	ECHOKE		0x00000001	/* visual erase for line kill */
151 #endif  /*_POSIX_SOURCE */
152 #define	ECHOE		0x00000002	/* visually erase chars */
153 #define	ECHOK		0x00000004	/* echo NL after line kill */
154 #define	ECHO		0x00000008	/* enable echoing */
155 #define	ECHONL		0x00000010	/* echo NL even if ECHO is off */
156 #ifndef _POSIX_SOURCE
157 #define	ECHOPRT		0x00000020	/* visual erase mode for hardcopy */
158 #define	ECHOCTL  	0x00000040	/* echo control chars as ^(Char) */
159 #endif  /*_POSIX_SOURCE */
160 #define	ISIG		0x00000080	/* enable signals INTR, QUIT, [D]SUSP */
161 #define	ICANON		0x00000100	/* canonicalize input lines */
162 #ifndef _POSIX_SOURCE
163 #define	ALTWERASE	0x00000200	/* use alternate WERASE algorithm */
164 #endif  /*_POSIX_SOURCE */
165 #define	IEXTEN		0x00000400	/* enable DISCARD and LNEXT */
166 #define	EXTPROC         0x00000800      /* external processing */
167 #define	TOSTOP		0x00400000	/* stop background jobs from output */
168 #ifndef _POSIX_SOURCE
169 #define	FLUSHO		0x00800000	/* output being flushed (state) */
170 #define	NOKERNINFO	0x02000000	/* no kernel output from VSTATUS */
171 #define	PENDIN		0x20000000	/* XXX retype pending input (state) */
172 #endif  /*_POSIX_SOURCE */
173 #define	NOFLSH		0x80000000	/* don't flush after interrupt */
174 
175 /*
176  * Standard speeds
177  */
178 #define	B0	0
179 #define	B50	50
180 #define	B75	75
181 #define	B110	110
182 #define	B134	134
183 #define	B150	150
184 #define	B200	200
185 #define	B300	300
186 #define	B600	600
187 #define	B1200	1200
188 #define	B1800	1800
189 #define	B2400	2400
190 #define	B4800	4800
191 #define	B9600	9600
192 #define	B19200	19200
193 #define	B38400	38400
194 #ifndef _POSIX_SOURCE
195 #define	B7200	7200
196 #define	B14400	14400
197 #define	B28800	28800
198 #define	B57600	57600
199 #define	B76800	76800
200 #define	B115200	115200
201 #define	B230400	230400
202 #define	B460800	460800
203 #define	B921600	921600
204 #define	EXTA	19200
205 #define	EXTB	38400
206 #endif  /* !_POSIX_SOURCE */
207 
208 typedef unsigned int	tcflag_t;
209 typedef unsigned char	cc_t;
210 typedef unsigned int	speed_t;
211 
212 struct termios {
213 	tcflag_t	c_iflag;	/* input flags */
214 	tcflag_t	c_oflag;	/* output flags */
215 	tcflag_t	c_cflag;	/* control flags */
216 	tcflag_t	c_lflag;	/* local flags */
217 	cc_t		c_cc[NCCS];	/* control chars */
218 	speed_t		c_ispeed;	/* input speed */
219 	speed_t		c_ospeed;	/* output speed */
220 };
221 
222 #endif /* !_SYS__TERMIOS_H_ */
223