10Sstevel@tonic-gate /* 20Sstevel@tonic-gate * CDDL HEADER START 30Sstevel@tonic-gate * 40Sstevel@tonic-gate * The contents of this file are subject to the terms of the 52712Snn35248 * Common Development and Distribution License (the "License"). 62712Snn35248 * You may not use this file except in compliance with the License. 70Sstevel@tonic-gate * 80Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 90Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 100Sstevel@tonic-gate * See the License for the specific language governing permissions 110Sstevel@tonic-gate * and limitations under the License. 120Sstevel@tonic-gate * 130Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 140Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 150Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 160Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 170Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 180Sstevel@tonic-gate * 190Sstevel@tonic-gate * CDDL HEADER END 200Sstevel@tonic-gate */ 210Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 220Sstevel@tonic-gate /* All Rights Reserved */ 230Sstevel@tonic-gate 240Sstevel@tonic-gate 250Sstevel@tonic-gate /* 26*12613SSurya.Prakki@Sun.COM * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. 270Sstevel@tonic-gate */ 280Sstevel@tonic-gate 290Sstevel@tonic-gate #ifndef _SYS_TERMIOS_H 300Sstevel@tonic-gate #define _SYS_TERMIOS_H 310Sstevel@tonic-gate 320Sstevel@tonic-gate #include <sys/feature_tests.h> 330Sstevel@tonic-gate 340Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 350Sstevel@tonic-gate #include <sys/ttydev.h> 360Sstevel@tonic-gate #include <sys/time.h> 370Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 380Sstevel@tonic-gate 390Sstevel@tonic-gate #include <sys/types.h> 400Sstevel@tonic-gate 410Sstevel@tonic-gate #ifdef __cplusplus 420Sstevel@tonic-gate extern "C" { 430Sstevel@tonic-gate #endif 440Sstevel@tonic-gate 450Sstevel@tonic-gate /* 460Sstevel@tonic-gate * _POSIX_VDISABLE has been defined in <sys/termios.h> since the 470Sstevel@tonic-gate * introduction of the header. The POSIX standard, IEEE Std. 480Sstevel@tonic-gate * 1003.1-1988 also required the existence of _POSIX_VDISABLE in 490Sstevel@tonic-gate * this header. Subsequent versions of the IEEE Standard as well 500Sstevel@tonic-gate * as the X/Open specifications required that _POSIX_VDISABLE be 510Sstevel@tonic-gate * defined in <unistd.h> while still allowing for it's existence 520Sstevel@tonic-gate * here. With the introduction of XPG6, _POSIX_VDISABLE can only 530Sstevel@tonic-gate * be defined in <unistd.h>. 540Sstevel@tonic-gate */ 550Sstevel@tonic-gate #if !defined(_XPG6) || defined(__EXTENSIONS__) 560Sstevel@tonic-gate #ifndef _POSIX_VDISABLE 570Sstevel@tonic-gate #define _POSIX_VDISABLE 0 /* Disable special character functions */ 580Sstevel@tonic-gate #endif 590Sstevel@tonic-gate #endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */ 600Sstevel@tonic-gate 610Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 620Sstevel@tonic-gate #define CTRL(c) ((c)&037) 630Sstevel@tonic-gate #define IBSHIFT 16 640Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 650Sstevel@tonic-gate 660Sstevel@tonic-gate /* required by termio.h and VCEOF/VCEOL */ 670Sstevel@tonic-gate #define _NCC 8 680Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 690Sstevel@tonic-gate #define NCC _NCC 700Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 710Sstevel@tonic-gate 720Sstevel@tonic-gate /* some defines required by POSIX */ 730Sstevel@tonic-gate #define NCCS 19 740Sstevel@tonic-gate 750Sstevel@tonic-gate /* 760Sstevel@tonic-gate * types defined by POSIX. These are better off in types.h, but 770Sstevel@tonic-gate * the standard says that they have to be in termios.h. 780Sstevel@tonic-gate */ 790Sstevel@tonic-gate typedef unsigned int tcflag_t; 800Sstevel@tonic-gate typedef unsigned char cc_t; 810Sstevel@tonic-gate typedef unsigned int speed_t; 820Sstevel@tonic-gate 830Sstevel@tonic-gate /* 840Sstevel@tonic-gate * Ioctl control packet 850Sstevel@tonic-gate */ 860Sstevel@tonic-gate struct termios { 870Sstevel@tonic-gate tcflag_t c_iflag; /* input modes */ 880Sstevel@tonic-gate tcflag_t c_oflag; /* output modes */ 890Sstevel@tonic-gate tcflag_t c_cflag; /* control modes */ 900Sstevel@tonic-gate tcflag_t c_lflag; /* line discipline modes */ 910Sstevel@tonic-gate cc_t c_cc[NCCS]; /* control chars */ 920Sstevel@tonic-gate }; 930Sstevel@tonic-gate 940Sstevel@tonic-gate /* 950Sstevel@tonic-gate * POSIX termios functions 960Sstevel@tonic-gate * These functions get mapped into ioctls. 970Sstevel@tonic-gate */ 980Sstevel@tonic-gate 990Sstevel@tonic-gate #ifndef _KERNEL 1000Sstevel@tonic-gate 1010Sstevel@tonic-gate #if defined(__STDC__) 1020Sstevel@tonic-gate 1030Sstevel@tonic-gate extern speed_t cfgetospeed(const struct termios *); 1040Sstevel@tonic-gate extern int cfsetospeed(struct termios *, speed_t); 1050Sstevel@tonic-gate extern speed_t cfgetispeed(const struct termios *); 1060Sstevel@tonic-gate extern int cfsetispeed(struct termios *, speed_t); 1070Sstevel@tonic-gate extern int tcgetattr(int, struct termios *); 1080Sstevel@tonic-gate extern int tcsetattr(int, int, const struct termios *); 1090Sstevel@tonic-gate extern int tcsendbreak(int, int); 1100Sstevel@tonic-gate extern int tcdrain(int); 1110Sstevel@tonic-gate extern int tcflush(int, int); 1120Sstevel@tonic-gate extern int tcflow(int, int); 1130Sstevel@tonic-gate 1140Sstevel@tonic-gate #else 1150Sstevel@tonic-gate 1160Sstevel@tonic-gate extern speed_t cfgetospeed(); 1170Sstevel@tonic-gate extern int cfsetospeed(); 1180Sstevel@tonic-gate extern speed_t cfgetispeed(); 1190Sstevel@tonic-gate extern int cfsetispeed(); 1200Sstevel@tonic-gate extern int tcgetattr(); 1210Sstevel@tonic-gate extern int tcsetattr(); 1220Sstevel@tonic-gate extern int tcsendbreak(); 1230Sstevel@tonic-gate extern int tcdrain(); 1240Sstevel@tonic-gate extern int tcflush(); 1250Sstevel@tonic-gate extern int tcflow(); 1260Sstevel@tonic-gate 1270Sstevel@tonic-gate #endif /* __STDC__ */ 1280Sstevel@tonic-gate 1290Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__) 1300Sstevel@tonic-gate 1310Sstevel@tonic-gate #if defined(__STDC__) 1320Sstevel@tonic-gate extern pid_t tcgetsid(int); 1330Sstevel@tonic-gate #else 1340Sstevel@tonic-gate extern pid_t tcgetsid(); 1350Sstevel@tonic-gate #endif /* __STDC__ */ 1360Sstevel@tonic-gate 1370Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) ... */ 1380Sstevel@tonic-gate 1390Sstevel@tonic-gate #endif 1400Sstevel@tonic-gate 1410Sstevel@tonic-gate /* control characters */ 1420Sstevel@tonic-gate #define VINTR 0 1430Sstevel@tonic-gate #define VQUIT 1 1440Sstevel@tonic-gate #define VERASE 2 1450Sstevel@tonic-gate #define VKILL 3 1460Sstevel@tonic-gate #define VEOF 4 1470Sstevel@tonic-gate #define VEOL 5 1480Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 1490Sstevel@tonic-gate #define VEOL2 6 1500Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 1510Sstevel@tonic-gate #define VMIN 4 1520Sstevel@tonic-gate #define VTIME 5 1530Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 1540Sstevel@tonic-gate #define VSWTCH 7 1550Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 1560Sstevel@tonic-gate #define VSTART 8 1570Sstevel@tonic-gate #define VSTOP 9 1580Sstevel@tonic-gate #define VSUSP 10 1590Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 1600Sstevel@tonic-gate #define VDSUSP 11 1610Sstevel@tonic-gate #define VREPRINT 12 1620Sstevel@tonic-gate #define VDISCARD 13 1630Sstevel@tonic-gate #define VWERASE 14 1640Sstevel@tonic-gate #define VLNEXT 15 1650Sstevel@tonic-gate /* 16 thru 19 reserved for future use */ 1660Sstevel@tonic-gate 1670Sstevel@tonic-gate /* 1680Sstevel@tonic-gate * control characters form Xenix termio.h 1690Sstevel@tonic-gate */ 1700Sstevel@tonic-gate #define VCEOF NCC /* RESERVED true EOF char (V7 compatability) */ 1710Sstevel@tonic-gate #define VCEOL (NCC + 1) /* RESERVED true EOL char */ 1720Sstevel@tonic-gate 1730Sstevel@tonic-gate #define CNUL 0 1740Sstevel@tonic-gate #define CDEL 0177 1750Sstevel@tonic-gate 1760Sstevel@tonic-gate /* S5 default control chars */ 1770Sstevel@tonic-gate /* CINTR, CERASE and CKILL modified to SunOS traditional values */ 1780Sstevel@tonic-gate #define CESC '\\' 1790Sstevel@tonic-gate #define CINTR CTRL('c') 1800Sstevel@tonic-gate #define CQUIT 034 /* FS, cntl | */ 1810Sstevel@tonic-gate #define CERASE 0177 /* DEL */ 1820Sstevel@tonic-gate #define CKILL CTRL('u') 1830Sstevel@tonic-gate #define CEOT 04 1840Sstevel@tonic-gate #define CEOL 0 1850Sstevel@tonic-gate #define CEOL2 0 1860Sstevel@tonic-gate #define CEOF 04 /* cntl d */ 1870Sstevel@tonic-gate #define CSTART 021 /* cntl q */ 1880Sstevel@tonic-gate #define CSTOP 023 /* cntl s */ 1890Sstevel@tonic-gate #define CSWTCH 032 /* cntl z */ 1900Sstevel@tonic-gate #define CNSWTCH 0 1910Sstevel@tonic-gate #define CSUSP CTRL('z') 1920Sstevel@tonic-gate #define CDSUSP CTRL('y') 1930Sstevel@tonic-gate #define CRPRNT CTRL('r') 1940Sstevel@tonic-gate #define CFLUSH CTRL('o') 1950Sstevel@tonic-gate #define CWERASE CTRL('w') 1960Sstevel@tonic-gate #define CLNEXT CTRL('v') 1970Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 1980Sstevel@tonic-gate 1990Sstevel@tonic-gate 2000Sstevel@tonic-gate /* input modes */ 2010Sstevel@tonic-gate #define IGNBRK 0000001 2020Sstevel@tonic-gate #define BRKINT 0000002 2030Sstevel@tonic-gate #define IGNPAR 0000004 2040Sstevel@tonic-gate #define PARMRK 0000010 2050Sstevel@tonic-gate #define INPCK 0000020 2060Sstevel@tonic-gate #define ISTRIP 0000040 2070Sstevel@tonic-gate #define INLCR 0000100 2080Sstevel@tonic-gate #define IGNCR 0000200 2090Sstevel@tonic-gate #define ICRNL 0000400 2100Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || \ 2110Sstevel@tonic-gate (defined(_XOPEN_SOURCE) && !defined(_XPG6)) || \ 2120Sstevel@tonic-gate defined(__EXTENSIONS__) 2130Sstevel@tonic-gate #define IUCLC 0001000 2140Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2150Sstevel@tonic-gate #define IXON 0002000 2160Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 2170Sstevel@tonic-gate defined(__EXTENSIONS__) 2180Sstevel@tonic-gate #define IXANY 0004000 2190Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2200Sstevel@tonic-gate #define IXOFF 0010000 2210Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2220Sstevel@tonic-gate #define IMAXBEL 0020000 2230Sstevel@tonic-gate #define DOSMODE 0100000 /* for 386 compatibility */ 2240Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2250Sstevel@tonic-gate 2260Sstevel@tonic-gate /* output modes */ 2270Sstevel@tonic-gate #define OPOST 0000001 2280Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 2290Sstevel@tonic-gate defined(__EXTENSIONS__) 2300Sstevel@tonic-gate #if !defined(_XPG6) || defined(__EXTENSIONS__) 2310Sstevel@tonic-gate #define OLCUC 0000002 2320Sstevel@tonic-gate #endif 2330Sstevel@tonic-gate #define ONLCR 0000004 2340Sstevel@tonic-gate #define OCRNL 0000010 2350Sstevel@tonic-gate #define ONOCR 0000020 2360Sstevel@tonic-gate #define ONLRET 0000040 2370Sstevel@tonic-gate #define OFILL 0000100 2380Sstevel@tonic-gate #define OFDEL 0000200 2390Sstevel@tonic-gate #define NLDLY 0000400 2400Sstevel@tonic-gate #define NL0 0 2410Sstevel@tonic-gate #define NL1 0000400 2420Sstevel@tonic-gate #define CRDLY 0003000 2430Sstevel@tonic-gate #define CR0 0 2440Sstevel@tonic-gate #define CR1 0001000 2450Sstevel@tonic-gate #define CR2 0002000 2460Sstevel@tonic-gate #define CR3 0003000 2470Sstevel@tonic-gate #define TABDLY 0014000 2480Sstevel@tonic-gate #define TAB0 0 2490Sstevel@tonic-gate #define TAB1 0004000 2500Sstevel@tonic-gate #define TAB2 0010000 2510Sstevel@tonic-gate #define TAB3 0014000 2520Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2530Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2540Sstevel@tonic-gate #define XTABS 0014000 2550Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2560Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 2570Sstevel@tonic-gate defined(__EXTENSIONS__) 2580Sstevel@tonic-gate #define BSDLY 0020000 2590Sstevel@tonic-gate #define BS0 0 2600Sstevel@tonic-gate #define BS1 0020000 2610Sstevel@tonic-gate #define VTDLY 0040000 2620Sstevel@tonic-gate #define VT0 0 2630Sstevel@tonic-gate #define VT1 0040000 2640Sstevel@tonic-gate #define FFDLY 0100000 2650Sstevel@tonic-gate #define FF0 0 2660Sstevel@tonic-gate #define FF1 0100000 2670Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2680Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2690Sstevel@tonic-gate #define PAGEOUT 0200000 2700Sstevel@tonic-gate #define WRAP 0400000 2710Sstevel@tonic-gate 2720Sstevel@tonic-gate /* control modes */ 2730Sstevel@tonic-gate #define CBAUD 0000017 2740Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2750Sstevel@tonic-gate #define CSIZE 0000060 2760Sstevel@tonic-gate #define CS5 0 2770Sstevel@tonic-gate #define CS6 0000020 2780Sstevel@tonic-gate #define CS7 0000040 2790Sstevel@tonic-gate #define CS8 0000060 2800Sstevel@tonic-gate #define CSTOPB 0000100 2810Sstevel@tonic-gate #define CREAD 0000200 2820Sstevel@tonic-gate #define PARENB 0000400 2830Sstevel@tonic-gate #define PARODD 0001000 2840Sstevel@tonic-gate #define HUPCL 0002000 2850Sstevel@tonic-gate #define CLOCAL 0004000 2860Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2870Sstevel@tonic-gate #define RCV1EN 0010000 2880Sstevel@tonic-gate #define XMT1EN 0020000 2890Sstevel@tonic-gate #define LOBLK 0040000 2900Sstevel@tonic-gate #define XCLUDE 0100000 /* *V7* exclusive use coming fron XENIX */ 2910Sstevel@tonic-gate #define CRTSXOFF 010000000000 2920Sstevel@tonic-gate #define CRTSCTS 020000000000 2930Sstevel@tonic-gate #define CIBAUD 03600000 2940Sstevel@tonic-gate #define PAREXT 04000000 2950Sstevel@tonic-gate #define CBAUDEXT 010000000 2960Sstevel@tonic-gate #define CIBAUDEXT 020000000 2970Sstevel@tonic-gate 2980Sstevel@tonic-gate /* 2990Sstevel@tonic-gate * 4.4BSD hardware flow control flags 3000Sstevel@tonic-gate */ 3010Sstevel@tonic-gate #define CRTS_IFLOW 010000000000 3020Sstevel@tonic-gate #define CCTS_OFLOW 020000000000 3030Sstevel@tonic-gate 3040Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3050Sstevel@tonic-gate 3060Sstevel@tonic-gate /* line discipline 0 modes */ 3070Sstevel@tonic-gate #define ISIG 0000001 3080Sstevel@tonic-gate #define ICANON 0000002 3090Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || \ 3100Sstevel@tonic-gate (defined(_XOPEN_SOURCE) && !defined(_XPG6)) || \ 3110Sstevel@tonic-gate defined(__EXTENSIONS__) 3120Sstevel@tonic-gate #define XCASE 0000004 3130Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 3140Sstevel@tonic-gate #define ECHO 0000010 3150Sstevel@tonic-gate #define ECHOE 0000020 3160Sstevel@tonic-gate #define ECHOK 0000040 3170Sstevel@tonic-gate #define ECHONL 0000100 3180Sstevel@tonic-gate #define NOFLSH 0000200 3190Sstevel@tonic-gate #define TOSTOP 0000400 3200Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3210Sstevel@tonic-gate #define ECHOCTL 0001000 3220Sstevel@tonic-gate #define ECHOPRT 0002000 3230Sstevel@tonic-gate #define ECHOKE 0004000 3240Sstevel@tonic-gate #define DEFECHO 0010000 3250Sstevel@tonic-gate #define FLUSHO 0020000 3260Sstevel@tonic-gate #define PENDIN 0040000 3270Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3280Sstevel@tonic-gate 3290Sstevel@tonic-gate #define IEXTEN 0100000 /* POSIX flag - enable POSIX extensions */ 3300Sstevel@tonic-gate #define _TIOC ('T'<<8) 3310Sstevel@tonic-gate 3320Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3330Sstevel@tonic-gate 3340Sstevel@tonic-gate #define TIOC _TIOC 3350Sstevel@tonic-gate 3360Sstevel@tonic-gate #define TCGETA (_TIOC|1) 3370Sstevel@tonic-gate #define TCSETA (_TIOC|2) 3380Sstevel@tonic-gate #define TCSETAW (_TIOC|3) 3390Sstevel@tonic-gate #define TCSETAF (_TIOC|4) 3400Sstevel@tonic-gate #define TCSBRK (_TIOC|5) 3410Sstevel@tonic-gate #define TCXONC (_TIOC|6) 3420Sstevel@tonic-gate #define TCFLSH (_TIOC|7) 3430Sstevel@tonic-gate 3440Sstevel@tonic-gate /* Slots reserved for 386/XENIX compatibility - keyboard control */ 3450Sstevel@tonic-gate 3460Sstevel@tonic-gate #define TIOCKBON (_TIOC|8) 3470Sstevel@tonic-gate #define TIOCKBOF (_TIOC|9) 3480Sstevel@tonic-gate #define KBENABLED (_TIOC|10) 3490Sstevel@tonic-gate 3500Sstevel@tonic-gate #ifndef IOCTYPE 3510Sstevel@tonic-gate #define IOCTYPE 0xff00 3520Sstevel@tonic-gate #endif 3530Sstevel@tonic-gate 3540Sstevel@tonic-gate #define TCDSET (_TIOC|32) 3550Sstevel@tonic-gate #define RTS_TOG (_TIOC|33) /* 386 - "RTS" toggle define 8A1 protocol */ 3560Sstevel@tonic-gate 3570Sstevel@tonic-gate #define TIOCGWINSZ (_TIOC|104) 3580Sstevel@tonic-gate #define TIOCSWINSZ (_TIOC|103) 3590Sstevel@tonic-gate 3600Sstevel@tonic-gate /* 3610Sstevel@tonic-gate * Softcarrier ioctls 3620Sstevel@tonic-gate */ 3630Sstevel@tonic-gate #define TIOCGSOFTCAR (_TIOC|105) 3640Sstevel@tonic-gate #define TIOCSSOFTCAR (_TIOC|106) 3650Sstevel@tonic-gate 3660Sstevel@tonic-gate 3670Sstevel@tonic-gate /* termios ioctls */ 3680Sstevel@tonic-gate 3690Sstevel@tonic-gate #define TCGETS (_TIOC|13) 3700Sstevel@tonic-gate #define TCSETS (_TIOC|14) 3710Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3720Sstevel@tonic-gate #define TCSANOW (_TIOC|14) /* same as TCSETS */ 3730Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3740Sstevel@tonic-gate #define TCSETSW (_TIOC|15) 3750Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3760Sstevel@tonic-gate #define TCSADRAIN (_TIOC|15) /* same as TCSETSW */ 3770Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3780Sstevel@tonic-gate #define TCSETSF (_TIOC|16) 3790Sstevel@tonic-gate 3800Sstevel@tonic-gate /* 3810Sstevel@tonic-gate * NTP PPS ioctls 3820Sstevel@tonic-gate */ 3830Sstevel@tonic-gate #define TIOCGPPS (_TIOC|125) 3840Sstevel@tonic-gate #define TIOCSPPS (_TIOC|126) 3850Sstevel@tonic-gate #define TIOCGPPSEV (_TIOC|127) 3860Sstevel@tonic-gate 3870Sstevel@tonic-gate /* Argument filled in by TIOCGPPSEV */ 3880Sstevel@tonic-gate struct ppsclockev { 3890Sstevel@tonic-gate struct timeval tv; 3900Sstevel@tonic-gate uint_t serial; 3910Sstevel@tonic-gate }; 3920Sstevel@tonic-gate 3930Sstevel@tonic-gate #if defined(_SYSCALL32) 3940Sstevel@tonic-gate struct ppsclockev32 { 3950Sstevel@tonic-gate struct timeval32 tv; 3960Sstevel@tonic-gate uint32_t serial; 3970Sstevel@tonic-gate }; 3980Sstevel@tonic-gate #endif /* _SYSCALL32 */ 3990Sstevel@tonic-gate 4000Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 4010Sstevel@tonic-gate 4020Sstevel@tonic-gate #define TCSAFLUSH (_TIOC|16) /* same as TCSETSF */ 4030Sstevel@tonic-gate 4040Sstevel@tonic-gate /* termios option flags */ 4050Sstevel@tonic-gate 4060Sstevel@tonic-gate #define TCIFLUSH 0 /* flush data received but not read */ 4070Sstevel@tonic-gate #define TCOFLUSH 1 /* flush data written but not transmitted */ 4080Sstevel@tonic-gate #define TCIOFLUSH 2 /* flush both data both input and output queues */ 4090Sstevel@tonic-gate 4100Sstevel@tonic-gate #define TCOOFF 0 /* suspend output */ 4110Sstevel@tonic-gate #define TCOON 1 /* restart suspended output */ 4120Sstevel@tonic-gate #define TCIOFF 2 /* suspend input */ 4130Sstevel@tonic-gate #define TCION 3 /* restart suspended input */ 4140Sstevel@tonic-gate 4150Sstevel@tonic-gate /* TIOC ioctls for BSD, ptys, job control and modem control */ 4160Sstevel@tonic-gate 4170Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 4180Sstevel@tonic-gate #define tIOC ('t'<<8) 4190Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 4200Sstevel@tonic-gate 4210Sstevel@tonic-gate /* Slots for 386/XENIX compatibility */ 4220Sstevel@tonic-gate /* BSD includes these ioctls in ttold.h */ 4230Sstevel@tonic-gate 4240Sstevel@tonic-gate #ifndef _SYS_TTOLD_H 4250Sstevel@tonic-gate 4260Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 4270Sstevel@tonic-gate #define TIOCGETD (tIOC|0) 4280Sstevel@tonic-gate #define TIOCSETD (tIOC|1) 4290Sstevel@tonic-gate #define TIOCHPCL (tIOC|2) 4300Sstevel@tonic-gate #define TIOCGETP (tIOC|8) 4310Sstevel@tonic-gate #define TIOCSETP (tIOC|9) 4320Sstevel@tonic-gate #define TIOCSETN (tIOC|10) 4330Sstevel@tonic-gate #define TIOCEXCL (tIOC|13) 4340Sstevel@tonic-gate #define TIOCNXCL (tIOC|14) 4350Sstevel@tonic-gate #define TIOCFLUSH (tIOC|16) 4360Sstevel@tonic-gate #define TIOCSETC (tIOC|17) 4370Sstevel@tonic-gate #define TIOCGETC (tIOC|18) 4380Sstevel@tonic-gate /* 4390Sstevel@tonic-gate * BSD ioctls that are not the same as XENIX are included here. 4400Sstevel@tonic-gate * There are also some relevant ioctls from SUN/BSD sys/ttycom.h 4410Sstevel@tonic-gate * BSD pty ioctls like TIOCPKT are not supported in SVR4. 4420Sstevel@tonic-gate */ 4430Sstevel@tonic-gate 4440Sstevel@tonic-gate #define TIOCLBIS (tIOC|127) /* bis local mode bits */ 4450Sstevel@tonic-gate #define TIOCLBIC (tIOC|126) /* bic local mode bits */ 4460Sstevel@tonic-gate #define TIOCLSET (tIOC|125) /* set entire local mode word */ 4470Sstevel@tonic-gate #define TIOCLGET (tIOC|124) /* get local modes */ 4480Sstevel@tonic-gate #define TIOCSBRK (tIOC|123) /* set break bit */ 4490Sstevel@tonic-gate #define TIOCCBRK (tIOC|122) /* clear break bit */ 4500Sstevel@tonic-gate #define TIOCSDTR (tIOC|121) /* set data terminal ready */ 4510Sstevel@tonic-gate #define TIOCCDTR (tIOC|120) /* clear data terminal ready */ 4520Sstevel@tonic-gate #define TIOCSLTC (tIOC|117) /* set local special chars */ 4530Sstevel@tonic-gate #define TIOCGLTC (tIOC|116) /* get local special chars */ 4540Sstevel@tonic-gate #define TIOCOUTQ (tIOC|115) /* driver output queue size */ 4550Sstevel@tonic-gate #define TIOCNOTTY (tIOC|113) /* void tty association */ 4562712Snn35248 #define TIOCSCTTY (tIOC|132) /* get a ctty */ 4570Sstevel@tonic-gate #define TIOCSTOP (tIOC|111) /* stop output, like ^S */ 4580Sstevel@tonic-gate #define TIOCSTART (tIOC|110) /* start output, like ^Q */ 4590Sstevel@tonic-gate #define TIOCSILOOP (tIOC|109) /* private to Sun; do not use */ 4609354STim.Marsland@Sun.COM #define TIOCCILOOP (tIOC|108) /* private to Sun; do not use */ 4610Sstevel@tonic-gate 4620Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 4630Sstevel@tonic-gate 4640Sstevel@tonic-gate #endif /* end _SYS_TTOLD_H */ 4650Sstevel@tonic-gate 4660Sstevel@tonic-gate /* POSIX job control ioctls */ 4670Sstevel@tonic-gate 4680Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 4690Sstevel@tonic-gate #define TIOCGPGRP (tIOC|20) /* get pgrp of tty */ 4700Sstevel@tonic-gate #define TIOCSPGRP (tIOC|21) /* set pgrp of tty */ 4710Sstevel@tonic-gate #define TIOCGSID (tIOC|22) /* get session id on ctty */ 4720Sstevel@tonic-gate 4730Sstevel@tonic-gate /* Miscellaneous */ 4740Sstevel@tonic-gate #define TIOCSTI (tIOC|23) /* simulate terminal input */ 4750Sstevel@tonic-gate 4760Sstevel@tonic-gate /* Modem control */ 4770Sstevel@tonic-gate #define TIOCMSET (tIOC|26) /* set all modem bits */ 4780Sstevel@tonic-gate #define TIOCMBIS (tIOC|27) /* bis modem bits */ 4790Sstevel@tonic-gate #define TIOCMBIC (tIOC|28) /* bic modem bits */ 4800Sstevel@tonic-gate #define TIOCMGET (tIOC|29) /* get all modem bits */ 4810Sstevel@tonic-gate #define TIOCM_LE 0001 /* line enable */ 4820Sstevel@tonic-gate #define TIOCM_DTR 0002 /* data terminal ready */ 4830Sstevel@tonic-gate #define TIOCM_RTS 0004 /* request to send */ 4840Sstevel@tonic-gate #define TIOCM_ST 0010 /* secondary transmit */ 4850Sstevel@tonic-gate #define TIOCM_SR 0020 /* secondary receive */ 4860Sstevel@tonic-gate #define TIOCM_CTS 0040 /* clear to send */ 4870Sstevel@tonic-gate #define TIOCM_CAR 0100 /* carrier detect */ 4880Sstevel@tonic-gate #define TIOCM_CD TIOCM_CAR 4890Sstevel@tonic-gate #define TIOCM_RNG 0200 /* ring */ 4900Sstevel@tonic-gate #define TIOCM_RI TIOCM_RNG 4910Sstevel@tonic-gate #define TIOCM_DSR 0400 /* data set ready */ 4920Sstevel@tonic-gate 4930Sstevel@tonic-gate /* pseudo-tty */ 4940Sstevel@tonic-gate 4950Sstevel@tonic-gate #define TIOCREMOTE (tIOC|30) /* remote input editing */ 4960Sstevel@tonic-gate #define TIOCSIGNAL (tIOC|31) /* pty: send signal to slave */ 4970Sstevel@tonic-gate 4980Sstevel@tonic-gate 4990Sstevel@tonic-gate /* Some more 386 xenix stuff */ 5000Sstevel@tonic-gate 5010Sstevel@tonic-gate #define LDIOC ('D'<<8) 5020Sstevel@tonic-gate 5030Sstevel@tonic-gate #define LDOPEN (LDIOC|0) 5040Sstevel@tonic-gate #define LDCLOSE (LDIOC|1) 5050Sstevel@tonic-gate #define LDCHG (LDIOC|2) 5060Sstevel@tonic-gate #define LDGETT (LDIOC|8) 5070Sstevel@tonic-gate #define LDSETT (LDIOC|9) 5080Sstevel@tonic-gate 5090Sstevel@tonic-gate /* Slots for 386 compatibility */ 5100Sstevel@tonic-gate 5110Sstevel@tonic-gate #define LDSMAP (LDIOC|110) 5120Sstevel@tonic-gate #define LDGMAP (LDIOC|111) 5130Sstevel@tonic-gate #define LDNMAP (LDIOC|112) 5140Sstevel@tonic-gate #define LDEMAP (LDIOC|113) 5150Sstevel@tonic-gate #define LDDMAP (LDIOC|114) 5160Sstevel@tonic-gate 5170Sstevel@tonic-gate /* 5180Sstevel@tonic-gate * These are retained for 386/XENIX compatibility. 5190Sstevel@tonic-gate */ 5200Sstevel@tonic-gate 5210Sstevel@tonic-gate #define DIOC ('d'<<8) 5220Sstevel@tonic-gate #define DIOCGETP (DIOC|8) /* V7 */ 5230Sstevel@tonic-gate #define DIOCSETP (DIOC|9) /* V7 */ 5240Sstevel@tonic-gate 5250Sstevel@tonic-gate /* 5260Sstevel@tonic-gate * Returns a non-zero value if there 5270Sstevel@tonic-gate * are characters in the input queue. 5280Sstevel@tonic-gate * 5290Sstevel@tonic-gate * XXX - somebody is confused here. V7 had no such "ioctl", although XENIX may 5300Sstevel@tonic-gate * have added it; 4BSD had FIONREAD, which returned the number of characters 5310Sstevel@tonic-gate * waiting, and was supposed to work on all descriptors (i.e., every driver 5320Sstevel@tonic-gate * should make a stab at implementing it). 5330Sstevel@tonic-gate */ 5340Sstevel@tonic-gate #define FIORDCHK (('f'<<8)|3) /* V7 */ 5350Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 5360Sstevel@tonic-gate 5370Sstevel@tonic-gate /* 5380Sstevel@tonic-gate * Speeds 5390Sstevel@tonic-gate */ 5400Sstevel@tonic-gate #define B0 0 5410Sstevel@tonic-gate #define B50 1 5420Sstevel@tonic-gate #define B75 2 5430Sstevel@tonic-gate #define B110 3 5440Sstevel@tonic-gate #define B134 4 5450Sstevel@tonic-gate #define B150 5 5460Sstevel@tonic-gate #define B200 6 5470Sstevel@tonic-gate #define B300 7 5480Sstevel@tonic-gate #define B600 8 5490Sstevel@tonic-gate #define B1200 9 5500Sstevel@tonic-gate #define B1800 10 5510Sstevel@tonic-gate #define B2400 11 5520Sstevel@tonic-gate #define B4800 12 5530Sstevel@tonic-gate #define B9600 13 5540Sstevel@tonic-gate #define B19200 14 5550Sstevel@tonic-gate #define B38400 15 5560Sstevel@tonic-gate #define B57600 16 5570Sstevel@tonic-gate #define B76800 17 5580Sstevel@tonic-gate #define B115200 18 5590Sstevel@tonic-gate #define B153600 19 5600Sstevel@tonic-gate #define B230400 20 5610Sstevel@tonic-gate #define B307200 21 5620Sstevel@tonic-gate #define B460800 22 5639354STim.Marsland@Sun.COM #define B921600 23 5640Sstevel@tonic-gate 5650Sstevel@tonic-gate #ifndef _SYS_TTOLD_H 5660Sstevel@tonic-gate 5670Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 5680Sstevel@tonic-gate /* Windowing structure to support JWINSIZE/TIOCSWINSZ/TIOCGWINSZ */ 5690Sstevel@tonic-gate struct winsize { 5700Sstevel@tonic-gate unsigned short ws_row; /* rows, in characters */ 5710Sstevel@tonic-gate unsigned short ws_col; /* columns, in character */ 5720Sstevel@tonic-gate unsigned short ws_xpixel; /* horizontal size, pixels */ 5730Sstevel@tonic-gate unsigned short ws_ypixel; /* vertical size, pixels */ 5740Sstevel@tonic-gate }; 5750Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 5760Sstevel@tonic-gate 5770Sstevel@tonic-gate #endif /* end _SYS_TTOLD_H */ 5780Sstevel@tonic-gate 5790Sstevel@tonic-gate #ifdef __cplusplus 5800Sstevel@tonic-gate } 5810Sstevel@tonic-gate #endif 5820Sstevel@tonic-gate 5830Sstevel@tonic-gate #endif /* _SYS_TERMIOS_H */ 584