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