]>
Commit | Line | Data |
---|---|---|
28f540f4 | 1 | /* termios type and macro definitions. 4.4 BSD/generic GNU version. |
54d79e99 UD |
2 | Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc. |
3 | This file is part of the GNU C Library. | |
28f540f4 | 4 | |
54d79e99 UD |
5 | The GNU C Library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public License as | |
7 | published by the Free Software Foundation; either version 2 of the | |
8 | 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 | |
13 | Library General Public License for more details. | |
28f540f4 | 14 | |
54d79e99 UD |
15 | You should have received a copy of the GNU Library General Public |
16 | License along with the GNU C Library; see the file COPYING.LIB. If not, | |
17 | write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
18 | Boston, MA 02111-1307, USA. */ | |
28f540f4 | 19 | |
18c75117 TBB |
20 | /* These macros are also defined in some ioctls.h files (with numerically |
21 | identical values), but this serves to shut up cpp's complaining. */ | |
22 | #ifdef __USE_BSD | |
23 | ||
24 | #ifdef MDMBUF | |
25 | #undef MDMBUF | |
26 | #endif | |
27 | #ifdef FLUSHO | |
28 | #undef FLUSHO | |
29 | #endif | |
30 | #ifdef PENDIN | |
31 | #undef PENDIN | |
32 | #endif | |
33 | ||
34 | #endif /* __USE_BSD */ | |
35 | ||
36 | #ifdef ECHO | |
37 | #undef ECHO | |
38 | #endif | |
39 | #ifdef TOSTOP | |
40 | #undef TOSTOP | |
41 | #endif | |
42 | #ifdef NOFLSH | |
43 | #undef NOFLSH | |
44 | #endif | |
45 | ||
46 | ||
28f540f4 RM |
47 | /* These definitions match those used by the 4.4 BSD kernel. |
48 | If the operating system has termios system calls or ioctls that | |
49 | correctly implement the POSIX.1 behavior, there should be a | |
50 | system-dependent version of this file that defines `struct termios', | |
51 | `tcflag_t', `cc_t', `speed_t' and the `TC*' constants appropriately. */ | |
52 | ||
53 | /* Type of terminal control flag masks. */ | |
54 | typedef unsigned long int tcflag_t; | |
55 | ||
56 | /* Type of control characters. */ | |
57 | typedef unsigned char cc_t; | |
58 | ||
59 | /* Type of baud rate specifiers. */ | |
60 | typedef long int speed_t; | |
61 | ||
62 | /* Terminal control structure. */ | |
63 | struct termios | |
64 | { | |
65 | /* Input modes. */ | |
66 | tcflag_t c_iflag; | |
67 | #define IGNBRK (1 << 0) /* Ignore break condition. */ | |
68 | #define BRKINT (1 << 1) /* Signal interrupt on break. */ | |
69 | #define IGNPAR (1 << 2) /* Ignore characters with parity errors. */ | |
70 | #define PARMRK (1 << 3) /* Mark parity and framing errors. */ | |
71 | #define INPCK (1 << 4) /* Enable input parity check. */ | |
72 | #define ISTRIP (1 << 5) /* Strip 8th bit off characters. */ | |
73 | #define INLCR (1 << 6) /* Map NL to CR on input. */ | |
74 | #define IGNCR (1 << 7) /* Ignore CR. */ | |
75 | #define ICRNL (1 << 8) /* Map CR to NL on input. */ | |
76 | #define IXON (1 << 9) /* Enable start/stop output control. */ | |
77 | #define IXOFF (1 << 10) /* Enable start/stop input control. */ | |
78 | #ifdef __USE_BSD | |
79 | #define IXANY (1 << 11) /* Any character will restart after stop. */ | |
80 | #define IMAXBEL (1 << 13) /* Ring bell when input queue is full. */ | |
81 | #endif | |
82 | ||
83 | /* Output modes. */ | |
84 | tcflag_t c_oflag; | |
85 | #define OPOST (1 << 0) /* Perform output processing. */ | |
86 | #ifdef __USE_BSD | |
87 | #define ONLCR (1 << 1) /* Map NL to CR-NL on output. */ | |
88 | #define OXTABS (1 << 2) /* Expand tabs to spaces. */ | |
89 | #define ONOEOT (1 << 8) /* Discard EOT (^D) on output. */ | |
90 | #endif | |
91 | ||
92 | /* Control modes. */ | |
93 | tcflag_t c_cflag; | |
94 | #ifdef __USE_BSD | |
95 | #define CIGNORE (1 << 0) /* Ignore these control flags. */ | |
96 | #endif | |
97 | #define CSIZE (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask). */ | |
98 | #define CS5 0 /* 5 bits per byte. */ | |
99 | #define CS6 (1 << 8) /* 6 bits per byte. */ | |
100 | #define CS7 (1 << 9) /* 7 bits per byte. */ | |
101 | #define CS8 (CS6|CS7) /* 8 bits per byte. */ | |
102 | #define CSTOPB (1 << 10) /* Two stop bits instead of one. */ | |
103 | #define CREAD (1 << 11) /* Enable receiver. */ | |
104 | #define PARENB (1 << 12) /* Parity enable. */ | |
105 | #define PARODD (1 << 13) /* Odd parity instead of even. */ | |
106 | #define HUPCL (1 << 14) /* Hang up on last close. */ | |
107 | #define CLOCAL (1 << 15) /* Ignore modem status lines. */ | |
108 | #ifdef __USE_BSD | |
109 | #define CCTS_OFLOW (1 << 16) /* CTS flow control of output. */ | |
110 | #define CRTS_IFLOW (1 << 17) /* RTS flow control of input. */ | |
111 | #define MDMBUF (1 << 20) /* Carrier flow control of output. */ | |
112 | #endif | |
113 | ||
114 | /* Local modes. */ | |
115 | tcflag_t c_lflag; | |
116 | #ifdef __USE_BSD | |
117 | #define ECHOKE (1 << 0) /* Visual erase for KILL. */ | |
118 | #endif | |
119 | #define _ECHOE (1 << 1) /* Visual erase for ERASE. */ | |
120 | #define ECHOE _ECHOE | |
121 | #define _ECHOK (1 << 2) /* Echo NL after KILL. */ | |
122 | #define ECHOK _ECHOK | |
123 | #define _ECHO (1 << 3) /* Enable echo. */ | |
124 | #define ECHO _ECHO | |
125 | #define _ECHONL (1 << 4) /* Echo NL even if ECHO is off. */ | |
126 | #define ECHONL _ECHONL | |
127 | #ifdef __USE_BSD | |
128 | #define ECHOPRT (1 << 5) /* Hardcopy visual erase. */ | |
129 | #define ECHOCTL (1 << 6) /* Echo control characters as ^X. */ | |
130 | #endif | |
131 | #define _ISIG (1 << 7) /* Enable signals. */ | |
132 | #define ISIG _ISIG | |
133 | #define _ICANON (1 << 8) /* Do erase and kill processing. */ | |
134 | #define ICANON _ICANON | |
135 | #ifdef __USE_BSD | |
136 | #define ALTWERASE (1 << 9) /* Alternate WERASE algorithm. */ | |
137 | #endif | |
138 | #define _IEXTEN (1 << 10) /* Enable DISCARD and LNEXT. */ | |
139 | #define IEXTEN _IEXTEN | |
140 | #define EXTPROC (1 << 11) /* External processing. */ | |
141 | #define _TOSTOP (1 << 22) /* Send SIGTTOU for background output. */ | |
142 | #define TOSTOP _TOSTOP | |
143 | #ifdef __USE_BSD | |
144 | #define FLUSHO (1 << 23) /* Output being flushed (state). */ | |
145 | #define NOKERNINFO (1 << 25) /* Disable VSTATUS. */ | |
146 | #define PENDIN (1 << 29) /* Retype pending input (state). */ | |
147 | #endif | |
148 | #define _NOFLSH (1 << 31) /* Disable flush after interrupt. */ | |
149 | #define NOFLSH _NOFLSH | |
150 | ||
151 | /* Control characters. */ | |
152 | #define VEOF 0 /* End-of-file character [ICANON]. */ | |
153 | #define VEOL 1 /* End-of-line character [ICANON]. */ | |
154 | #ifdef __USE_BSD | |
155 | #define VEOL2 2 /* Second EOL character [ICANON]. */ | |
156 | #endif | |
157 | #define VERASE 3 /* Erase character [ICANON]. */ | |
158 | #ifdef __USE_BSD | |
159 | #define VWERASE 4 /* Word-erase character [ICANON]. */ | |
160 | #endif | |
161 | #define VKILL 5 /* Kill-line character [ICANON]. */ | |
162 | #ifdef __USE_BSD | |
163 | #define VREPRINT 6 /* Reprint-line character [ICANON]. */ | |
164 | #endif | |
165 | #define VINTR 8 /* Interrupt character [ISIG]. */ | |
166 | #define VQUIT 9 /* Quit character [ISIG]. */ | |
167 | #define VSUSP 10 /* Suspend character [ISIG]. */ | |
168 | #ifdef __USE_BSD | |
169 | #define VDSUSP 11 /* Delayed suspend character [ISIG]. */ | |
170 | #endif | |
171 | #define VSTART 12 /* Start (X-ON) character [IXON, IXOFF]. */ | |
172 | #define VSTOP 13 /* Stop (X-OFF) character [IXON, IXOFF]. */ | |
173 | #ifdef __USE_BSD | |
174 | #define VLNEXT 14 /* Literal-next character [IEXTEN]. */ | |
175 | #define VDISCARD 15 /* Discard character [IEXTEN]. */ | |
176 | #endif | |
177 | #define VMIN 16 /* Minimum number of bytes read at once [!ICANON]. */ | |
178 | #define VTIME 17 /* Time-out value (tenths of a second) [!ICANON]. */ | |
179 | #ifdef __USE_BSD | |
180 | #define VSTATUS 18 /* Status character [ICANON]. */ | |
181 | #endif | |
182 | #define NCCS 20 /* Value duplicated in <hurd/tioctl.defs>. */ | |
183 | cc_t c_cc[NCCS]; | |
184 | ||
185 | /* Input and output baud rates. */ | |
186 | speed_t __ispeed, __ospeed; | |
187 | #define B0 0 /* Hang up. */ | |
188 | #define B50 50 /* 50 baud. */ | |
189 | #define B75 75 /* 75 baud. */ | |
190 | #define B110 110 /* 110 baud. */ | |
191 | #define B134 134 /* 134.5 baud. */ | |
192 | #define B150 150 /* 150 baud. */ | |
193 | #define B200 200 /* 200 baud. */ | |
194 | #define B300 300 /* 300 baud. */ | |
195 | #define B600 600 /* 600 baud. */ | |
196 | #define B1200 1200 /* 1200 baud. */ | |
197 | #define B1800 1800 /* 1800 baud. */ | |
198 | #define B2400 2400 /* 2400 baud. */ | |
199 | #define B4800 4800 /* 4800 baud. */ | |
200 | #define B9600 9600 /* 9600 baud. */ | |
201 | #define B19200 19200 /* 19200 baud. */ | |
202 | #define B38400 38400 /* 38400 baud. */ | |
203 | #ifdef __USE_BSD | |
204 | #define EXTA 19200 | |
205 | #define EXTB 38400 | |
206 | #endif | |
207 | }; | |
208 | ||
209 | #define _IOT_termios /* Hurd ioctl type field. */ \ | |
210 | _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2) | |
211 | ||
212 | /* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'. */ | |
213 | #define TCSANOW 0 /* Change immediately. */ | |
214 | #define TCSADRAIN 1 /* Change when pending output is written. */ | |
215 | #define TCSAFLUSH 2 /* Flush pending input before changing. */ | |
216 | #ifdef __USE_BSD | |
217 | #define TCSASOFT 0x10 /* Flag: Don't alter hardware state. */ | |
218 | #endif | |
219 | ||
220 | /* Values for the QUEUE_SELECTOR argument to `tcflush'. */ | |
221 | #define TCIFLUSH 1 /* Discard data received but not yet read. */ | |
222 | #define TCOFLUSH 2 /* Discard data written but not yet sent. */ | |
223 | #define TCIOFLUSH 3 /* Discard all pending data. */ | |
224 | ||
225 | /* Values for the ACTION argument to `tcflow'. */ | |
226 | #define TCOOFF 1 /* Suspend output. */ | |
227 | #define TCOON 2 /* Restart suspended output. */ | |
228 | #define TCIOFF 3 /* Send a STOP character. */ | |
229 | #define TCION 4 /* Send a START character. */ |