xref: /titanic_51/usr/src/lib/libbc/inc/include/termios.h (revision 5d54f3d8999eac1762fe0a8c7177d20f1f201fae)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate  * with the License.
87c478bd9Sstevel@tonic-gate  *
97c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate  * and limitations under the License.
137c478bd9Sstevel@tonic-gate  *
147c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate  *
207c478bd9Sstevel@tonic-gate  * CDDL HEADER END
217c478bd9Sstevel@tonic-gate  */
227c478bd9Sstevel@tonic-gate /*
23*5d54f3d8Smuffin  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24*5d54f3d8Smuffin  * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate #ifndef	__SYS_TERMIOS_H
287c478bd9Sstevel@tonic-gate #define	__SYS_TERMIOS_H
297c478bd9Sstevel@tonic-gate 
307c478bd9Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
317c478bd9Sstevel@tonic-gate 
327c478bd9Sstevel@tonic-gate #include <sys/stdtypes.h>
337c478bd9Sstevel@tonic-gate #include <sys/ioccom.h>
347c478bd9Sstevel@tonic-gate #include <sys/ttydev.h>
357c478bd9Sstevel@tonic-gate #include <sys/ttycom.h>
367c478bd9Sstevel@tonic-gate 
377c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
387c478bd9Sstevel@tonic-gate extern "C" {
397c478bd9Sstevel@tonic-gate #endif
407c478bd9Sstevel@tonic-gate 
417c478bd9Sstevel@tonic-gate #define	NCCS	17
427c478bd9Sstevel@tonic-gate 
437c478bd9Sstevel@tonic-gate /*
447c478bd9Sstevel@tonic-gate  * control characters
457c478bd9Sstevel@tonic-gate  * the following are not (yet) posix
467c478bd9Sstevel@tonic-gate  * VEOL2, VSWTCH, VDSUSP, VREPRINT, VDISCARD, VWERASE, VLNEXT, VSTATUS
477c478bd9Sstevel@tonic-gate  */
487c478bd9Sstevel@tonic-gate #define	VINTR		0
497c478bd9Sstevel@tonic-gate #define	VQUIT		1
507c478bd9Sstevel@tonic-gate #define	VERASE		2
517c478bd9Sstevel@tonic-gate #define	VKILL		3
527c478bd9Sstevel@tonic-gate #define	VEOF		4
537c478bd9Sstevel@tonic-gate #define	VEOL		5
547c478bd9Sstevel@tonic-gate #ifndef _POSIX_SOURCE
557c478bd9Sstevel@tonic-gate #define	VEOL2		6
567c478bd9Sstevel@tonic-gate #define	VSWTCH		7
577c478bd9Sstevel@tonic-gate #endif
587c478bd9Sstevel@tonic-gate #define	VSTART		8
597c478bd9Sstevel@tonic-gate #define	VSTOP		9
607c478bd9Sstevel@tonic-gate #define	VSUSP		10
617c478bd9Sstevel@tonic-gate #ifndef _POSIX_SOURCE
627c478bd9Sstevel@tonic-gate #define	VDSUSP		11
637c478bd9Sstevel@tonic-gate #define	VREPRINT	12
647c478bd9Sstevel@tonic-gate #define	VDISCARD	13
657c478bd9Sstevel@tonic-gate #define	VWERASE		14
667c478bd9Sstevel@tonic-gate #define	VLNEXT		15
677c478bd9Sstevel@tonic-gate #define	VSTATUS		16
687c478bd9Sstevel@tonic-gate #endif
697c478bd9Sstevel@tonic-gate 
707c478bd9Sstevel@tonic-gate #define	VMIN		VEOF
717c478bd9Sstevel@tonic-gate #define	VTIME		VEOL
727c478bd9Sstevel@tonic-gate 
737c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
747c478bd9Sstevel@tonic-gate #define	_CTRL(c)	('c'&037)
757c478bd9Sstevel@tonic-gate 
767c478bd9Sstevel@tonic-gate /*
777c478bd9Sstevel@tonic-gate  * default control chars.
787c478bd9Sstevel@tonic-gate  * guarded for ttychars.h.
797c478bd9Sstevel@tonic-gate  */
807c478bd9Sstevel@tonic-gate #ifndef	CINTR
817c478bd9Sstevel@tonic-gate #define	CINTR	_CTRL(c)
827c478bd9Sstevel@tonic-gate #define	CQUIT	034		/* FS, ^\ */
837c478bd9Sstevel@tonic-gate #define	CERASE	0177		/* DEL, ^? */
847c478bd9Sstevel@tonic-gate #define	CKILL	_CTRL(u)
857c478bd9Sstevel@tonic-gate #define	CEOF	_CTRL(d)
867c478bd9Sstevel@tonic-gate #define	CEOT	CEOF
877c478bd9Sstevel@tonic-gate #define	CEOL	0
887c478bd9Sstevel@tonic-gate #define	CEOL2	0
897c478bd9Sstevel@tonic-gate #define	CSWTCH	0
907c478bd9Sstevel@tonic-gate #define	CNSWTCH	0
917c478bd9Sstevel@tonic-gate #define	CSTART	_CTRL(q)
927c478bd9Sstevel@tonic-gate #define	CSTOP	_CTRL(s)
937c478bd9Sstevel@tonic-gate #define	CSUSP	_CTRL(z)
947c478bd9Sstevel@tonic-gate #define	CDSUSP	_CTRL(y)
957c478bd9Sstevel@tonic-gate #define	CRPRNT	_CTRL(r)
967c478bd9Sstevel@tonic-gate #define	CFLUSH	_CTRL(o)
977c478bd9Sstevel@tonic-gate #define	CWERASE	_CTRL(w)
987c478bd9Sstevel@tonic-gate #define	CLNEXT	_CTRL(v)
997c478bd9Sstevel@tonic-gate #endif	/* !CINTR */
1007c478bd9Sstevel@tonic-gate 
1017c478bd9Sstevel@tonic-gate #define	CESC	'\\'
1027c478bd9Sstevel@tonic-gate #define	CNUL	0
1037c478bd9Sstevel@tonic-gate #define	CDEL	0377
1047c478bd9Sstevel@tonic-gate #endif	/* !_POSIX_SOURCE */
1057c478bd9Sstevel@tonic-gate 
1067c478bd9Sstevel@tonic-gate /* input modes */
1077c478bd9Sstevel@tonic-gate #define	IGNBRK	0x00000001
1087c478bd9Sstevel@tonic-gate #define	BRKINT	0x00000002
1097c478bd9Sstevel@tonic-gate #define	IGNPAR	0x00000004
1107c478bd9Sstevel@tonic-gate #define	PARMRK	0x00000008
1117c478bd9Sstevel@tonic-gate #define	INPCK	0x00000010
1127c478bd9Sstevel@tonic-gate #define	ISTRIP	0x00000020
1137c478bd9Sstevel@tonic-gate #define	INLCR	0x00000040
1147c478bd9Sstevel@tonic-gate #define	IGNCR	0x00000080
1157c478bd9Sstevel@tonic-gate #define	ICRNL	0x00000100
1167c478bd9Sstevel@tonic-gate /*	IUCLC	0x00000200	not posix, defined below */
1177c478bd9Sstevel@tonic-gate #define	IXON	0x00000400
1187c478bd9Sstevel@tonic-gate /*	IXANY	0x00000800	not posix, defined below */
1197c478bd9Sstevel@tonic-gate #define	IXOFF	0x00001000
1207c478bd9Sstevel@tonic-gate /*	IMAXBEL	0x00002000	not posix, defined below */
1217c478bd9Sstevel@tonic-gate 
1227c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
1237c478bd9Sstevel@tonic-gate #define	IUCLC	0x00000200
1247c478bd9Sstevel@tonic-gate #define	IXANY	0x00000800
1257c478bd9Sstevel@tonic-gate #define	IMAXBEL	0x00002000
1267c478bd9Sstevel@tonic-gate #endif	/* !_POSIX_SOURCE */
1277c478bd9Sstevel@tonic-gate 
1287c478bd9Sstevel@tonic-gate /* output modes */
1297c478bd9Sstevel@tonic-gate #define	OPOST	0x00000001
1307c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
1317c478bd9Sstevel@tonic-gate #define	OLCUC	0x00000002
1327c478bd9Sstevel@tonic-gate #define	ONLCR	0x00000004
1337c478bd9Sstevel@tonic-gate #define	OCRNL	0x00000008
1347c478bd9Sstevel@tonic-gate #define	ONOCR	0x00000010
1357c478bd9Sstevel@tonic-gate #define	ONLRET	0x00000020
1367c478bd9Sstevel@tonic-gate #define	OFILL	0x00000040
1377c478bd9Sstevel@tonic-gate #define	OFDEL	0x00000080
1387c478bd9Sstevel@tonic-gate #define	NLDLY	0x00000100
1397c478bd9Sstevel@tonic-gate #define	NL0	0
1407c478bd9Sstevel@tonic-gate #define	NL1	0x00000100
1417c478bd9Sstevel@tonic-gate #define	CRDLY	0x00000600
1427c478bd9Sstevel@tonic-gate #define	CR0	0
1437c478bd9Sstevel@tonic-gate #define	CR1	0x00000200
1447c478bd9Sstevel@tonic-gate #define	CR2	0x00000400
1457c478bd9Sstevel@tonic-gate #define	CR3	0x00000600
1467c478bd9Sstevel@tonic-gate #define	TABDLY	0x00001800
1477c478bd9Sstevel@tonic-gate #define	TAB0	0
1487c478bd9Sstevel@tonic-gate #define	TAB1	0x00000800
1497c478bd9Sstevel@tonic-gate #define	TAB2	0x00001000
1507c478bd9Sstevel@tonic-gate #define	XTABS	0x00001800
1517c478bd9Sstevel@tonic-gate #define	TAB3	XTABS
1527c478bd9Sstevel@tonic-gate #define	BSDLY	0x00002000
1537c478bd9Sstevel@tonic-gate #define	BS0	0
1547c478bd9Sstevel@tonic-gate #define	BS1	0x00002000
1557c478bd9Sstevel@tonic-gate #define	VTDLY	0x00004000
1567c478bd9Sstevel@tonic-gate #define	VT0	0
1577c478bd9Sstevel@tonic-gate #define	VT1	0x00004000
1587c478bd9Sstevel@tonic-gate #define	FFDLY	0x00008000
1597c478bd9Sstevel@tonic-gate #define	FF0	0
1607c478bd9Sstevel@tonic-gate #define	FF1	0x00008000
1617c478bd9Sstevel@tonic-gate #define	PAGEOUT	0x00010000
1627c478bd9Sstevel@tonic-gate #define	WRAP	0x00020000
1637c478bd9Sstevel@tonic-gate #endif	/* !_POSIX_SOURCE */
1647c478bd9Sstevel@tonic-gate 
1657c478bd9Sstevel@tonic-gate /* control modes */
1667c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
1677c478bd9Sstevel@tonic-gate #define	CBAUD	0x0000000f
1687c478bd9Sstevel@tonic-gate #endif
1697c478bd9Sstevel@tonic-gate #define	CSIZE	0x00000030
1707c478bd9Sstevel@tonic-gate #define	CS5	0
1717c478bd9Sstevel@tonic-gate #define	CS6	0x00000010
1727c478bd9Sstevel@tonic-gate #define	CS7	0x00000020
1737c478bd9Sstevel@tonic-gate #define	CS8	0x00000030
1747c478bd9Sstevel@tonic-gate #define	CSTOPB	0x00000040
1757c478bd9Sstevel@tonic-gate #define	CREAD	0x00000080
1767c478bd9Sstevel@tonic-gate #define	PARENB	0x00000100
1777c478bd9Sstevel@tonic-gate #define	PARODD	0x00000200
1787c478bd9Sstevel@tonic-gate #define	HUPCL	0x00000400
1797c478bd9Sstevel@tonic-gate #define	CLOCAL	0x00000800
1807c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
1817c478bd9Sstevel@tonic-gate #define	LOBLK	0x00001000
1827c478bd9Sstevel@tonic-gate #define	CIBAUD	0x000f0000
1837c478bd9Sstevel@tonic-gate #define	CRTSXOFF 0x40000000
1847c478bd9Sstevel@tonic-gate #define	CRTSCTS	0x80000000
1857c478bd9Sstevel@tonic-gate #define	CBAUDEXT 0x200000
1867c478bd9Sstevel@tonic-gate #define	CIBAUDEXT 0x400000
1877c478bd9Sstevel@tonic-gate 
1887c478bd9Sstevel@tonic-gate /*
1897c478bd9Sstevel@tonic-gate  * 4.4BSD flags for hardware flow control
1907c478bd9Sstevel@tonic-gate  */
1917c478bd9Sstevel@tonic-gate #define	CRTS_IFLOW 0x40000000
1927c478bd9Sstevel@tonic-gate #define	CCTS_OFLOW 0x80000000
1937c478bd9Sstevel@tonic-gate 
1947c478bd9Sstevel@tonic-gate #define	IBSHIFT	16
1957c478bd9Sstevel@tonic-gate #endif	/* !_POSIX_SOURCE */
1967c478bd9Sstevel@tonic-gate 
1977c478bd9Sstevel@tonic-gate /* line discipline 0 modes */
1987c478bd9Sstevel@tonic-gate #define	ISIG	0x00000001
1997c478bd9Sstevel@tonic-gate #define	ICANON	0x00000002
2007c478bd9Sstevel@tonic-gate /*	XCASE	0x00000004		not posix, defined below */
2017c478bd9Sstevel@tonic-gate #define	ECHO	0x00000008
2027c478bd9Sstevel@tonic-gate #define	ECHOE	0x00000010
2037c478bd9Sstevel@tonic-gate #define	ECHOK	0x00000020
2047c478bd9Sstevel@tonic-gate #define	ECHONL	0x00000040
2057c478bd9Sstevel@tonic-gate #define	NOFLSH	0x00000080
2067c478bd9Sstevel@tonic-gate #define	TOSTOP	0x00000100
2077c478bd9Sstevel@tonic-gate /*	ECHOCTL	0x00000200		not posix, defined below */
2087c478bd9Sstevel@tonic-gate /*	ECHOPRT	0x00000400		not posix, defined below */
2097c478bd9Sstevel@tonic-gate /*	ECHOKE	0x00000800		not posix, defined below */
2107c478bd9Sstevel@tonic-gate /*	DEFECHO	0x00001000		not posix, defined below */
2117c478bd9Sstevel@tonic-gate /*	FLUSHO	0x00002000		not posix, defined below */
2127c478bd9Sstevel@tonic-gate /*	PENDIN	0x00004000		not posix, defined below */
2137c478bd9Sstevel@tonic-gate #define	IEXTEN	0x00008000
2147c478bd9Sstevel@tonic-gate 
2157c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
2167c478bd9Sstevel@tonic-gate #define	XCASE	0x00000004
2177c478bd9Sstevel@tonic-gate #define	ECHOCTL	0x00000200
2187c478bd9Sstevel@tonic-gate #define	ECHOPRT	0x00000400
2197c478bd9Sstevel@tonic-gate #define	ECHOKE	0x00000800
2207c478bd9Sstevel@tonic-gate #define	DEFECHO	0x00001000
2217c478bd9Sstevel@tonic-gate #define	FLUSHO	0x00002000
2227c478bd9Sstevel@tonic-gate #define	PENDIN	0x00004000
2237c478bd9Sstevel@tonic-gate #endif	/* !_POSIX_SOURCE */
2247c478bd9Sstevel@tonic-gate 
2257c478bd9Sstevel@tonic-gate #ifndef	_POSIX_SOURCE
2267c478bd9Sstevel@tonic-gate /*
2277c478bd9Sstevel@tonic-gate  * codes 1 through 5, not shown here, are old "termio" calls
2287c478bd9Sstevel@tonic-gate  */
229*5d54f3d8Smuffin #define	TCXONC		_IO('T', 6)
230*5d54f3d8Smuffin #define	TCFLSH		_IO('T', 7)
231*5d54f3d8Smuffin #define	TCGETS		_IOR('T', 8, struct termios)
232*5d54f3d8Smuffin #define	TCSETS		_IOW('T', 9, struct termios)
233*5d54f3d8Smuffin #define	TCSETSW		_IOW('T', 10, struct termios)
234*5d54f3d8Smuffin #define	TCSETSF		_IOW('T', 11, struct termios)
2357c478bd9Sstevel@tonic-gate #endif	/* !_POSIX_SOURCE */
2367c478bd9Sstevel@tonic-gate 
2377c478bd9Sstevel@tonic-gate #define	TCOOFF		0		/* arg to TCXONC & tcflow() */
2387c478bd9Sstevel@tonic-gate #define	TCOON		1		/* arg to TCXONC & tcflow() */
2397c478bd9Sstevel@tonic-gate #define	TCIOFF		2		/* arg to TCXONC & tcflow() */
2407c478bd9Sstevel@tonic-gate #define	TCION		3		/* arg to TCXONC & tcflow() */
2417c478bd9Sstevel@tonic-gate #define	TCIFLUSH	0		/* arg to TCFLSH & tcflush() */
2427c478bd9Sstevel@tonic-gate #define	TCOFLUSH	1		/* arg to TCFLSH & tcflush() */
2437c478bd9Sstevel@tonic-gate #define	TCIOFLUSH	2		/* arg to TCFLSH & tcflush() */
2447c478bd9Sstevel@tonic-gate #define	TCSANOW		0		/* arg to tcsetattr() */
2457c478bd9Sstevel@tonic-gate #define	TCSADRAIN	1		/* arg to tcsetattr() */
2467c478bd9Sstevel@tonic-gate #define	TCSAFLUSH	2		/* arg to tcsetattr() */
2477c478bd9Sstevel@tonic-gate 
2487c478bd9Sstevel@tonic-gate /*
2497c478bd9Sstevel@tonic-gate  * Ioctl control packet
2507c478bd9Sstevel@tonic-gate  */
2517c478bd9Sstevel@tonic-gate struct	termios {
2527c478bd9Sstevel@tonic-gate 	tcflag_t	c_iflag;	/* input modes */
2537c478bd9Sstevel@tonic-gate 	tcflag_t	c_oflag;	/* output modes */
2547c478bd9Sstevel@tonic-gate 	tcflag_t	c_cflag;	/* control modes */
2557c478bd9Sstevel@tonic-gate 	tcflag_t	c_lflag;	/* line discipline modes */
2567c478bd9Sstevel@tonic-gate 	char		c_line;		/* line discipline XXX */
2577c478bd9Sstevel@tonic-gate 	cc_t		c_cc[NCCS];	/* control chars */
2587c478bd9Sstevel@tonic-gate };
2597c478bd9Sstevel@tonic-gate 
2607c478bd9Sstevel@tonic-gate 
2617c478bd9Sstevel@tonic-gate #ifndef	KERNEL
2627c478bd9Sstevel@tonic-gate speed_t	cfgetispeed(/* struct termios *termios_p */);
2637c478bd9Sstevel@tonic-gate speed_t	cfgetospeed(/* struct termios *termios_p */);
2647c478bd9Sstevel@tonic-gate int	cfsetispeed(/* struct termios *termios_p, speed_t speed */);
2657c478bd9Sstevel@tonic-gate int	cfsetospeed(/* struct termios *termios_p, speed_t speed */);
2667c478bd9Sstevel@tonic-gate int	tcdrain(/* int fildes */);
2677c478bd9Sstevel@tonic-gate int	tcflow(/* int fildes, int action */);
2687c478bd9Sstevel@tonic-gate int	tcflush(/* int fildes, int queue_selector */);
2697c478bd9Sstevel@tonic-gate int	tcgetattr(/* int fildes, struct termios *termios_p */);
2707c478bd9Sstevel@tonic-gate int	tcsendbreak(/* int fildes, int duration */);
2717c478bd9Sstevel@tonic-gate int	tcsetattr(/* int fildes, int optional_actions, struct *termios_p */);
2727c478bd9Sstevel@tonic-gate #endif	/* !KERNEL */
2737c478bd9Sstevel@tonic-gate 
2747c478bd9Sstevel@tonic-gate #ifdef	__cplusplus
2757c478bd9Sstevel@tonic-gate }
2767c478bd9Sstevel@tonic-gate #endif
2777c478bd9Sstevel@tonic-gate 
2787c478bd9Sstevel@tonic-gate #endif	/* __SYS_TERMIOS_H */
279