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