]>
Commit | Line | Data |
---|---|---|
28f540f4 | 1 | /* termios type and macro definitions. 4.4 BSD/generic GNU version. |
04277e02 | 2 | Copyright (C) 1993-2019 Free Software Foundation, Inc. |
54d79e99 | 3 | This file is part of the GNU C Library. |
28f540f4 | 4 | |
54d79e99 | 5 | The GNU C Library is free software; you can redistribute it and/or |
41bdb6e2 AJ |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License as published by the Free Software Foundation; either | |
8 | version 2.1 of the License, or (at your option) any later version. | |
28f540f4 | 9 | |
54d79e99 UD |
10 | The GNU C Library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 13 | Lesser General Public License for more details. |
28f540f4 | 14 | |
41bdb6e2 | 15 | You should have received a copy of the GNU Lesser General Public |
59ba27a6 | 16 | License along with the GNU C Library; if not, see |
5a82c748 | 17 | <https://www.gnu.org/licenses/>. */ |
28f540f4 | 18 | |
f4017d20 UD |
19 | #ifndef _TERMIOS_H |
20 | # error "Never include <bits/termios.h> directly; use <termios.h> instead." | |
21 | #endif | |
22 | ||
5107cf1d UD |
23 | /* These macros are also defined in some <bits/ioctls.h> files (with |
24 | numerically identical values), but this serves to shut up cpp's | |
25 | complaining. */ | |
45d5ac9c RM |
26 | #if defined __USE_MISC || defined __USE_XOPEN |
27 | ||
28 | # ifdef NL0 | |
29 | # undef NL0 | |
30 | # endif | |
31 | # ifdef NL1 | |
32 | # undef NL1 | |
33 | # endif | |
34 | # ifdef TAB0 | |
35 | # undef TAB0 | |
36 | # endif | |
37 | # ifdef TAB1 | |
38 | # undef TAB1 | |
39 | # endif | |
40 | # ifdef TAB2 | |
41 | # undef TAB2 | |
42 | # endif | |
43 | # ifdef CR0 | |
44 | # undef CR0 | |
45 | # endif | |
46 | # ifdef CR1 | |
47 | # undef CR1 | |
48 | # endif | |
49 | # ifdef CR2 | |
50 | # undef CR2 | |
51 | # endif | |
52 | # ifdef CR3 | |
53 | # undef CR3 | |
54 | # endif | |
55 | # ifdef FF0 | |
56 | # undef FF0 | |
57 | # endif | |
58 | # ifdef FF1 | |
59 | # undef FF1 | |
60 | # endif | |
61 | # ifdef BS0 | |
62 | # undef BS0 | |
63 | # endif | |
64 | # ifdef BS1 | |
65 | # undef BS1 | |
66 | # endif | |
67 | ||
68 | #endif /* __USE_MISC || __USE_XOPEN */ | |
69 | ||
498afc54 | 70 | #ifdef __USE_MISC |
18c75117 | 71 | |
f4017d20 UD |
72 | # ifdef MDMBUF |
73 | # undef MDMBUF | |
74 | # endif | |
75 | # ifdef FLUSHO | |
76 | # undef FLUSHO | |
77 | # endif | |
78 | # ifdef PENDIN | |
79 | # undef PENDIN | |
80 | # endif | |
18c75117 | 81 | |
498afc54 | 82 | #endif /* __USE_MISC */ |
18c75117 TBB |
83 | |
84 | #ifdef ECHO | |
f4017d20 | 85 | # undef ECHO |
18c75117 TBB |
86 | #endif |
87 | #ifdef TOSTOP | |
f4017d20 | 88 | # undef TOSTOP |
18c75117 TBB |
89 | #endif |
90 | #ifdef NOFLSH | |
f4017d20 | 91 | # undef NOFLSH |
18c75117 TBB |
92 | #endif |
93 | ||
94 | ||
28f540f4 RM |
95 | /* These definitions match those used by the 4.4 BSD kernel. |
96 | If the operating system has termios system calls or ioctls that | |
97 | correctly implement the POSIX.1 behavior, there should be a | |
98 | system-dependent version of this file that defines `struct termios', | |
99 | `tcflag_t', `cc_t', `speed_t' and the `TC*' constants appropriately. */ | |
100 | ||
101 | /* Type of terminal control flag masks. */ | |
102 | typedef unsigned long int tcflag_t; | |
103 | ||
104 | /* Type of control characters. */ | |
105 | typedef unsigned char cc_t; | |
106 | ||
107 | /* Type of baud rate specifiers. */ | |
108 | typedef long int speed_t; | |
109 | ||
110 | /* Terminal control structure. */ | |
111 | struct termios | |
112 | { | |
113 | /* Input modes. */ | |
114 | tcflag_t c_iflag; | |
115 | #define IGNBRK (1 << 0) /* Ignore break condition. */ | |
116 | #define BRKINT (1 << 1) /* Signal interrupt on break. */ | |
117 | #define IGNPAR (1 << 2) /* Ignore characters with parity errors. */ | |
118 | #define PARMRK (1 << 3) /* Mark parity and framing errors. */ | |
119 | #define INPCK (1 << 4) /* Enable input parity check. */ | |
120 | #define ISTRIP (1 << 5) /* Strip 8th bit off characters. */ | |
121 | #define INLCR (1 << 6) /* Map NL to CR on input. */ | |
122 | #define IGNCR (1 << 7) /* Ignore CR. */ | |
123 | #define ICRNL (1 << 8) /* Map CR to NL on input. */ | |
124 | #define IXON (1 << 9) /* Enable start/stop output control. */ | |
125 | #define IXOFF (1 << 10) /* Enable start/stop input control. */ | |
a564872d | 126 | #if defined __USE_MISC || defined __USE_XOPEN || defined __USE_XOPEN2K8 |
5f0b70fe | 127 | # define IXANY (1 << 11) /* Any character will restart after stop. */ |
0d180406 | 128 | #endif |
498afc54 | 129 | #ifdef __USE_MISC |
5f0b70fe RM |
130 | # define IMAXBEL (1 << 13) /* Ring bell when input queue is full. */ |
131 | #endif | |
a564872d | 132 | #if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K) |
5f0b70fe | 133 | # define IUCLC (1 << 14) /* Translate upper case input to lower case. */ |
28f540f4 RM |
134 | #endif |
135 | ||
136 | /* Output modes. */ | |
137 | tcflag_t c_oflag; | |
138 | #define OPOST (1 << 0) /* Perform output processing. */ | |
498afc54 | 139 | #if defined __USE_MISC || defined __USE_XOPEN |
f4017d20 | 140 | # define ONLCR (1 << 1) /* Map NL to CR-NL on output. */ |
844625b5 | 141 | #endif |
498afc54 | 142 | #ifdef __USE_MISC |
45d5ac9c | 143 | # define OXTABS TAB3 /* Expand tabs to spaces. */ |
5f0b70fe RM |
144 | # define ONOEOT (1 << 3) /* Discard EOT (^D) on output. */ |
145 | #endif | |
498afc54 | 146 | #if defined __USE_MISC || defined __USE_XOPEN |
45d5ac9c RM |
147 | # define OCRNL (1 << 4) /* Map CR to NL. */ |
148 | # define ONOCR (1 << 5) /* Discard CR's when on column 0. */ | |
149 | # define ONLRET (1 << 6) /* Move to column 0 on NL. */ | |
150 | #endif | |
151 | #if defined __USE_MISC || defined __USE_XOPEN | |
152 | # define NLDLY (3 << 8) /* NL delay. */ | |
153 | # define NL0 (0 << 8) /* NL type 0. */ | |
154 | # define NL1 (1 << 8) /* NL type 1. */ | |
2b6dbe66 | 155 | # define TABDLY (3 << 10 | 1 << 2) /* TAB delay. */ |
45d5ac9c RM |
156 | # define TAB0 (0 << 10) /* TAB delay type 0. */ |
157 | # define TAB1 (1 << 10) /* TAB delay type 1. */ | |
158 | # define TAB2 (2 << 10) /* TAB delay type 2. */ | |
159 | # define TAB3 (1 << 2) /* Expand tabs to spaces. */ | |
160 | # define CRDLY (3 << 12) /* CR delay. */ | |
161 | # define CR0 (0 << 12) /* CR delay type 0. */ | |
162 | # define CR1 (1 << 12) /* CR delay type 1. */ | |
163 | # define CR2 (2 << 12) /* CR delay type 2. */ | |
164 | # define CR3 (3 << 12) /* CR delay type 3. */ | |
165 | # define FFDLY (1 << 14) /* FF delay. */ | |
166 | # define FF0 (0 << 14) /* FF delay type 0. */ | |
167 | # define FF1 (1 << 14) /* FF delay type 1. */ | |
168 | # define BSDLY (1 << 15) /* BS delay. */ | |
169 | # define BS0 (0 << 15) /* BS delay type 0. */ | |
170 | # define BS1 (1 << 15) /* BS delay type 1. */ | |
171 | # define VTDLY (1 << 16) /* VT delay. */ | |
172 | # define VT0 (0 << 16) /* VT delay type 0. */ | |
173 | # define VT1 (1 << 16) /* VT delay type 1. */ | |
174 | #endif /* __USE_MISC || __USE_XOPEN */ | |
a564872d | 175 | #if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K) |
45d5ac9c RM |
176 | # define OLCUC (1 << 17) /* Translate lower case output to upper case */ |
177 | #endif | |
178 | #ifdef __USE_XOPEN | |
179 | # define OFILL (1 << 18) /* Send fill characters for delays. */ | |
a564872d | 180 | # define OFDEL (1 << 19) /* Fill is DEL. */ |
28f540f4 RM |
181 | #endif |
182 | ||
183 | /* Control modes. */ | |
184 | tcflag_t c_cflag; | |
498afc54 | 185 | #ifdef __USE_MISC |
f4017d20 | 186 | # define CIGNORE (1 << 0) /* Ignore these control flags. */ |
28f540f4 RM |
187 | #endif |
188 | #define CSIZE (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask). */ | |
189 | #define CS5 0 /* 5 bits per byte. */ | |
190 | #define CS6 (1 << 8) /* 6 bits per byte. */ | |
191 | #define CS7 (1 << 9) /* 7 bits per byte. */ | |
192 | #define CS8 (CS6|CS7) /* 8 bits per byte. */ | |
193 | #define CSTOPB (1 << 10) /* Two stop bits instead of one. */ | |
194 | #define CREAD (1 << 11) /* Enable receiver. */ | |
195 | #define PARENB (1 << 12) /* Parity enable. */ | |
196 | #define PARODD (1 << 13) /* Odd parity instead of even. */ | |
197 | #define HUPCL (1 << 14) /* Hang up on last close. */ | |
198 | #define CLOCAL (1 << 15) /* Ignore modem status lines. */ | |
498afc54 | 199 | #ifdef __USE_MISC |
45d5ac9c RM |
200 | # define CRTSCTS (1 << 16) /* RTS/CTS flow control. */ |
201 | # define CRTS_IFLOW CRTSCTS /* Compatibility. */ | |
202 | # define CCTS_OFLOW CRTSCTS /* Compatibility. */ | |
203 | # define CDTRCTS (1 << 17) /* DTR/CTS flow control. */ | |
204 | # define MDMBUF (1 << 20) /* DTR/DCD flow control. */ | |
205 | # define CHWFLOW (MDMBUF|CRTSCTS|CDTRCTS) /* All types of flow control. */ | |
28f540f4 RM |
206 | #endif |
207 | ||
208 | /* Local modes. */ | |
209 | tcflag_t c_lflag; | |
498afc54 | 210 | #ifdef __USE_MISC |
f4017d20 | 211 | # define ECHOKE (1 << 0) /* Visual erase for KILL. */ |
28f540f4 RM |
212 | #endif |
213 | #define _ECHOE (1 << 1) /* Visual erase for ERASE. */ | |
214 | #define ECHOE _ECHOE | |
215 | #define _ECHOK (1 << 2) /* Echo NL after KILL. */ | |
216 | #define ECHOK _ECHOK | |
217 | #define _ECHO (1 << 3) /* Enable echo. */ | |
218 | #define ECHO _ECHO | |
219 | #define _ECHONL (1 << 4) /* Echo NL even if ECHO is off. */ | |
220 | #define ECHONL _ECHONL | |
498afc54 | 221 | #ifdef __USE_MISC |
f4017d20 UD |
222 | # define ECHOPRT (1 << 5) /* Hardcopy visual erase. */ |
223 | # define ECHOCTL (1 << 6) /* Echo control characters as ^X. */ | |
28f540f4 RM |
224 | #endif |
225 | #define _ISIG (1 << 7) /* Enable signals. */ | |
226 | #define ISIG _ISIG | |
227 | #define _ICANON (1 << 8) /* Do erase and kill processing. */ | |
228 | #define ICANON _ICANON | |
498afc54 | 229 | #ifdef __USE_MISC |
f4017d20 | 230 | # define ALTWERASE (1 << 9) /* Alternate WERASE algorithm. */ |
28f540f4 RM |
231 | #endif |
232 | #define _IEXTEN (1 << 10) /* Enable DISCARD and LNEXT. */ | |
233 | #define IEXTEN _IEXTEN | |
661a7dba ST |
234 | #ifdef __USE_MISC |
235 | # define EXTPROC (1 << 11) /* External processing. */ | |
236 | #endif | |
28f540f4 RM |
237 | #define _TOSTOP (1 << 22) /* Send SIGTTOU for background output. */ |
238 | #define TOSTOP _TOSTOP | |
498afc54 | 239 | #ifdef __USE_MISC |
f4017d20 | 240 | # define FLUSHO (1 << 23) /* Output being flushed (state). */ |
a564872d ST |
241 | #endif |
242 | #if defined __USE_XOPEN && !defined __USE_XOPEN2K | |
243 | # define XCASE (1 << 24) /* Canonical upper/lower case. */ | |
244 | #endif | |
245 | #ifdef __USE_MISC | |
f4017d20 UD |
246 | # define NOKERNINFO (1 << 25) /* Disable VSTATUS. */ |
247 | # define PENDIN (1 << 29) /* Retype pending input (state). */ | |
28f540f4 RM |
248 | #endif |
249 | #define _NOFLSH (1 << 31) /* Disable flush after interrupt. */ | |
250 | #define NOFLSH _NOFLSH | |
251 | ||
252 | /* Control characters. */ | |
253 | #define VEOF 0 /* End-of-file character [ICANON]. */ | |
254 | #define VEOL 1 /* End-of-line character [ICANON]. */ | |
498afc54 | 255 | #ifdef __USE_MISC |
f4017d20 | 256 | # define VEOL2 2 /* Second EOL character [ICANON]. */ |
28f540f4 RM |
257 | #endif |
258 | #define VERASE 3 /* Erase character [ICANON]. */ | |
498afc54 | 259 | #ifdef __USE_MISC |
f4017d20 | 260 | # define VWERASE 4 /* Word-erase character [ICANON]. */ |
28f540f4 RM |
261 | #endif |
262 | #define VKILL 5 /* Kill-line character [ICANON]. */ | |
498afc54 | 263 | #ifdef __USE_MISC |
f4017d20 | 264 | # define VREPRINT 6 /* Reprint-line character [ICANON]. */ |
28f540f4 RM |
265 | #endif |
266 | #define VINTR 8 /* Interrupt character [ISIG]. */ | |
267 | #define VQUIT 9 /* Quit character [ISIG]. */ | |
268 | #define VSUSP 10 /* Suspend character [ISIG]. */ | |
498afc54 | 269 | #ifdef __USE_MISC |
f4017d20 | 270 | # define VDSUSP 11 /* Delayed suspend character [ISIG]. */ |
28f540f4 RM |
271 | #endif |
272 | #define VSTART 12 /* Start (X-ON) character [IXON, IXOFF]. */ | |
273 | #define VSTOP 13 /* Stop (X-OFF) character [IXON, IXOFF]. */ | |
498afc54 | 274 | #ifdef __USE_MISC |
f4017d20 UD |
275 | # define VLNEXT 14 /* Literal-next character [IEXTEN]. */ |
276 | # define VDISCARD 15 /* Discard character [IEXTEN]. */ | |
28f540f4 RM |
277 | #endif |
278 | #define VMIN 16 /* Minimum number of bytes read at once [!ICANON]. */ | |
279 | #define VTIME 17 /* Time-out value (tenths of a second) [!ICANON]. */ | |
498afc54 | 280 | #ifdef __USE_MISC |
f4017d20 | 281 | # define VSTATUS 18 /* Status character [ICANON]. */ |
28f540f4 RM |
282 | #endif |
283 | #define NCCS 20 /* Value duplicated in <hurd/tioctl.defs>. */ | |
284 | cc_t c_cc[NCCS]; | |
285 | ||
286 | /* Input and output baud rates. */ | |
287 | speed_t __ispeed, __ospeed; | |
288 | #define B0 0 /* Hang up. */ | |
289 | #define B50 50 /* 50 baud. */ | |
290 | #define B75 75 /* 75 baud. */ | |
291 | #define B110 110 /* 110 baud. */ | |
292 | #define B134 134 /* 134.5 baud. */ | |
293 | #define B150 150 /* 150 baud. */ | |
294 | #define B200 200 /* 200 baud. */ | |
295 | #define B300 300 /* 300 baud. */ | |
296 | #define B600 600 /* 600 baud. */ | |
297 | #define B1200 1200 /* 1200 baud. */ | |
298 | #define B1800 1800 /* 1800 baud. */ | |
299 | #define B2400 2400 /* 2400 baud. */ | |
300 | #define B4800 4800 /* 4800 baud. */ | |
301 | #define B9600 9600 /* 9600 baud. */ | |
45d5ac9c RM |
302 | #define B7200 7200 /* 7200 baud. */ |
303 | #define B14400 14400 /* 14400 baud. */ | |
28f540f4 | 304 | #define B19200 19200 /* 19200 baud. */ |
45d5ac9c | 305 | #define B28800 28800 /* 28800 baud. */ |
28f540f4 | 306 | #define B38400 38400 /* 38400 baud. */ |
15c64502 | 307 | #ifdef __USE_MISC |
f4017d20 UD |
308 | # define EXTA 19200 |
309 | # define EXTB 38400 | |
28f540f4 | 310 | #endif |
15c64502 | 311 | #define B57600 57600 |
45d5ac9c | 312 | #define B76800 76800 |
15c64502 RM |
313 | #define B115200 115200 |
314 | #define B230400 230400 | |
315 | #define B460800 460800 | |
316 | #define B500000 500000 | |
317 | #define B576000 576000 | |
318 | #define B921600 921600 | |
319 | #define B1000000 1000000 | |
320 | #define B1152000 1152000 | |
321 | #define B1500000 1500000 | |
322 | #define B2000000 2000000 | |
323 | #define B2500000 2500000 | |
324 | #define B3000000 3000000 | |
325 | #define B3500000 3500000 | |
326 | #define B4000000 4000000 | |
28f540f4 RM |
327 | }; |
328 | ||
329 | #define _IOT_termios /* Hurd ioctl type field. */ \ | |
330 | _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2) | |
331 | ||
332 | /* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'. */ | |
333 | #define TCSANOW 0 /* Change immediately. */ | |
334 | #define TCSADRAIN 1 /* Change when pending output is written. */ | |
335 | #define TCSAFLUSH 2 /* Flush pending input before changing. */ | |
498afc54 | 336 | #ifdef __USE_MISC |
f4017d20 | 337 | # define TCSASOFT 0x10 /* Flag: Don't alter hardware state. */ |
28f540f4 RM |
338 | #endif |
339 | ||
340 | /* Values for the QUEUE_SELECTOR argument to `tcflush'. */ | |
341 | #define TCIFLUSH 1 /* Discard data received but not yet read. */ | |
342 | #define TCOFLUSH 2 /* Discard data written but not yet sent. */ | |
343 | #define TCIOFLUSH 3 /* Discard all pending data. */ | |
344 | ||
345 | /* Values for the ACTION argument to `tcflow'. */ | |
346 | #define TCOOFF 1 /* Suspend output. */ | |
347 | #define TCOON 2 /* Restart suspended output. */ | |
348 | #define TCIOFF 3 /* Send a STOP character. */ | |
349 | #define TCION 4 /* Send a START character. */ |