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, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
23/*	  All Rights Reserved	*/
24
25/*
26 * University Copyright- Copyright (c) 1982, 1986, 1988
27 * The Regents of the University of California
28 * All Rights Reserved
29 *
30 * University Acknowledgment- Portions of this document are derived from
31 * software developed by the University of California, Berkeley, and its
32 * contributors.
33 */
34
35#ifndef _SYS_TTOLD_H
36#define	_SYS_TTOLD_H
37
38#ifdef	__cplusplus
39extern "C" {
40#endif
41
42/* All the ioctls (BSD, V7, XENIX, S5) defines are in termios.h */
43/* this file has mostly BSD structures and flags */
44
45/* BSD special characters. Structure for TIOCSTC/TIOCGTC */
46struct tchars {
47	char	t_intrc;	/* interrupt */
48	char	t_quitc;	/* quit */
49	char	t_startc;	/* start output */
50	char	t_stopc;	/* stop output */
51	char	t_eofc;		/* end-of-file */
52	char	t_brkc;		/* input delimiter (like nl) */
53};
54
55/* note xenix defines tchars as tc */
56struct tc {
57	char	t_intrc;	/* interrupt */
58	char	t_quitc;	/* quit */
59	char	t_startc;	/* start output */
60	char	t_stopc;	/* stop output */
61	char	t_eofc;		/* end-of-file */
62	char	t_brkc;		/* input delimiter (like nl) */
63};
64
65#ifndef _SGTTY_H
66/*
67 * Structure for TIOCGETP and TIOCSETP ioctls.
68 */
69
70/*  sg_flags value changed from short (in SUN/BSD) to int in System V to */
71/*  match sgtty.h definition */
72struct	sgttyb {
73	char	sg_ispeed;		/* input speed */
74	char	sg_ospeed;		/* output speed */
75	char	sg_erase;		/* erase character */
76	char	sg_kill;		/* kill character */
77	int	sg_flags;		/* mode flags */
78};
79
80/* BSD local special chars. Structure for TIOCSLTC/TIOCGLTC */
81struct ltchars {
82	char	t_suspc;	/* stop process signal */
83	char	t_dsuspc;	/* delayed stop process signal */
84	char	t_rprntc;	/* reprint line */
85	char	t_flushc;	/* flush output (toggles) */
86	char	t_werasc;	/* word erase */
87	char	t_lnextc;	/* literal next character */
88};
89#endif /* _SGTTY_H */
90
91/*
92 * 4.3BSD/XENIX tty ioctl commands that are either:
93 *  1) deprecated
94 *  2) not implemented (and never were implemented)
95 *  3) implemented on top of new-style "ioctl"s.
96 */
97
98/*
99 * These ioctls are also defined in termios.h.
100 * because XENIX expects to see them in termio.h
101 */
102
103#ifndef tIOC
104#define	tIOC	('t'<<8)
105#endif
106
107#ifndef _SYS_TERMIOS_H
108/* defined in termios.h also so that all the ioctl codes are visible */
109
110#define	TIOCGETD	(tIOC|0)
111#define	TIOCSETD	(tIOC|1)
112#ifndef _SGTTY_H
113#define	TIOCHPCL	(tIOC|2)
114#define	TIOCGETP	(tIOC|8)
115#define	TIOCSETP  	(tIOC|9)
116#endif /* _SGTTY_H */
117#define	TIOCSETN	(tIOC|10)
118#ifndef _SGTTY_H
119#define	TIOCEXCL	(tIOC|13)
120#define	TIOCNXCL	(tIOC|14)
121#endif /* _SGTTY_H */
122#define	TIOCFLUSH	(tIOC|16)
123#define	TIOCSETC	(tIOC|17)
124#define	TIOCGETC	(tIOC|18)
125
126/* BSD ioctls that are not the same as XENIX */
127#define	TIOCLBIS	(tIOC|127)	/* bis local mode bits */
128#define	TIOCLBIC	(tIOC|126)	/* bic local mode bits */
129#define	TIOCLSET	(tIOC|125)	/* set entire local mode word */
130#define	TIOCLGET	(tIOC|124)	/* get local modes */
131#define	TIOCSBRK	(tIOC|123)	/* set break bit */
132#define	TIOCCBRK	(tIOC|122)	/* clear break bit */
133#define	TIOCSDTR	(tIOC|121)	/* set data terminal ready */
134#define	TIOCCDTR	(tIOC|120)	/* clear data terminal ready */
135#define	TIOCSLTC	(tIOC|117)	/* set local special chars */
136#define	TIOCGLTC	(tIOC|116)	/* get local special chars */
137#define	TIOCOUTQ	(tIOC|115)	/* driver output queue size */
138#define	TIOCNOTTY	(tIOC|113)	/* void tty association */
139#define	TIOCSTOP	(tIOC|111)	/* stop output, like ^S */
140#define	TIOCSTART	(tIOC|110)	/* start output, like ^Q */
141
142#define	TIOCREMOTE	(tIOC|30)	/* remote input editing */
143
144/* windowing ioctls and structure also defined in termios.h */
145
146#ifndef	_TIOC
147#define	_TIOC	('T'<<8)
148#endif
149
150#define	TIOCGWINSZ (_TIOC|104)
151#define	TIOCSWINSZ (_TIOC|103)
152
153/* Windowing structure to support TIOCSWINSZ/TIOCGWINSZ */
154struct winsize {
155	unsigned short ws_row;		/* rows, in characters */
156	unsigned short ws_col;		/* columns, in character */
157	unsigned short ws_xpixel;	/* horizontal size, pixels */
158	unsigned short ws_ypixel;	/* vertical size, pixels */
159};
160
161
162#endif /* end _SYS_TERMIOS_H */
163
164/* Old SVR3.0 flags - should be removed if there is no problem */
165/* note they are commented out */
166
167#if 0
168
169#define	O_HUPCL	01
170#define	O_XTABS	02
171#define	O_LCASE	04   /* simulate lower case */
172#define	O_ECHO	010  /* echo input */
173#define	O_CRMOD	020  /* map \r to \r\n on output */
174#define	O_RAW	040  /* no i/o processing */
175#define	O_ODDP	0100 /* get/send odd parity */
176#define	O_EVENP	0200 /* get/send even parity */
177#define	O_NLDELAY	001400	/* \n delay */
178#define	O_NL1	000400
179#define	O_NL2	001000
180#define	O_TBDELAY	002000	/* horizontal tab delay */
181#define	O_NOAL	004000
182#define	O_CRDELAY	030000	/* \r delay */
183#define	O_CR1	010000
184#define	O_CR2	020000
185#define	O_VTDELAY	040000	/* vertical tab delay */
186#define	O_BSDELAY	0100000 /* \b delay */
187
188#endif
189
190/*
191 * 4.3 BSD additions. These are new codes  and some of the
192 * flags that were there in SVR3.2 ttold.h have been given
193 * new codes. Otherwise they will not fit in a word.
194 */
195
196#define		O_TANDEM	0x00000001	/* send stopc on out q full */
197#define		O_CBREAK	0x00000002	/* half-cooked mode */
198#define		O_LCASE		0x00000004	/* simulate lower case */
199#define		O_ECHO		0x00000008	/* echo input */
200#define		O_CRMOD		0x00000010	/* map \r to \r\n on output */
201#define		O_RAW		0x00000020	/* no i/o processing */
202#define		O_ODDP		0x00000040	/* get/send odd parity */
203#define		O_EVENP		0x00000080	/* get/send even parity */
204#define		O_ANYP		0x000000c0	/* get any parity/send none */
205#define		O_NLDELAY	0x00000300	/* \n delay */
206#define			O_NL0	0x00000000
207#define			O_NL1	0x00000100	/* tty 37 */
208#define			O_NL2	0x00000200	/* vt05 */
209#define			O_NL3	0x00000300
210#define		O_TBDELAY	0x00000c00	/* horizontal tab delay */
211#define			O_TAB0	0x00000000
212#define			O_TAB1	0x00000400	/* tty 37 */
213#define			O_TAB2	0x00000800
214#define		O_XTABS		0x00000c00	/* expand tabs on output */
215#define		O_CRDELAY	0x00003000	/* \r delay */
216#define			O_CR0	0x00000000
217#define			O_CR1	0x00001000	/* tn 300 */
218#define			O_CR2	0x00002000	/* tty 37 */
219#define			O_CR3	0x00003000	/* concept 100 */
220#define		O_VTDELAY	0x00004000	/* vertical tab delay */
221#define			O_FF0	0x00000000
222#define			O_FF1	0x00004000	/* tty 37 */
223#define		O_BSDELAY	0x00008000	/* \b delay */
224#define			O_BS0	0x00000000
225#define			O_BS1	0x00008000
226#define		O_ALLDELAY \
227	(O_NLDELAY|O_TBDELAY|O_CRDELAY|O_VTDELAY|O_BSDELAY)
228#define		O_CRTBS		0x00010000	/* do backspacing for crt */
229#define		O_PRTERA	0x00020000	/* \ ... / erase */
230#define		O_CRTERA	0x00040000	/* " \b " to wipe out char */
231#define		O_TILDE		0x00080000	/* hazeltine tilde kludge */
232#define		O_MDMBUF	0x00100000	/* start/stop output on */
233						/* carrier intr */
234#define		O_LITOUT	0x00200000	/* literal output */
235#define		O_TOSTOP	0x00400000	/* SIGSTOP on background */
236						/* output */
237#define		O_FLUSHO	0x00800000	/* flush output to terminal */
238#define		O_NOHANG	0x01000000	/* no SIGHUP on carrier drop */
239#define		O_L001000	0x02000000
240#define		O_CRTKIL	0x04000000	/* kill line with " \b " */
241#define		O_PASS8		0x08000000
242#define		O_CTLECH	0x10000000	/* echo control chars as ^X */
243#define		O_PENDIN	0x20000000	/* tp->t_rawq needs reread */
244#define		O_DECCTQ	0x40000000	/* only ^Q starts after ^S */
245#define		O_NOFLSH	0x80000000	/* no output flush on signal */
246
247/* more BSD flags */
248#define		LCRTBS		(O_CRTBS>>16)
249#define		LPRTERA		(O_PRTERA>>16)
250#define		LCRTERA		(O_CRTERA>>16)
251#define		LTILDE		(O_TILDE>>16)
252#define		LMDMBUF		(O_MDMBUF>>16)
253#define		LLITOUT		(O_LITOUT>>16)
254#define		LTOSTOP		(O_TOSTOP>>16)
255#define		LFLUSHO		(O_FLUSHO>>16)
256#define		LNOHANG		(O_NOHANG>>16)
257#define		LCRTKIL		(O_CRTKIL>>16)
258#define		LPASS8		(O_PASS8>>16)
259#define		LCTLECH		(O_CTLECH>>16)
260#define		LPENDIN		(O_PENDIN>>16)
261#define		LDECCTQ		(O_DECCTQ>>16)
262#define		LNOFLSH		(O_NOFLSH>>16)
263
264
265#define		NOPOST	0x00000001	/* no processing on output (LITOUT */
266					/* with 7 bits + parity) */
267#define		NOISIG	0x00000002	/* disable all signal-generating */
268					/* characters */
269#define		STOPB	0x00000004	/* two stop bits */
270
271#define	OTTYDISC	0		/* old, v7 std tty driver */
272#define	NETLDISC	1		/* line discip for berk net */
273#define	NTTYDISC	2		/* new tty discipline */
274#define	TABLDISC	3		/* hitachi tablet discipline */
275#define	NTABLDISC	4		/* gtco tablet discipline */
276#define	MOUSELDISC	5		/* mouse discipline */
277#define	KBDLDISC	6		/* up/down keyboard trans (console) */
278
279#ifdef	__cplusplus
280}
281#endif
282
283#endif	/* _SYS_TTOLD_H */
284