xref: /illumos-gate/usr/src/uts/common/sys/termios.h (revision 46b592853d0f4f11781b6b0a7533f267c6aee132)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
22 /*	  All Rights Reserved  	*/
23 
24 
25 /*
26  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
27  * Use is subject to license terms.
28  */
29 
30 #ifndef _SYS_TERMIOS_H
31 #define	_SYS_TERMIOS_H
32 
33 #include <sys/feature_tests.h>
34 
35 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
36 #include <sys/ttydev.h>
37 #include <sys/time.h>
38 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
39 
40 #include <sys/types.h>
41 
42 #ifdef	__cplusplus
43 extern "C" {
44 #endif
45 
46 /*
47  * _POSIX_VDISABLE has been defined in <sys/termios.h> since the
48  * introduction of the header. The POSIX standard, IEEE Std.
49  * 1003.1-1988 also required  the existence of _POSIX_VDISABLE in
50  * this header. Subsequent versions of the IEEE Standard as well
51  * as the X/Open specifications required that _POSIX_VDISABLE be
52  * defined in <unistd.h> while still allowing for it's existence
53  * here. With the introduction of XPG6, _POSIX_VDISABLE can only
54  * be defined in <unistd.h>.
55  */
56 #if !defined(_XPG6) || defined(__EXTENSIONS__)
57 #ifndef _POSIX_VDISABLE
58 #define	_POSIX_VDISABLE 0 /* Disable special character functions */
59 #endif
60 #endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */
61 
62 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
63 #define	CTRL(c)	((c)&037)
64 #define	IBSHIFT 16
65 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
66 
67 /* required by termio.h and VCEOF/VCEOL */
68 #define	_NCC	8
69 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
70 #define	NCC	_NCC
71 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
72 
73 /* some defines required by POSIX */
74 #define	NCCS	19
75 
76 /*
77  * types defined by POSIX. These are better off in types.h, but
78  * the standard says that they have to be in termios.h.
79  */
80 typedef unsigned int tcflag_t;
81 typedef unsigned char cc_t;
82 typedef unsigned int speed_t;
83 
84 /*
85  * Ioctl control packet
86  */
87 struct termios {
88 	tcflag_t	c_iflag;	/* input modes */
89 	tcflag_t	c_oflag;	/* output modes */
90 	tcflag_t	c_cflag;	/* control modes */
91 	tcflag_t	c_lflag;	/* line discipline modes */
92 	cc_t		c_cc[NCCS];	/* control chars */
93 };
94 
95 /*
96  * POSIX termios functions
97  * These functions get mapped into ioctls.
98  */
99 
100 #ifndef _KERNEL
101 
102 #if defined(__STDC__)
103 
104 extern speed_t cfgetospeed(const struct termios *);
105 extern int cfsetospeed(struct termios *, speed_t);
106 extern speed_t cfgetispeed(const struct termios *);
107 extern int cfsetispeed(struct termios *, speed_t);
108 extern int tcgetattr(int, struct termios *);
109 extern int tcsetattr(int, int, const struct termios *);
110 extern int tcsendbreak(int, int);
111 extern int tcdrain(int);
112 extern int tcflush(int, int);
113 extern int tcflow(int, int);
114 
115 #else
116 
117 extern speed_t cfgetospeed();
118 extern int cfsetospeed();
119 extern speed_t cfgetispeed();
120 extern int cfsetispeed();
121 extern int tcgetattr();
122 extern int tcsetattr();
123 extern int tcsendbreak();
124 extern int tcdrain();
125 extern int tcflush();
126 extern int tcflow();
127 
128 #endif /* __STDC__ */
129 
130 #if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__)
131 
132 #if defined(__STDC__)
133 extern pid_t tcgetsid(int);
134 #else
135 extern pid_t tcgetsid();
136 #endif /* __STDC__ */
137 
138 #endif /* !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) ... */
139 
140 #endif
141 
142 /* control characters */
143 #define	VINTR	0
144 #define	VQUIT	1
145 #define	VERASE	2
146 #define	VKILL	3
147 #define	VEOF	4
148 #define	VEOL	5
149 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
150 #define	VEOL2	6
151 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
152 #define	VMIN	4
153 #define	VTIME	5
154 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
155 #define	VSWTCH	7
156 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
157 #define	VSTART		8
158 #define	VSTOP		9
159 #define	VSUSP		10
160 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
161 #define	VDSUSP		11
162 #define	VREPRINT	12
163 #define	VDISCARD	13
164 #define	VWERASE		14
165 #define	VLNEXT		15
166 /* 16 thru 19 reserved for future use */
167 
168 /*
169  * control characters form Xenix termio.h
170  */
171 #define	VCEOF	NCC		/* RESERVED true EOF char (V7 compatability) */
172 #define	VCEOL	(NCC + 1)	/* RESERVED true EOL char */
173 
174 #define	CNUL	0
175 #define	CDEL	0177
176 
177 /* S5 default control chars */
178 /* CINTR, CERASE and CKILL modified to SunOS traditional values */
179 #define	CESC	'\\'
180 #define	CINTR	CTRL('c')
181 #define	CQUIT	034	/* FS, cntl | */
182 #define	CERASE	0177	/* DEL */
183 #define	CKILL	CTRL('u')
184 #define	CEOT	04
185 #define	CEOL	0
186 #define	CEOL2	0
187 #define	CEOF	04	/* cntl d */
188 #define	CSTART	021	/* cntl q */
189 #define	CSTOP	023	/* cntl s */
190 #define	CSWTCH	032	/* cntl z */
191 #define	CNSWTCH	0
192 #define	CSUSP	CTRL('z')
193 #define	CDSUSP	CTRL('y')
194 #define	CRPRNT	CTRL('r')
195 #define	CFLUSH	CTRL('o')
196 #define	CWERASE	CTRL('w')
197 #define	CLNEXT	CTRL('v')
198 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
199 
200 
201 /* input modes */
202 #define	IGNBRK	0000001
203 #define	BRKINT	0000002
204 #define	IGNPAR	0000004
205 #define	PARMRK	0000010
206 #define	INPCK	0000020
207 #define	ISTRIP	0000040
208 #define	INLCR	0000100
209 #define	IGNCR	0000200
210 #define	ICRNL	0000400
211 #if !defined(_POSIX_C_SOURCE) || \
212 	(defined(_XOPEN_SOURCE) && !defined(_XPG6)) || \
213 	defined(__EXTENSIONS__)
214 #define	IUCLC	0001000
215 #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */
216 #define	IXON	0002000
217 #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
218 	defined(__EXTENSIONS__)
219 #define	IXANY	0004000
220 #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */
221 #define	IXOFF	0010000
222 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
223 #define	IMAXBEL 0020000
224 #define	DOSMODE	0100000  /* for 386 compatibility */
225 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
226 
227 /* output modes */
228 #define	OPOST	0000001
229 #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
230 	defined(__EXTENSIONS__)
231 #if !defined(_XPG6) || defined(__EXTENSIONS__)
232 #define	OLCUC	0000002
233 #endif
234 #define	ONLCR	0000004
235 #define	OCRNL	0000010
236 #define	ONOCR	0000020
237 #define	ONLRET	0000040
238 #define	OFILL	0000100
239 #define	OFDEL	0000200
240 #define	NLDLY	0000400
241 #define	NL0	0
242 #define	NL1	0000400
243 #define	CRDLY	0003000
244 #define	CR0	0
245 #define	CR1	0001000
246 #define	CR2	0002000
247 #define	CR3	0003000
248 #define	TABDLY	0014000
249 #define	TAB0	0
250 #define	TAB1	0004000
251 #define	TAB2	0010000
252 #define	TAB3	0014000
253 #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */
254 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
255 #define	XTABS	0014000
256 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
257 #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \
258 	defined(__EXTENSIONS__)
259 #define	BSDLY	0020000
260 #define	BS0	0
261 #define	BS1	0020000
262 #define	VTDLY	0040000
263 #define	VT0	0
264 #define	VT1	0040000
265 #define	FFDLY	0100000
266 #define	FF0	0
267 #define	FF1	0100000
268 #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */
269 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
270 #define	PAGEOUT 0200000
271 #define	WRAP	0400000
272 
273 /* control modes */
274 #define	CBAUD	0000017
275 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
276 #define	CSIZE	0000060
277 #define	CS5	0
278 #define	CS6	0000020
279 #define	CS7	0000040
280 #define	CS8	0000060
281 #define	CSTOPB	0000100
282 #define	CREAD	0000200
283 #define	PARENB	0000400
284 #define	PARODD	0001000
285 #define	HUPCL	0002000
286 #define	CLOCAL	0004000
287 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
288 #define	RCV1EN	0010000
289 #define	XMT1EN	0020000
290 #define	LOBLK	0040000
291 #define	XCLUDE	0100000		/* *V7* exclusive use coming fron XENIX */
292 #define	CRTSXOFF 010000000000
293 #define	CRTSCTS	020000000000
294 #define	CIBAUD	03600000
295 #define	PAREXT	04000000
296 #define	CBAUDEXT 010000000
297 #define	CIBAUDEXT 020000000
298 
299 /*
300  * 4.4BSD hardware flow control flags
301  */
302 #define	CRTS_IFLOW 010000000000
303 #define	CCTS_OFLOW 020000000000
304 
305 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
306 
307 /* line discipline 0 modes */
308 #define	ISIG	0000001
309 #define	ICANON	0000002
310 #if !defined(_POSIX_C_SOURCE) || \
311 	(defined(_XOPEN_SOURCE) && !defined(_XPG6)) || \
312 	defined(__EXTENSIONS__)
313 #define	XCASE	0000004
314 #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */
315 #define	ECHO	0000010
316 #define	ECHOE	0000020
317 #define	ECHOK	0000040
318 #define	ECHONL	0000100
319 #define	NOFLSH	0000200
320 #define	TOSTOP	0000400
321 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
322 #define	ECHOCTL	0001000
323 #define	ECHOPRT	0002000
324 #define	ECHOKE	0004000
325 #define	DEFECHO	0010000
326 #define	FLUSHO	0020000
327 #define	PENDIN	0040000
328 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
329 
330 #define	IEXTEN	0100000  /* POSIX flag - enable POSIX extensions */
331 #define	_TIOC	('T'<<8)
332 
333 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
334 
335 #define	TIOC	_TIOC
336 
337 #define	TCGETA	(_TIOC|1)
338 #define	TCSETA	(_TIOC|2)
339 #define	TCSETAW	(_TIOC|3)
340 #define	TCSETAF	(_TIOC|4)
341 #define	TCSBRK	(_TIOC|5)
342 #define	TCXONC	(_TIOC|6)
343 #define	TCFLSH	(_TIOC|7)
344 
345 /* Slots reserved for 386/XENIX compatibility - keyboard control */
346 
347 #define	TIOCKBON	(_TIOC|8)
348 #define	TIOCKBOF 	(_TIOC|9)
349 #define	KBENABLED 	(_TIOC|10)
350 
351 #ifndef IOCTYPE
352 #define	IOCTYPE	0xff00
353 #endif
354 
355 #define	TCDSET	(_TIOC|32)
356 #define	RTS_TOG	(_TIOC|33)	/* 386 - "RTS" toggle define 8A1 protocol */
357 
358 #define	TIOCGWINSZ (_TIOC|104)
359 #define	TIOCSWINSZ (_TIOC|103)
360 
361 /*
362  * Softcarrier ioctls
363  */
364 #define	TIOCGSOFTCAR (_TIOC|105)
365 #define	TIOCSSOFTCAR (_TIOC|106)
366 
367 
368 /* termios ioctls */
369 
370 #define	TCGETS		(_TIOC|13)
371 #define	TCSETS		(_TIOC|14)
372 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
373 #define	TCSANOW		(_TIOC|14) /* same as TCSETS */
374 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
375 #define	TCSETSW		(_TIOC|15)
376 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
377 #define	TCSADRAIN	(_TIOC|15) /* same as TCSETSW */
378 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
379 #define	TCSETSF		(_TIOC|16)
380 
381 /*
382  * linux terminal ioctls we need to be aware of
383  */
384 #define	TIOCSETLD	(_TIOC|123)	/* set line discipline parms */
385 #define	TIOCGETLD	(_TIOC|124)	/* get line discipline parms */
386 
387 /*
388  * The VMIN and VTIME and solaris overlap with VEOF and VEOL - This is
389  * perfectly legal except, linux expects them to be separate. So we keep
390  * them separately.
391  */
392 struct lx_cc {
393 	unsigned char veof;	/* veof value */
394 	unsigned char veol;	/* veol value */
395 	unsigned char vmin;	/* vmin value */
396 	unsigned char vtime;	/* vtime value */
397 };
398 
399 /*
400  * NTP PPS ioctls
401  */
402 #define	TIOCGPPS	(_TIOC|125)
403 #define	TIOCSPPS	(_TIOC|126)
404 #define	TIOCGPPSEV	(_TIOC|127)
405 
406 /* Argument filled in by TIOCGPPSEV */
407 struct ppsclockev {
408 	struct timeval tv;
409 	uint_t serial;
410 };
411 
412 #if defined(_SYSCALL32)
413 struct ppsclockev32 {
414 	struct timeval32 tv;
415 	uint32_t serial;
416 };
417 #endif /* _SYSCALL32 */
418 
419 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
420 
421 #define	TCSAFLUSH	(_TIOC|16) /* same as TCSETSF */
422 
423 /* termios option flags */
424 
425 #define	TCIFLUSH	0  /* flush data received but not read */
426 #define	TCOFLUSH	1  /* flush data written but not transmitted */
427 #define	TCIOFLUSH	2  /* flush both data both input and output queues */
428 
429 #define	TCOOFF		0  /* suspend output */
430 #define	TCOON		1  /* restart suspended output */
431 #define	TCIOFF		2  /* suspend input */
432 #define	TCION		3  /* restart suspended input */
433 
434 /* TIOC ioctls for BSD, ptys, job control and modem control */
435 
436 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
437 #define	tIOC	('t'<<8)
438 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
439 
440 /* Slots for 386/XENIX compatibility */
441 /* BSD includes these ioctls in ttold.h */
442 
443 #ifndef _SYS_TTOLD_H
444 
445 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
446 #define	TIOCGETD	(tIOC|0)
447 #define	TIOCSETD	(tIOC|1)
448 #define	TIOCHPCL	(tIOC|2)
449 #define	TIOCGETP	(tIOC|8)
450 #define	TIOCSETP  	(tIOC|9)
451 #define	TIOCSETN	(tIOC|10)
452 #define	TIOCEXCL	(tIOC|13)
453 #define	TIOCNXCL	(tIOC|14)
454 #define	TIOCFLUSH	(tIOC|16)
455 #define	TIOCSETC	(tIOC|17)
456 #define	TIOCGETC	(tIOC|18)
457 /*
458  * BSD ioctls that are not the same as XENIX are included here.
459  * There are also some relevant ioctls from SUN/BSD sys/ttycom.h
460  * BSD pty ioctls like TIOCPKT are not supported in SVR4.
461  */
462 
463 #define	TIOCLBIS	(tIOC|127)	/* bis local mode bits */
464 #define	TIOCLBIC	(tIOC|126)	/* bic local mode bits */
465 #define	TIOCLSET	(tIOC|125)	/* set entire local mode word */
466 #define	TIOCLGET	(tIOC|124)	/* get local modes */
467 #define	TIOCSBRK	(tIOC|123)	/* set break bit */
468 #define	TIOCCBRK	(tIOC|122)	/* clear break bit */
469 #define	TIOCSDTR	(tIOC|121)	/* set data terminal ready */
470 #define	TIOCCDTR	(tIOC|120)	/* clear data terminal ready */
471 #define	TIOCSLTC	(tIOC|117)	/* set local special chars */
472 #define	TIOCGLTC	(tIOC|116)	/* get local special chars */
473 #define	TIOCOUTQ	(tIOC|115)	/* driver output queue size */
474 #define	TIOCNOTTY	(tIOC|113)	/* void tty association */
475 #define	TIOCSCTTY	(tIOC|132)	/* get a ctty */
476 #define	TIOCSTOP	(tIOC|111)	/* stop output, like ^S */
477 #define	TIOCSTART	(tIOC|110)	/* start output, like ^Q */
478 #define	TIOCSILOOP	(tIOC|109)	/* private to Sun; do not use */
479 #define	TIOCCILOOP	(tIOC|108)	/* private to Sun; do not use */
480 
481 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
482 
483 #endif /* end _SYS_TTOLD_H */
484 
485 /* POSIX job control ioctls */
486 
487 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
488 #define	TIOCGPGRP	(tIOC|20)	/* get pgrp of tty */
489 #define	TIOCSPGRP	(tIOC|21)	/* set pgrp of tty */
490 #define	TIOCGSID	(tIOC|22)	/* get session id on ctty */
491 
492 /* Miscellaneous */
493 #define	TIOCSTI		(tIOC|23)	/* simulate terminal input */
494 
495 /* Modem control */
496 #define	TIOCMSET	(tIOC|26)	/* set all modem bits */
497 #define	TIOCMBIS	(tIOC|27)	/* bis modem bits */
498 #define	TIOCMBIC	(tIOC|28)	/* bic modem bits */
499 #define	TIOCMGET	(tIOC|29)	/* get all modem bits */
500 #define		TIOCM_LE	0001		/* line enable */
501 #define		TIOCM_DTR	0002		/* data terminal ready */
502 #define		TIOCM_RTS	0004		/* request to send */
503 #define		TIOCM_ST	0010		/* secondary transmit */
504 #define		TIOCM_SR	0020		/* secondary receive */
505 #define		TIOCM_CTS	0040		/* clear to send */
506 #define		TIOCM_CAR	0100		/* carrier detect */
507 #define		TIOCM_CD	TIOCM_CAR
508 #define		TIOCM_RNG	0200		/* ring */
509 #define		TIOCM_RI	TIOCM_RNG
510 #define		TIOCM_DSR	0400		/* data set ready */
511 
512 /* pseudo-tty */
513 
514 #define	TIOCREMOTE	(tIOC|30)	/* remote input editing */
515 #define	TIOCSIGNAL	(tIOC|31)	/* pty: send signal to slave */
516 
517 
518 /* Some more 386 xenix stuff */
519 
520 #define	LDIOC	('D'<<8)
521 
522 #define	LDOPEN	(LDIOC|0)
523 #define	LDCLOSE	(LDIOC|1)
524 #define	LDCHG	(LDIOC|2)
525 #define	LDGETT	(LDIOC|8)
526 #define	LDSETT	(LDIOC|9)
527 
528 /* Slots for 386 compatibility */
529 
530 #define	LDSMAP	(LDIOC|110)
531 #define	LDGMAP	(LDIOC|111)
532 #define	LDNMAP	(LDIOC|112)
533 #define	LDEMAP	(LDIOC|113)
534 #define	LDDMAP	(LDIOC|114)
535 
536 /*
537  * These are retained for 386/XENIX compatibility.
538  */
539 
540 #define	DIOC		('d'<<8)
541 #define	DIOCGETP	(DIOC|8)		/* V7 */
542 #define	DIOCSETP	(DIOC|9)		/* V7 */
543 
544 /*
545  * Returns a non-zero value if there
546  * are characters in the input queue.
547  *
548  * XXX - somebody is confused here.  V7 had no such "ioctl", although XENIX may
549  * have added it; 4BSD had FIONREAD, which returned the number of characters
550  * waiting, and was supposed to work on all descriptors (i.e., every driver
551  * should make a stab at implementing it).
552  */
553 #define	FIORDCHK	(('f'<<8)|3)		/* V7 */
554 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
555 
556 /*
557  * Speeds
558  */
559 #define	B0	0
560 #define	B50	1
561 #define	B75	2
562 #define	B110	3
563 #define	B134	4
564 #define	B150	5
565 #define	B200	6
566 #define	B300	7
567 #define	B600	8
568 #define	B1200	9
569 #define	B1800	10
570 #define	B2400	11
571 #define	B4800	12
572 #define	B9600	13
573 #define	B19200	14
574 #define	B38400	15
575 #define	B57600	16
576 #define	B76800	17
577 #define	B115200	18
578 #define	B153600	19
579 #define	B230400	20
580 #define	B307200	21
581 #define	B460800	22
582 #define	B921600	23
583 
584 #ifndef _SYS_TTOLD_H
585 
586 #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
587 /* Windowing structure to support JWINSIZE/TIOCSWINSZ/TIOCGWINSZ */
588 struct winsize {
589 	unsigned short ws_row;	/* rows, in characters */
590 	unsigned short ws_col;	/* columns, in character */
591 	unsigned short ws_xpixel;	/* horizontal size, pixels */
592 	unsigned short ws_ypixel;	/* vertical size, pixels */
593 };
594 #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */
595 
596 #endif /* end _SYS_TTOLD_H */
597 
598 #ifdef	__cplusplus
599 }
600 #endif
601 
602 #endif	/* _SYS_TERMIOS_H */
603