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 59acbbeafSnn35248 * Common Development and Distribution License (the "License"). 69acbbeafSnn35248 * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 217c478bd9Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 227c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 237c478bd9Sstevel@tonic-gate 247c478bd9Sstevel@tonic-gate 257c478bd9Sstevel@tonic-gate /* 26*ba3594baSGarrett D'Amore * Copyright 2014 Garrett D'Amore <garrett@damore.org> 27*ba3594baSGarrett D'Amore * 28eb5a5c78SSurya Prakki * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. 297c478bd9Sstevel@tonic-gate */ 307c478bd9Sstevel@tonic-gate 317c478bd9Sstevel@tonic-gate #ifndef _SYS_TERMIOS_H 327c478bd9Sstevel@tonic-gate #define _SYS_TERMIOS_H 337c478bd9Sstevel@tonic-gate 347c478bd9Sstevel@tonic-gate #include <sys/feature_tests.h> 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 377c478bd9Sstevel@tonic-gate #include <sys/ttydev.h> 387c478bd9Sstevel@tonic-gate #include <sys/time.h> 397c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 407c478bd9Sstevel@tonic-gate 417c478bd9Sstevel@tonic-gate #include <sys/types.h> 427c478bd9Sstevel@tonic-gate 437c478bd9Sstevel@tonic-gate #ifdef __cplusplus 447c478bd9Sstevel@tonic-gate extern "C" { 457c478bd9Sstevel@tonic-gate #endif 467c478bd9Sstevel@tonic-gate 477c478bd9Sstevel@tonic-gate /* 487c478bd9Sstevel@tonic-gate * _POSIX_VDISABLE has been defined in <sys/termios.h> since the 497c478bd9Sstevel@tonic-gate * introduction of the header. The POSIX standard, IEEE Std. 507c478bd9Sstevel@tonic-gate * 1003.1-1988 also required the existence of _POSIX_VDISABLE in 517c478bd9Sstevel@tonic-gate * this header. Subsequent versions of the IEEE Standard as well 527c478bd9Sstevel@tonic-gate * as the X/Open specifications required that _POSIX_VDISABLE be 537c478bd9Sstevel@tonic-gate * defined in <unistd.h> while still allowing for it's existence 547c478bd9Sstevel@tonic-gate * here. With the introduction of XPG6, _POSIX_VDISABLE can only 557c478bd9Sstevel@tonic-gate * be defined in <unistd.h>. 567c478bd9Sstevel@tonic-gate */ 577c478bd9Sstevel@tonic-gate #if !defined(_XPG6) || defined(__EXTENSIONS__) 587c478bd9Sstevel@tonic-gate #ifndef _POSIX_VDISABLE 597c478bd9Sstevel@tonic-gate #define _POSIX_VDISABLE 0 /* Disable special character functions */ 607c478bd9Sstevel@tonic-gate #endif 617c478bd9Sstevel@tonic-gate #endif /* !defined(_XPG6) || defined(__EXTENSIONS__) */ 627c478bd9Sstevel@tonic-gate 637c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 647c478bd9Sstevel@tonic-gate #define CTRL(c) ((c)&037) 657c478bd9Sstevel@tonic-gate #define IBSHIFT 16 667c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 677c478bd9Sstevel@tonic-gate 687c478bd9Sstevel@tonic-gate /* required by termio.h and VCEOF/VCEOL */ 697c478bd9Sstevel@tonic-gate #define _NCC 8 707c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 717c478bd9Sstevel@tonic-gate #define NCC _NCC 727c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 737c478bd9Sstevel@tonic-gate 747c478bd9Sstevel@tonic-gate /* some defines required by POSIX */ 757c478bd9Sstevel@tonic-gate #define NCCS 19 767c478bd9Sstevel@tonic-gate 777c478bd9Sstevel@tonic-gate /* 787c478bd9Sstevel@tonic-gate * types defined by POSIX. These are better off in types.h, but 797c478bd9Sstevel@tonic-gate * the standard says that they have to be in termios.h. 807c478bd9Sstevel@tonic-gate */ 817c478bd9Sstevel@tonic-gate typedef unsigned int tcflag_t; 827c478bd9Sstevel@tonic-gate typedef unsigned char cc_t; 837c478bd9Sstevel@tonic-gate typedef unsigned int speed_t; 847c478bd9Sstevel@tonic-gate 857c478bd9Sstevel@tonic-gate /* 867c478bd9Sstevel@tonic-gate * Ioctl control packet 877c478bd9Sstevel@tonic-gate */ 887c478bd9Sstevel@tonic-gate struct termios { 897c478bd9Sstevel@tonic-gate tcflag_t c_iflag; /* input modes */ 907c478bd9Sstevel@tonic-gate tcflag_t c_oflag; /* output modes */ 917c478bd9Sstevel@tonic-gate tcflag_t c_cflag; /* control modes */ 927c478bd9Sstevel@tonic-gate tcflag_t c_lflag; /* line discipline modes */ 937c478bd9Sstevel@tonic-gate cc_t c_cc[NCCS]; /* control chars */ 947c478bd9Sstevel@tonic-gate }; 957c478bd9Sstevel@tonic-gate 967c478bd9Sstevel@tonic-gate /* 977c478bd9Sstevel@tonic-gate * POSIX termios functions 987c478bd9Sstevel@tonic-gate * These functions get mapped into ioctls. 997c478bd9Sstevel@tonic-gate */ 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gate #ifndef _KERNEL 1027c478bd9Sstevel@tonic-gate 1037c478bd9Sstevel@tonic-gate extern speed_t cfgetospeed(const struct termios *); 1047c478bd9Sstevel@tonic-gate extern int cfsetospeed(struct termios *, speed_t); 1057c478bd9Sstevel@tonic-gate extern speed_t cfgetispeed(const struct termios *); 1067c478bd9Sstevel@tonic-gate extern int cfsetispeed(struct termios *, speed_t); 1077c478bd9Sstevel@tonic-gate extern int tcgetattr(int, struct termios *); 1087c478bd9Sstevel@tonic-gate extern int tcsetattr(int, int, const struct termios *); 1097c478bd9Sstevel@tonic-gate extern int tcsendbreak(int, int); 1107c478bd9Sstevel@tonic-gate extern int tcdrain(int); 1117c478bd9Sstevel@tonic-gate extern int tcflush(int, int); 1127c478bd9Sstevel@tonic-gate extern int tcflow(int, int); 1137c478bd9Sstevel@tonic-gate 1147c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) || defined(__EXTENSIONS__) 1157c478bd9Sstevel@tonic-gate 1167c478bd9Sstevel@tonic-gate extern pid_t tcgetsid(int); 1177c478bd9Sstevel@tonic-gate 1187c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(_XPG4_2) ... */ 1197c478bd9Sstevel@tonic-gate 1207c478bd9Sstevel@tonic-gate #endif 1217c478bd9Sstevel@tonic-gate 1227c478bd9Sstevel@tonic-gate /* control characters */ 1237c478bd9Sstevel@tonic-gate #define VINTR 0 1247c478bd9Sstevel@tonic-gate #define VQUIT 1 1257c478bd9Sstevel@tonic-gate #define VERASE 2 1267c478bd9Sstevel@tonic-gate #define VKILL 3 1277c478bd9Sstevel@tonic-gate #define VEOF 4 1287c478bd9Sstevel@tonic-gate #define VEOL 5 1297c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 1307c478bd9Sstevel@tonic-gate #define VEOL2 6 1317c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 1327c478bd9Sstevel@tonic-gate #define VMIN 4 1337c478bd9Sstevel@tonic-gate #define VTIME 5 1347c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 1357c478bd9Sstevel@tonic-gate #define VSWTCH 7 1367c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 1377c478bd9Sstevel@tonic-gate #define VSTART 8 1387c478bd9Sstevel@tonic-gate #define VSTOP 9 1397c478bd9Sstevel@tonic-gate #define VSUSP 10 1407c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 1417c478bd9Sstevel@tonic-gate #define VDSUSP 11 1427c478bd9Sstevel@tonic-gate #define VREPRINT 12 1437c478bd9Sstevel@tonic-gate #define VDISCARD 13 1447c478bd9Sstevel@tonic-gate #define VWERASE 14 1457c478bd9Sstevel@tonic-gate #define VLNEXT 15 14619d32b9aSRobert Mustacchi #define VSTATUS 16 14719d32b9aSRobert Mustacchi /* 17 through 19 reserved for future use */ 1487c478bd9Sstevel@tonic-gate 1497c478bd9Sstevel@tonic-gate /* 1507c478bd9Sstevel@tonic-gate * control characters form Xenix termio.h 1517c478bd9Sstevel@tonic-gate */ 1527c478bd9Sstevel@tonic-gate #define VCEOF NCC /* RESERVED true EOF char (V7 compatability) */ 1537c478bd9Sstevel@tonic-gate #define VCEOL (NCC + 1) /* RESERVED true EOL char */ 1547c478bd9Sstevel@tonic-gate 1557c478bd9Sstevel@tonic-gate #define CNUL 0 1567c478bd9Sstevel@tonic-gate #define CDEL 0177 1577c478bd9Sstevel@tonic-gate 1587c478bd9Sstevel@tonic-gate /* S5 default control chars */ 1597c478bd9Sstevel@tonic-gate /* CINTR, CERASE and CKILL modified to SunOS traditional values */ 1607c478bd9Sstevel@tonic-gate #define CESC '\\' 1617c478bd9Sstevel@tonic-gate #define CINTR CTRL('c') 1627c478bd9Sstevel@tonic-gate #define CQUIT 034 /* FS, cntl | */ 1637c478bd9Sstevel@tonic-gate #define CERASE 0177 /* DEL */ 1647c478bd9Sstevel@tonic-gate #define CKILL CTRL('u') 1657c478bd9Sstevel@tonic-gate #define CEOT 04 1667c478bd9Sstevel@tonic-gate #define CEOL 0 1677c478bd9Sstevel@tonic-gate #define CEOL2 0 1687c478bd9Sstevel@tonic-gate #define CEOF 04 /* cntl d */ 1697c478bd9Sstevel@tonic-gate #define CSTART 021 /* cntl q */ 1707c478bd9Sstevel@tonic-gate #define CSTOP 023 /* cntl s */ 1717c478bd9Sstevel@tonic-gate #define CSWTCH 032 /* cntl z */ 1727c478bd9Sstevel@tonic-gate #define CNSWTCH 0 1737c478bd9Sstevel@tonic-gate #define CSUSP CTRL('z') 1747c478bd9Sstevel@tonic-gate #define CDSUSP CTRL('y') 1757c478bd9Sstevel@tonic-gate #define CRPRNT CTRL('r') 1767c478bd9Sstevel@tonic-gate #define CFLUSH CTRL('o') 1777c478bd9Sstevel@tonic-gate #define CWERASE CTRL('w') 1787c478bd9Sstevel@tonic-gate #define CLNEXT CTRL('v') 17919d32b9aSRobert Mustacchi #define CSTATUS CTRL('t') 1807c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 1817c478bd9Sstevel@tonic-gate 1827c478bd9Sstevel@tonic-gate 1837c478bd9Sstevel@tonic-gate /* input modes */ 1847c478bd9Sstevel@tonic-gate #define IGNBRK 0000001 1857c478bd9Sstevel@tonic-gate #define BRKINT 0000002 1867c478bd9Sstevel@tonic-gate #define IGNPAR 0000004 1877c478bd9Sstevel@tonic-gate #define PARMRK 0000010 1887c478bd9Sstevel@tonic-gate #define INPCK 0000020 1897c478bd9Sstevel@tonic-gate #define ISTRIP 0000040 1907c478bd9Sstevel@tonic-gate #define INLCR 0000100 1917c478bd9Sstevel@tonic-gate #define IGNCR 0000200 1927c478bd9Sstevel@tonic-gate #define ICRNL 0000400 1937c478bd9Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || \ 1947c478bd9Sstevel@tonic-gate (defined(_XOPEN_SOURCE) && !defined(_XPG6)) || \ 1957c478bd9Sstevel@tonic-gate defined(__EXTENSIONS__) 1967c478bd9Sstevel@tonic-gate #define IUCLC 0001000 1977c478bd9Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 1987c478bd9Sstevel@tonic-gate #define IXON 0002000 1997c478bd9Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 2007c478bd9Sstevel@tonic-gate defined(__EXTENSIONS__) 2017c478bd9Sstevel@tonic-gate #define IXANY 0004000 2027c478bd9Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2037c478bd9Sstevel@tonic-gate #define IXOFF 0010000 2047c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2057c478bd9Sstevel@tonic-gate #define IMAXBEL 0020000 2067c478bd9Sstevel@tonic-gate #define DOSMODE 0100000 /* for 386 compatibility */ 2077c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2087c478bd9Sstevel@tonic-gate 2097c478bd9Sstevel@tonic-gate /* output modes */ 2107c478bd9Sstevel@tonic-gate #define OPOST 0000001 2117c478bd9Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 2127c478bd9Sstevel@tonic-gate defined(__EXTENSIONS__) 2137c478bd9Sstevel@tonic-gate #if !defined(_XPG6) || defined(__EXTENSIONS__) 2147c478bd9Sstevel@tonic-gate #define OLCUC 0000002 2157c478bd9Sstevel@tonic-gate #endif 2167c478bd9Sstevel@tonic-gate #define ONLCR 0000004 2177c478bd9Sstevel@tonic-gate #define OCRNL 0000010 2187c478bd9Sstevel@tonic-gate #define ONOCR 0000020 2197c478bd9Sstevel@tonic-gate #define ONLRET 0000040 2207c478bd9Sstevel@tonic-gate #define OFILL 0000100 2217c478bd9Sstevel@tonic-gate #define OFDEL 0000200 2227c478bd9Sstevel@tonic-gate #define NLDLY 0000400 2237c478bd9Sstevel@tonic-gate #define NL0 0 2247c478bd9Sstevel@tonic-gate #define NL1 0000400 2257c478bd9Sstevel@tonic-gate #define CRDLY 0003000 2267c478bd9Sstevel@tonic-gate #define CR0 0 2277c478bd9Sstevel@tonic-gate #define CR1 0001000 2287c478bd9Sstevel@tonic-gate #define CR2 0002000 2297c478bd9Sstevel@tonic-gate #define CR3 0003000 2307c478bd9Sstevel@tonic-gate #define TABDLY 0014000 2317c478bd9Sstevel@tonic-gate #define TAB0 0 2327c478bd9Sstevel@tonic-gate #define TAB1 0004000 2337c478bd9Sstevel@tonic-gate #define TAB2 0010000 2347c478bd9Sstevel@tonic-gate #define TAB3 0014000 2357c478bd9Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2367c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2377c478bd9Sstevel@tonic-gate #define XTABS 0014000 2387c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2397c478bd9Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE) || \ 2407c478bd9Sstevel@tonic-gate defined(__EXTENSIONS__) 2417c478bd9Sstevel@tonic-gate #define BSDLY 0020000 2427c478bd9Sstevel@tonic-gate #define BS0 0 2437c478bd9Sstevel@tonic-gate #define BS1 0020000 2447c478bd9Sstevel@tonic-gate #define VTDLY 0040000 2457c478bd9Sstevel@tonic-gate #define VT0 0 2467c478bd9Sstevel@tonic-gate #define VT1 0040000 2477c478bd9Sstevel@tonic-gate #define FFDLY 0100000 2487c478bd9Sstevel@tonic-gate #define FF0 0 2497c478bd9Sstevel@tonic-gate #define FF1 0100000 2507c478bd9Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2517c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2527c478bd9Sstevel@tonic-gate #define PAGEOUT 0200000 2537c478bd9Sstevel@tonic-gate #define WRAP 0400000 2547c478bd9Sstevel@tonic-gate 2557c478bd9Sstevel@tonic-gate /* control modes */ 2567c478bd9Sstevel@tonic-gate #define CBAUD 0000017 2577c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2587c478bd9Sstevel@tonic-gate #define CSIZE 0000060 2597c478bd9Sstevel@tonic-gate #define CS5 0 2607c478bd9Sstevel@tonic-gate #define CS6 0000020 2617c478bd9Sstevel@tonic-gate #define CS7 0000040 2627c478bd9Sstevel@tonic-gate #define CS8 0000060 2637c478bd9Sstevel@tonic-gate #define CSTOPB 0000100 2647c478bd9Sstevel@tonic-gate #define CREAD 0000200 2657c478bd9Sstevel@tonic-gate #define PARENB 0000400 2667c478bd9Sstevel@tonic-gate #define PARODD 0001000 2677c478bd9Sstevel@tonic-gate #define HUPCL 0002000 2687c478bd9Sstevel@tonic-gate #define CLOCAL 0004000 2697c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 2707c478bd9Sstevel@tonic-gate #define RCV1EN 0010000 2717c478bd9Sstevel@tonic-gate #define XMT1EN 0020000 2727c478bd9Sstevel@tonic-gate #define LOBLK 0040000 2737c478bd9Sstevel@tonic-gate #define XCLUDE 0100000 /* *V7* exclusive use coming fron XENIX */ 2747c478bd9Sstevel@tonic-gate #define CRTSXOFF 010000000000 2757c478bd9Sstevel@tonic-gate #define CRTSCTS 020000000000 2767c478bd9Sstevel@tonic-gate #define CIBAUD 03600000 2777c478bd9Sstevel@tonic-gate #define PAREXT 04000000 2787c478bd9Sstevel@tonic-gate #define CBAUDEXT 010000000 2797c478bd9Sstevel@tonic-gate #define CIBAUDEXT 020000000 2807c478bd9Sstevel@tonic-gate 2817c478bd9Sstevel@tonic-gate /* 2827c478bd9Sstevel@tonic-gate * 4.4BSD hardware flow control flags 2837c478bd9Sstevel@tonic-gate */ 2847c478bd9Sstevel@tonic-gate #define CRTS_IFLOW 010000000000 2857c478bd9Sstevel@tonic-gate #define CCTS_OFLOW 020000000000 2867c478bd9Sstevel@tonic-gate 2877c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 2887c478bd9Sstevel@tonic-gate 2897c478bd9Sstevel@tonic-gate /* line discipline 0 modes */ 2907c478bd9Sstevel@tonic-gate #define ISIG 0000001 2917c478bd9Sstevel@tonic-gate #define ICANON 0000002 2927c478bd9Sstevel@tonic-gate #if !defined(_POSIX_C_SOURCE) || \ 2937c478bd9Sstevel@tonic-gate (defined(_XOPEN_SOURCE) && !defined(_XPG6)) || \ 2947c478bd9Sstevel@tonic-gate defined(__EXTENSIONS__) 2957c478bd9Sstevel@tonic-gate #define XCASE 0000004 2967c478bd9Sstevel@tonic-gate #endif /* !defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)... */ 2977c478bd9Sstevel@tonic-gate #define ECHO 0000010 2987c478bd9Sstevel@tonic-gate #define ECHOE 0000020 2997c478bd9Sstevel@tonic-gate #define ECHOK 0000040 3007c478bd9Sstevel@tonic-gate #define ECHONL 0000100 3017c478bd9Sstevel@tonic-gate #define NOFLSH 0000200 3027c478bd9Sstevel@tonic-gate #define TOSTOP 0000400 3037c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3047c478bd9Sstevel@tonic-gate #define ECHOCTL 0001000 3057c478bd9Sstevel@tonic-gate #define ECHOPRT 0002000 3067c478bd9Sstevel@tonic-gate #define ECHOKE 0004000 3077c478bd9Sstevel@tonic-gate #define DEFECHO 0010000 3087c478bd9Sstevel@tonic-gate #define FLUSHO 0020000 3097c478bd9Sstevel@tonic-gate #define PENDIN 0040000 3107c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3117c478bd9Sstevel@tonic-gate 3127c478bd9Sstevel@tonic-gate #define IEXTEN 0100000 /* POSIX flag - enable POSIX extensions */ 3137c478bd9Sstevel@tonic-gate #define _TIOC ('T'<<8) 3147c478bd9Sstevel@tonic-gate 3157c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3167c478bd9Sstevel@tonic-gate 3177c478bd9Sstevel@tonic-gate #define TIOC _TIOC 3187c478bd9Sstevel@tonic-gate 3197c478bd9Sstevel@tonic-gate #define TCGETA (_TIOC|1) 3207c478bd9Sstevel@tonic-gate #define TCSETA (_TIOC|2) 3217c478bd9Sstevel@tonic-gate #define TCSETAW (_TIOC|3) 3227c478bd9Sstevel@tonic-gate #define TCSETAF (_TIOC|4) 3237c478bd9Sstevel@tonic-gate #define TCSBRK (_TIOC|5) 3247c478bd9Sstevel@tonic-gate #define TCXONC (_TIOC|6) 3257c478bd9Sstevel@tonic-gate #define TCFLSH (_TIOC|7) 3267c478bd9Sstevel@tonic-gate 3277c478bd9Sstevel@tonic-gate /* Slots reserved for 386/XENIX compatibility - keyboard control */ 3287c478bd9Sstevel@tonic-gate 3297c478bd9Sstevel@tonic-gate #define TIOCKBON (_TIOC|8) 3307c478bd9Sstevel@tonic-gate #define TIOCKBOF (_TIOC|9) 3317c478bd9Sstevel@tonic-gate #define KBENABLED (_TIOC|10) 3327c478bd9Sstevel@tonic-gate 3337c478bd9Sstevel@tonic-gate #ifndef IOCTYPE 3347c478bd9Sstevel@tonic-gate #define IOCTYPE 0xff00 3357c478bd9Sstevel@tonic-gate #endif 3367c478bd9Sstevel@tonic-gate 3377c478bd9Sstevel@tonic-gate #define TCDSET (_TIOC|32) 3387c478bd9Sstevel@tonic-gate #define RTS_TOG (_TIOC|33) /* 386 - "RTS" toggle define 8A1 protocol */ 3397c478bd9Sstevel@tonic-gate 3407c478bd9Sstevel@tonic-gate #define TIOCGWINSZ (_TIOC|104) 3417c478bd9Sstevel@tonic-gate #define TIOCSWINSZ (_TIOC|103) 3427c478bd9Sstevel@tonic-gate 3437c478bd9Sstevel@tonic-gate /* 3447c478bd9Sstevel@tonic-gate * Softcarrier ioctls 3457c478bd9Sstevel@tonic-gate */ 3467c478bd9Sstevel@tonic-gate #define TIOCGSOFTCAR (_TIOC|105) 3477c478bd9Sstevel@tonic-gate #define TIOCSSOFTCAR (_TIOC|106) 3487c478bd9Sstevel@tonic-gate 3497c478bd9Sstevel@tonic-gate 3507c478bd9Sstevel@tonic-gate /* termios ioctls */ 3517c478bd9Sstevel@tonic-gate 3527c478bd9Sstevel@tonic-gate #define TCGETS (_TIOC|13) 3537c478bd9Sstevel@tonic-gate #define TCSETS (_TIOC|14) 3547c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3557c478bd9Sstevel@tonic-gate #define TCSANOW (_TIOC|14) /* same as TCSETS */ 3567c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3577c478bd9Sstevel@tonic-gate #define TCSETSW (_TIOC|15) 3587c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3597c478bd9Sstevel@tonic-gate #define TCSADRAIN (_TIOC|15) /* same as TCSETSW */ 3607c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 3617c478bd9Sstevel@tonic-gate #define TCSETSF (_TIOC|16) 3627c478bd9Sstevel@tonic-gate 3637c478bd9Sstevel@tonic-gate /* 3647c478bd9Sstevel@tonic-gate * NTP PPS ioctls 3657c478bd9Sstevel@tonic-gate */ 3667c478bd9Sstevel@tonic-gate #define TIOCGPPS (_TIOC|125) 3677c478bd9Sstevel@tonic-gate #define TIOCSPPS (_TIOC|126) 3687c478bd9Sstevel@tonic-gate #define TIOCGPPSEV (_TIOC|127) 3697c478bd9Sstevel@tonic-gate 3707c478bd9Sstevel@tonic-gate /* Argument filled in by TIOCGPPSEV */ 3717c478bd9Sstevel@tonic-gate struct ppsclockev { 3727c478bd9Sstevel@tonic-gate struct timeval tv; 3737c478bd9Sstevel@tonic-gate uint_t serial; 3747c478bd9Sstevel@tonic-gate }; 3757c478bd9Sstevel@tonic-gate 3767c478bd9Sstevel@tonic-gate #if defined(_SYSCALL32) 3777c478bd9Sstevel@tonic-gate struct ppsclockev32 { 3787c478bd9Sstevel@tonic-gate struct timeval32 tv; 3797c478bd9Sstevel@tonic-gate uint32_t serial; 3807c478bd9Sstevel@tonic-gate }; 3817c478bd9Sstevel@tonic-gate #endif /* _SYSCALL32 */ 3827c478bd9Sstevel@tonic-gate 3837c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 3847c478bd9Sstevel@tonic-gate 3857c478bd9Sstevel@tonic-gate #define TCSAFLUSH (_TIOC|16) /* same as TCSETSF */ 3867c478bd9Sstevel@tonic-gate 3877c478bd9Sstevel@tonic-gate /* termios option flags */ 3887c478bd9Sstevel@tonic-gate 3897c478bd9Sstevel@tonic-gate #define TCIFLUSH 0 /* flush data received but not read */ 3907c478bd9Sstevel@tonic-gate #define TCOFLUSH 1 /* flush data written but not transmitted */ 3917c478bd9Sstevel@tonic-gate #define TCIOFLUSH 2 /* flush both data both input and output queues */ 3927c478bd9Sstevel@tonic-gate 3937c478bd9Sstevel@tonic-gate #define TCOOFF 0 /* suspend output */ 3947c478bd9Sstevel@tonic-gate #define TCOON 1 /* restart suspended output */ 3957c478bd9Sstevel@tonic-gate #define TCIOFF 2 /* suspend input */ 3967c478bd9Sstevel@tonic-gate #define TCION 3 /* restart suspended input */ 3977c478bd9Sstevel@tonic-gate 3987c478bd9Sstevel@tonic-gate /* TIOC ioctls for BSD, ptys, job control and modem control */ 3997c478bd9Sstevel@tonic-gate 4007c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 4017c478bd9Sstevel@tonic-gate #define tIOC ('t'<<8) 4027c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 4037c478bd9Sstevel@tonic-gate 4047c478bd9Sstevel@tonic-gate /* Slots for 386/XENIX compatibility */ 4057c478bd9Sstevel@tonic-gate /* BSD includes these ioctls in ttold.h */ 4067c478bd9Sstevel@tonic-gate 4077c478bd9Sstevel@tonic-gate #ifndef _SYS_TTOLD_H 4087c478bd9Sstevel@tonic-gate 4097c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 4107c478bd9Sstevel@tonic-gate #define TIOCGETD (tIOC|0) 4117c478bd9Sstevel@tonic-gate #define TIOCSETD (tIOC|1) 4127c478bd9Sstevel@tonic-gate #define TIOCHPCL (tIOC|2) 4137c478bd9Sstevel@tonic-gate #define TIOCGETP (tIOC|8) 4147c478bd9Sstevel@tonic-gate #define TIOCSETP (tIOC|9) 4157c478bd9Sstevel@tonic-gate #define TIOCSETN (tIOC|10) 4167c478bd9Sstevel@tonic-gate #define TIOCEXCL (tIOC|13) 4177c478bd9Sstevel@tonic-gate #define TIOCNXCL (tIOC|14) 4187c478bd9Sstevel@tonic-gate #define TIOCFLUSH (tIOC|16) 4197c478bd9Sstevel@tonic-gate #define TIOCSETC (tIOC|17) 4207c478bd9Sstevel@tonic-gate #define TIOCGETC (tIOC|18) 4217c478bd9Sstevel@tonic-gate /* 4227c478bd9Sstevel@tonic-gate * BSD ioctls that are not the same as XENIX are included here. 4237c478bd9Sstevel@tonic-gate * There are also some relevant ioctls from SUN/BSD sys/ttycom.h 4247c478bd9Sstevel@tonic-gate * BSD pty ioctls like TIOCPKT are not supported in SVR4. 4257c478bd9Sstevel@tonic-gate */ 4267c478bd9Sstevel@tonic-gate 4277c478bd9Sstevel@tonic-gate #define TIOCLBIS (tIOC|127) /* bis local mode bits */ 4287c478bd9Sstevel@tonic-gate #define TIOCLBIC (tIOC|126) /* bic local mode bits */ 4297c478bd9Sstevel@tonic-gate #define TIOCLSET (tIOC|125) /* set entire local mode word */ 4307c478bd9Sstevel@tonic-gate #define TIOCLGET (tIOC|124) /* get local modes */ 4317c478bd9Sstevel@tonic-gate #define TIOCSBRK (tIOC|123) /* set break bit */ 4327c478bd9Sstevel@tonic-gate #define TIOCCBRK (tIOC|122) /* clear break bit */ 4337c478bd9Sstevel@tonic-gate #define TIOCSDTR (tIOC|121) /* set data terminal ready */ 4347c478bd9Sstevel@tonic-gate #define TIOCCDTR (tIOC|120) /* clear data terminal ready */ 4357c478bd9Sstevel@tonic-gate #define TIOCSLTC (tIOC|117) /* set local special chars */ 4367c478bd9Sstevel@tonic-gate #define TIOCGLTC (tIOC|116) /* get local special chars */ 4377c478bd9Sstevel@tonic-gate #define TIOCOUTQ (tIOC|115) /* driver output queue size */ 4387c478bd9Sstevel@tonic-gate #define TIOCNOTTY (tIOC|113) /* void tty association */ 4399acbbeafSnn35248 #define TIOCSCTTY (tIOC|132) /* get a ctty */ 4407c478bd9Sstevel@tonic-gate #define TIOCSTOP (tIOC|111) /* stop output, like ^S */ 4417c478bd9Sstevel@tonic-gate #define TIOCSTART (tIOC|110) /* start output, like ^Q */ 4427c478bd9Sstevel@tonic-gate #define TIOCSILOOP (tIOC|109) /* private to Sun; do not use */ 443de81e71eSTim Marsland #define TIOCCILOOP (tIOC|108) /* private to Sun; do not use */ 4447c478bd9Sstevel@tonic-gate 4457c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 4467c478bd9Sstevel@tonic-gate 4477c478bd9Sstevel@tonic-gate #endif /* end _SYS_TTOLD_H */ 4487c478bd9Sstevel@tonic-gate 4497c478bd9Sstevel@tonic-gate /* POSIX job control ioctls */ 4507c478bd9Sstevel@tonic-gate 4517c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 4527c478bd9Sstevel@tonic-gate #define TIOCGPGRP (tIOC|20) /* get pgrp of tty */ 4537c478bd9Sstevel@tonic-gate #define TIOCSPGRP (tIOC|21) /* set pgrp of tty */ 4547c478bd9Sstevel@tonic-gate #define TIOCGSID (tIOC|22) /* get session id on ctty */ 4557c478bd9Sstevel@tonic-gate 4567c478bd9Sstevel@tonic-gate /* Miscellaneous */ 4577c478bd9Sstevel@tonic-gate #define TIOCSTI (tIOC|23) /* simulate terminal input */ 4587c478bd9Sstevel@tonic-gate 4597c478bd9Sstevel@tonic-gate /* Modem control */ 4607c478bd9Sstevel@tonic-gate #define TIOCMSET (tIOC|26) /* set all modem bits */ 4617c478bd9Sstevel@tonic-gate #define TIOCMBIS (tIOC|27) /* bis modem bits */ 4627c478bd9Sstevel@tonic-gate #define TIOCMBIC (tIOC|28) /* bic modem bits */ 4637c478bd9Sstevel@tonic-gate #define TIOCMGET (tIOC|29) /* get all modem bits */ 4647c478bd9Sstevel@tonic-gate #define TIOCM_LE 0001 /* line enable */ 4657c478bd9Sstevel@tonic-gate #define TIOCM_DTR 0002 /* data terminal ready */ 4667c478bd9Sstevel@tonic-gate #define TIOCM_RTS 0004 /* request to send */ 4677c478bd9Sstevel@tonic-gate #define TIOCM_ST 0010 /* secondary transmit */ 4687c478bd9Sstevel@tonic-gate #define TIOCM_SR 0020 /* secondary receive */ 4697c478bd9Sstevel@tonic-gate #define TIOCM_CTS 0040 /* clear to send */ 4707c478bd9Sstevel@tonic-gate #define TIOCM_CAR 0100 /* carrier detect */ 4717c478bd9Sstevel@tonic-gate #define TIOCM_CD TIOCM_CAR 4727c478bd9Sstevel@tonic-gate #define TIOCM_RNG 0200 /* ring */ 4737c478bd9Sstevel@tonic-gate #define TIOCM_RI TIOCM_RNG 4747c478bd9Sstevel@tonic-gate #define TIOCM_DSR 0400 /* data set ready */ 4757c478bd9Sstevel@tonic-gate 4767c478bd9Sstevel@tonic-gate /* pseudo-tty */ 4777c478bd9Sstevel@tonic-gate 4787c478bd9Sstevel@tonic-gate #define TIOCREMOTE (tIOC|30) /* remote input editing */ 4797c478bd9Sstevel@tonic-gate #define TIOCSIGNAL (tIOC|31) /* pty: send signal to slave */ 4807c478bd9Sstevel@tonic-gate 4817c478bd9Sstevel@tonic-gate 4827c478bd9Sstevel@tonic-gate /* Some more 386 xenix stuff */ 4837c478bd9Sstevel@tonic-gate 4847c478bd9Sstevel@tonic-gate #define LDIOC ('D'<<8) 4857c478bd9Sstevel@tonic-gate 4867c478bd9Sstevel@tonic-gate #define LDOPEN (LDIOC|0) 4877c478bd9Sstevel@tonic-gate #define LDCLOSE (LDIOC|1) 4887c478bd9Sstevel@tonic-gate #define LDCHG (LDIOC|2) 4897c478bd9Sstevel@tonic-gate #define LDGETT (LDIOC|8) 4907c478bd9Sstevel@tonic-gate #define LDSETT (LDIOC|9) 4917c478bd9Sstevel@tonic-gate 4927c478bd9Sstevel@tonic-gate /* Slots for 386 compatibility */ 4937c478bd9Sstevel@tonic-gate 4947c478bd9Sstevel@tonic-gate #define LDSMAP (LDIOC|110) 4957c478bd9Sstevel@tonic-gate #define LDGMAP (LDIOC|111) 4967c478bd9Sstevel@tonic-gate #define LDNMAP (LDIOC|112) 4977c478bd9Sstevel@tonic-gate #define LDEMAP (LDIOC|113) 4987c478bd9Sstevel@tonic-gate #define LDDMAP (LDIOC|114) 4997c478bd9Sstevel@tonic-gate 5007c478bd9Sstevel@tonic-gate /* 5017c478bd9Sstevel@tonic-gate * These are retained for 386/XENIX compatibility. 5027c478bd9Sstevel@tonic-gate */ 5037c478bd9Sstevel@tonic-gate 5047c478bd9Sstevel@tonic-gate #define DIOC ('d'<<8) 5057c478bd9Sstevel@tonic-gate #define DIOCGETP (DIOC|8) /* V7 */ 5067c478bd9Sstevel@tonic-gate #define DIOCSETP (DIOC|9) /* V7 */ 5077c478bd9Sstevel@tonic-gate 5087c478bd9Sstevel@tonic-gate /* 5097c478bd9Sstevel@tonic-gate * Returns a non-zero value if there 5107c478bd9Sstevel@tonic-gate * are characters in the input queue. 5117c478bd9Sstevel@tonic-gate * 5127c478bd9Sstevel@tonic-gate * XXX - somebody is confused here. V7 had no such "ioctl", although XENIX may 5137c478bd9Sstevel@tonic-gate * have added it; 4BSD had FIONREAD, which returned the number of characters 5147c478bd9Sstevel@tonic-gate * waiting, and was supposed to work on all descriptors (i.e., every driver 5157c478bd9Sstevel@tonic-gate * should make a stab at implementing it). 5167c478bd9Sstevel@tonic-gate */ 5177c478bd9Sstevel@tonic-gate #define FIORDCHK (('f'<<8)|3) /* V7 */ 5187c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 5197c478bd9Sstevel@tonic-gate 5207c478bd9Sstevel@tonic-gate /* 5217c478bd9Sstevel@tonic-gate * Speeds 5227c478bd9Sstevel@tonic-gate */ 5237c478bd9Sstevel@tonic-gate #define B0 0 5247c478bd9Sstevel@tonic-gate #define B50 1 5257c478bd9Sstevel@tonic-gate #define B75 2 5267c478bd9Sstevel@tonic-gate #define B110 3 5277c478bd9Sstevel@tonic-gate #define B134 4 5287c478bd9Sstevel@tonic-gate #define B150 5 5297c478bd9Sstevel@tonic-gate #define B200 6 5307c478bd9Sstevel@tonic-gate #define B300 7 5317c478bd9Sstevel@tonic-gate #define B600 8 5327c478bd9Sstevel@tonic-gate #define B1200 9 5337c478bd9Sstevel@tonic-gate #define B1800 10 5347c478bd9Sstevel@tonic-gate #define B2400 11 5357c478bd9Sstevel@tonic-gate #define B4800 12 5367c478bd9Sstevel@tonic-gate #define B9600 13 5377c478bd9Sstevel@tonic-gate #define B19200 14 5387c478bd9Sstevel@tonic-gate #define B38400 15 5397c478bd9Sstevel@tonic-gate #define B57600 16 5407c478bd9Sstevel@tonic-gate #define B76800 17 5417c478bd9Sstevel@tonic-gate #define B115200 18 5427c478bd9Sstevel@tonic-gate #define B153600 19 5437c478bd9Sstevel@tonic-gate #define B230400 20 5447c478bd9Sstevel@tonic-gate #define B307200 21 5457c478bd9Sstevel@tonic-gate #define B460800 22 546de81e71eSTim Marsland #define B921600 23 5477c478bd9Sstevel@tonic-gate 5487c478bd9Sstevel@tonic-gate #ifndef _SYS_TTOLD_H 5497c478bd9Sstevel@tonic-gate 5507c478bd9Sstevel@tonic-gate #if !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) 5517c478bd9Sstevel@tonic-gate /* Windowing structure to support JWINSIZE/TIOCSWINSZ/TIOCGWINSZ */ 5527c478bd9Sstevel@tonic-gate struct winsize { 5537c478bd9Sstevel@tonic-gate unsigned short ws_row; /* rows, in characters */ 5547c478bd9Sstevel@tonic-gate unsigned short ws_col; /* columns, in character */ 5557c478bd9Sstevel@tonic-gate unsigned short ws_xpixel; /* horizontal size, pixels */ 5567c478bd9Sstevel@tonic-gate unsigned short ws_ypixel; /* vertical size, pixels */ 5577c478bd9Sstevel@tonic-gate }; 5587c478bd9Sstevel@tonic-gate #endif /* !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__) */ 5597c478bd9Sstevel@tonic-gate 5607c478bd9Sstevel@tonic-gate #endif /* end _SYS_TTOLD_H */ 5617c478bd9Sstevel@tonic-gate 5627c478bd9Sstevel@tonic-gate #ifdef __cplusplus 5637c478bd9Sstevel@tonic-gate } 5647c478bd9Sstevel@tonic-gate #endif 5657c478bd9Sstevel@tonic-gate 5667c478bd9Sstevel@tonic-gate #endif /* _SYS_TERMIOS_H */ 567