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