root / lab4 / .minix-src / include / sys / termios.h @ 14
History | View | Annotate | Download (9.62 KB)
1 |
/* $NetBSD: termios.h,v 1.32 2013/07/11 16:46:06 christos Exp $ */
|
---|---|
2 |
|
3 |
/*
|
4 |
* Copyright (c) 1988, 1989, 1993, 1994
|
5 |
* The Regents of the University of California. All rights reserved.
|
6 |
*
|
7 |
* Redistribution and use in source and binary forms, with or without
|
8 |
* modification, are permitted provided that the following conditions
|
9 |
* are met:
|
10 |
* 1. Redistributions of source code must retain the above copyright
|
11 |
* notice, this list of conditions and the following disclaimer.
|
12 |
* 2. Redistributions in binary form must reproduce the above copyright
|
13 |
* notice, this list of conditions and the following disclaimer in the
|
14 |
* documentation and/or other materials provided with the distribution.
|
15 |
* 3. Neither the name of the University nor the names of its contributors
|
16 |
* may be used to endorse or promote products derived from this software
|
17 |
* without specific prior written permission.
|
18 |
*
|
19 |
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
20 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
23 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
24 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
25 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
26 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
27 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
28 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
29 |
* SUCH DAMAGE.
|
30 |
*
|
31 |
* @(#)termios.h 8.3 (Berkeley) 3/28/94
|
32 |
*/
|
33 |
|
34 |
#ifndef _SYS_TERMIOS_H_
|
35 |
#define _SYS_TERMIOS_H_
|
36 |
|
37 |
#include <sys/ansi.h> |
38 |
#include <sys/featuretest.h> |
39 |
|
40 |
/*
|
41 |
* Special Control Characters
|
42 |
*
|
43 |
* Index into c_cc[] character array.
|
44 |
*
|
45 |
* Name Subscript Enabled by
|
46 |
*/
|
47 |
#define VEOF 0 /* ICANON */ |
48 |
#define VEOL 1 /* ICANON */ |
49 |
#if defined(_NETBSD_SOURCE)
|
50 |
#define VEOL2 2 /* ICANON */ |
51 |
#endif
|
52 |
#define VERASE 3 /* ICANON */ |
53 |
#if defined(_NETBSD_SOURCE)
|
54 |
#define VWERASE 4 /* ICANON */ |
55 |
#endif
|
56 |
#define VKILL 5 /* ICANON */ |
57 |
#if defined(_NETBSD_SOURCE)
|
58 |
#define VREPRINT 6 /* ICANON */ |
59 |
#endif
|
60 |
/* 7 spare 1 */
|
61 |
#define VINTR 8 /* ISIG */ |
62 |
#define VQUIT 9 /* ISIG */ |
63 |
#define VSUSP 10 /* ISIG */ |
64 |
#if defined(_NETBSD_SOURCE)
|
65 |
#define VDSUSP 11 /* ISIG */ |
66 |
#endif
|
67 |
#define VSTART 12 /* IXON, IXOFF */ |
68 |
#define VSTOP 13 /* IXON, IXOFF */ |
69 |
#if defined(_NETBSD_SOURCE)
|
70 |
#define VLNEXT 14 /* IEXTEN */ |
71 |
#define VDISCARD 15 /* IEXTEN */ |
72 |
#endif
|
73 |
#define VMIN 16 /* !ICANON */ |
74 |
#define VTIME 17 /* !ICANON */ |
75 |
#if defined(_NETBSD_SOURCE)
|
76 |
#define VSTATUS 18 /* ICANON */ |
77 |
/* 19 spare 2 */
|
78 |
#endif
|
79 |
#define NCCS 20 |
80 |
|
81 |
#define _POSIX_VDISABLE __CAST(unsigned char, '\377') |
82 |
|
83 |
#if defined(_NETBSD_SOURCE)
|
84 |
#define CCEQ(val, c) (c == val ? val != _POSIX_VDISABLE : 0) |
85 |
#endif
|
86 |
|
87 |
/*
|
88 |
* Input flags - software input processing
|
89 |
*/
|
90 |
#define IGNBRK 0x00000001U /* ignore BREAK condition */ |
91 |
#define BRKINT 0x00000002U /* map BREAK to SIGINT */ |
92 |
#define IGNPAR 0x00000004U /* ignore (discard) parity errors */ |
93 |
#define PARMRK 0x00000008U /* mark parity and framing errors */ |
94 |
#define INPCK 0x00000010U /* enable checking of parity errors */ |
95 |
#define ISTRIP 0x00000020U /* strip 8th bit off chars */ |
96 |
#define INLCR 0x00000040U /* map NL into CR */ |
97 |
#define IGNCR 0x00000080U /* ignore CR */ |
98 |
#define ICRNL 0x00000100U /* map CR to NL (ala CRMOD) */ |
99 |
#define IXON 0x00000200U /* enable output flow control */ |
100 |
#define IXOFF 0x00000400U /* enable input flow control */ |
101 |
#if defined(_NETBSD_SOURCE)
|
102 |
#define IXANY 0x00000800U /* any char will restart after stop */ |
103 |
#endif
|
104 |
#if defined(_NETBSD_SOURCE)
|
105 |
#define IMAXBEL 0x00002000U /* ring bell on input queue full */ |
106 |
#endif
|
107 |
|
108 |
/*
|
109 |
* Output flags - software output processing
|
110 |
*/
|
111 |
#define OPOST 0x00000001U /* enable following output processing */ |
112 |
#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
|
113 |
#define ONLCR 0x00000002U /* map NL to CR-NL (ala CRMOD) */ |
114 |
#endif
|
115 |
#if defined(_NETBSD_SOURCE)
|
116 |
#define OXTABS 0x00000004U /* expand tabs to spaces */ |
117 |
#define ONOEOT 0x00000008U /* discard EOT's (^D) on output */ |
118 |
#endif
|
119 |
#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
|
120 |
#define OCRNL 0x00000010U /* map CR to NL */ |
121 |
#define ONOCR 0x00000020U /* discard CR's when on column 0 */ |
122 |
#define ONLRET 0x00000040U /* move to column 0 on CR */ |
123 |
#endif /* defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) */ |
124 |
|
125 |
/*
|
126 |
* Control flags - hardware control of terminal
|
127 |
*/
|
128 |
#if defined(_NETBSD_SOURCE)
|
129 |
#define CIGNORE 0x00000001U /* ignore control flags */ |
130 |
#endif
|
131 |
#define CSIZE 0x00000300U /* character size mask */ |
132 |
#define CS5 0x00000000U /* 5 bits (pseudo) */ |
133 |
#define CS6 0x00000100U /* 6 bits */ |
134 |
#define CS7 0x00000200U /* 7 bits */ |
135 |
#define CS8 0x00000300U /* 8 bits */ |
136 |
#define CSTOPB 0x00000400U /* send 2 stop bits */ |
137 |
#define CREAD 0x00000800U /* enable receiver */ |
138 |
#define PARENB 0x00001000U /* parity enable */ |
139 |
#define PARODD 0x00002000U /* odd parity, else even */ |
140 |
#define HUPCL 0x00004000U /* hang up on last close */ |
141 |
#define CLOCAL 0x00008000U /* ignore modem status lines */ |
142 |
#if defined(_NETBSD_SOURCE)
|
143 |
#define CRTSCTS 0x00010000U /* RTS/CTS full-duplex flow control */ |
144 |
#define CRTS_IFLOW CRTSCTS /* XXX compat */ |
145 |
#define CCTS_OFLOW CRTSCTS /* XXX compat */ |
146 |
#define CDTRCTS 0x00020000U /* DTR/CTS full-duplex flow control */ |
147 |
#define MDMBUF 0x00100000U /* DTR/DCD hardware flow control */ |
148 |
#define CHWFLOW (MDMBUF|CRTSCTS|CDTRCTS) /* all types of hw flow control */ |
149 |
#endif
|
150 |
|
151 |
|
152 |
/*
|
153 |
* "Local" flags - dumping ground for other state
|
154 |
*
|
155 |
* Warning: some flags in this structure begin with
|
156 |
* the letter "I" and look like they belong in the
|
157 |
* input flag.
|
158 |
*/
|
159 |
|
160 |
#if defined(_NETBSD_SOURCE)
|
161 |
#define ECHOKE 0x00000001U /* visual erase for line kill */ |
162 |
#endif
|
163 |
#define ECHOE 0x00000002U /* visually erase chars */ |
164 |
#define ECHOK 0x00000004U /* echo NL after line kill */ |
165 |
#define ECHO 0x00000008U /* enable echoing */ |
166 |
#define ECHONL 0x00000010U /* echo NL even if ECHO is off */ |
167 |
#if defined(_NETBSD_SOURCE)
|
168 |
#define ECHOPRT 0x00000020U /* visual erase mode for hardcopy */ |
169 |
#define ECHOCTL 0x00000040U /* echo control chars as ^(Char) */ |
170 |
#endif /* defined(_NETBSD_SOURCE) */ |
171 |
#define ISIG 0x00000080U /* enable signals INT, QUIT, [D]SUSP */ |
172 |
#define ICANON 0x00000100U /* canonicalize input lines */ |
173 |
#if defined(_NETBSD_SOURCE)
|
174 |
#define ALTWERASE 0x00000200U /* use alternate WERASE algorithm */ |
175 |
#endif /* defined(_NETBSD_SOURCE) */ |
176 |
#define IEXTEN 0x00000400U /* enable DISCARD and LNEXT */ |
177 |
#if defined(_NETBSD_SOURCE)
|
178 |
#define EXTPROC 0x00000800U /* external processing */ |
179 |
#endif /* defined(_NETBSD_SOURCE) */ |
180 |
#define TOSTOP 0x00400000U /* stop background jobs on output */ |
181 |
#if defined(_NETBSD_SOURCE)
|
182 |
#define FLUSHO 0x00800000U /* output being flushed (state) */ |
183 |
#define NOKERNINFO 0x02000000U /* no kernel output from VSTATUS */ |
184 |
#define PENDIN 0x20000000U /* re-echo input buffer at next read */ |
185 |
#endif /* defined(_NETBSD_SOURCE) */ |
186 |
#define NOFLSH 0x80000000U /* don't flush output on signal */ |
187 |
|
188 |
typedef unsigned int tcflag_t; |
189 |
typedef unsigned char cc_t; |
190 |
typedef unsigned int speed_t; |
191 |
|
192 |
struct termios {
|
193 |
tcflag_t c_iflag; /* input flags */
|
194 |
tcflag_t c_oflag; /* output flags */
|
195 |
tcflag_t c_cflag; /* control flags */
|
196 |
tcflag_t c_lflag; /* local flags */
|
197 |
cc_t c_cc[NCCS]; /* control chars */
|
198 |
int c_ispeed; /* input speed */ |
199 |
int c_ospeed; /* output speed */ |
200 |
}; |
201 |
|
202 |
/*
|
203 |
* Commands passed to tcsetattr() for setting the termios structure.
|
204 |
*/
|
205 |
#define TCSANOW 0 /* make change immediate */ |
206 |
#define TCSADRAIN 1 /* drain output, then change */ |
207 |
#define TCSAFLUSH 2 /* drain output, flush input */ |
208 |
#if defined(_NETBSD_SOURCE)
|
209 |
#define TCSASOFT 0x10 /* flag - don't alter h.w. state */ |
210 |
#endif
|
211 |
|
212 |
/*
|
213 |
* Standard speeds
|
214 |
*/
|
215 |
#define B0 0U |
216 |
#define B50 50U |
217 |
#define B75 75U |
218 |
#define B110 110U |
219 |
#define B134 134U |
220 |
#define B150 150U |
221 |
#define B200 200U |
222 |
#define B300 300U |
223 |
#define B600 600U |
224 |
#define B1200 1200U |
225 |
#define B1800 1800U |
226 |
#define B2400 2400U |
227 |
#define B4800 4800U |
228 |
#define B9600 9600U |
229 |
#define B19200 19200U |
230 |
#define B38400 38400U |
231 |
#if defined(_NETBSD_SOURCE)
|
232 |
#define B7200 7200U |
233 |
#define B14400 14400U |
234 |
#define B28800 28800U |
235 |
#define B57600 57600U |
236 |
#define B76800 76800U |
237 |
#define B115200 115200U |
238 |
#define B230400 230400U |
239 |
#define B460800 460800U |
240 |
#define B921600 921600U |
241 |
#define EXTA 19200U |
242 |
#define EXTB 38400U |
243 |
#endif /* defined(_NETBSD_SOURCE) */ |
244 |
|
245 |
#ifndef _KERNEL
|
246 |
|
247 |
#define TCIFLUSH 1 |
248 |
#define TCOFLUSH 2 |
249 |
#define TCIOFLUSH 3 |
250 |
#define TCOOFF 1 |
251 |
#define TCOON 2 |
252 |
#define TCIOFF 3 |
253 |
#define TCION 4 |
254 |
|
255 |
#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
|
256 |
#ifndef pid_t
|
257 |
typedef __pid_t pid_t;
|
258 |
#define pid_t __pid_t
|
259 |
#endif
|
260 |
#endif /* _XOPEN_SOURCE || _NETBSD_SOURCE */ |
261 |
#include <sys/cdefs.h> |
262 |
|
263 |
__BEGIN_DECLS |
264 |
speed_t cfgetispeed(const struct termios *); |
265 |
speed_t cfgetospeed(const struct termios *); |
266 |
int cfsetispeed(struct termios *, speed_t); |
267 |
int cfsetospeed(struct termios *, speed_t); |
268 |
int tcgetattr(int, struct termios *); |
269 |
int tcsetattr(int, int, const struct termios *); |
270 |
int tcdrain(int); |
271 |
int tcflow(int, int); |
272 |
int tcflush(int, int); |
273 |
int tcsendbreak(int, int); |
274 |
#if defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE)
|
275 |
pid_t tcgetsid(int);
|
276 |
#endif /* defined(_XOPEN_SOURCE) || defined(_NETBSD_SOURCE) */ |
277 |
|
278 |
|
279 |
#if defined(_NETBSD_SOURCE)
|
280 |
void cfmakeraw(struct termios *); |
281 |
int cfsetspeed(struct termios *, speed_t); |
282 |
#endif /* defined(_NETBSD_SOURCE) */ |
283 |
__END_DECLS |
284 |
|
285 |
#endif /* !_KERNEL */ |
286 |
|
287 |
#if defined(_NETBSD_SOURCE)
|
288 |
|
289 |
/*
|
290 |
* Include tty ioctl's that aren't just for backwards compatibility
|
291 |
* with the old tty driver. These ioctl definitions were previously
|
292 |
* in <sys/ioctl.h>.
|
293 |
*/
|
294 |
#include <sys/ttycom.h> |
295 |
#endif
|
296 |
|
297 |
/*
|
298 |
* END OF PROTECTED INCLUDE.
|
299 |
*/
|
300 |
#endif /* !_SYS_TERMIOS_H_ */ |
301 |
|
302 |
#if defined(_NETBSD_SOURCE)
|
303 |
#include <sys/ttydefaults.h> |
304 |
#endif
|