1*53ee8cc1Swenshuai.xi /* termios type and macro definitions. Linux/MIPS version. 2*53ee8cc1Swenshuai.xi Copyright (C) 1993, 94, 95, 96, 97, 99 Free Software Foundation, Inc. 3*53ee8cc1Swenshuai.xi This file is part of the GNU C Library. 4*53ee8cc1Swenshuai.xi 5*53ee8cc1Swenshuai.xi The GNU C Library is free software; you can redistribute it and/or 6*53ee8cc1Swenshuai.xi modify it under the terms of the GNU Lesser General Public 7*53ee8cc1Swenshuai.xi License as published by the Free Software Foundation; either 8*53ee8cc1Swenshuai.xi version 2.1 of the License, or (at your option) any later version. 9*53ee8cc1Swenshuai.xi 10*53ee8cc1Swenshuai.xi The GNU C Library is distributed in the hope that it will be useful, 11*53ee8cc1Swenshuai.xi but WITHOUT ANY WARRANTY; without even the implied warranty of 12*53ee8cc1Swenshuai.xi MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13*53ee8cc1Swenshuai.xi Lesser General Public License for more details. 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi You should have received a copy of the GNU Lesser General Public 16*53ee8cc1Swenshuai.xi License along with the GNU C Library; if not, write to the Free 17*53ee8cc1Swenshuai.xi Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 18*53ee8cc1Swenshuai.xi 02111-1307 USA. */ 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi #ifndef _TERMIOS_H 21*53ee8cc1Swenshuai.xi # error "Never include <bits/termios.h> directly; use <termios.h> instead." 22*53ee8cc1Swenshuai.xi #endif 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xi typedef unsigned char cc_t; 25*53ee8cc1Swenshuai.xi typedef unsigned int speed_t; 26*53ee8cc1Swenshuai.xi typedef unsigned int tcflag_t; 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi #define NCCS 32 29*53ee8cc1Swenshuai.xi struct termios 30*53ee8cc1Swenshuai.xi { 31*53ee8cc1Swenshuai.xi tcflag_t c_iflag; /* input mode flags */ 32*53ee8cc1Swenshuai.xi tcflag_t c_oflag; /* output mode flags */ 33*53ee8cc1Swenshuai.xi tcflag_t c_cflag; /* control mode flags */ 34*53ee8cc1Swenshuai.xi tcflag_t c_lflag; /* local mode flags */ 35*53ee8cc1Swenshuai.xi cc_t c_line; /* line discipline */ 36*53ee8cc1Swenshuai.xi cc_t c_cc[NCCS]; /* control characters */ 37*53ee8cc1Swenshuai.xi }; 38*53ee8cc1Swenshuai.xi 39*53ee8cc1Swenshuai.xi /* c_cc characters */ 40*53ee8cc1Swenshuai.xi #define VINTR 0 /* Interrupt character [ISIG]. */ 41*53ee8cc1Swenshuai.xi #define VQUIT 1 /* Quit character [ISIG]. */ 42*53ee8cc1Swenshuai.xi #define VERASE 2 /* Erase character [ICANON]. */ 43*53ee8cc1Swenshuai.xi #define VKILL 3 /* Kill-line character [ICANON]. */ 44*53ee8cc1Swenshuai.xi #define VMIN 4 /* Minimum number of bytes read at once [!ICANON]. */ 45*53ee8cc1Swenshuai.xi #define VTIME 5 /* Time-out value (tenths of a second) [!ICANON]. */ 46*53ee8cc1Swenshuai.xi #define VEOL2 6 /* Second EOL character [ICANON]. */ 47*53ee8cc1Swenshuai.xi #define VSWTC 7 48*53ee8cc1Swenshuai.xi #define VSWTCH VSWTC 49*53ee8cc1Swenshuai.xi #define VSTART 8 /* Start (X-ON) character [IXON, IXOFF]. */ 50*53ee8cc1Swenshuai.xi #define VSTOP 9 /* Stop (X-OFF) character [IXON, IXOFF]. */ 51*53ee8cc1Swenshuai.xi #define VSUSP 10 /* Suspend character [ISIG]. */ 52*53ee8cc1Swenshuai.xi /* VDSUSP is not supported on Linux. */ 53*53ee8cc1Swenshuai.xi /* #define VDSUSP 11 / * Delayed suspend character [ISIG]. */ 54*53ee8cc1Swenshuai.xi #define VREPRINT 12 /* Reprint-line character [ICANON]. */ 55*53ee8cc1Swenshuai.xi #define VDISCARD 13 /* Discard character [IEXTEN]. */ 56*53ee8cc1Swenshuai.xi #define VWERASE 14 /* Word-erase character [ICANON]. */ 57*53ee8cc1Swenshuai.xi #define VLNEXT 15 /* Literal-next character [IEXTEN]. */ 58*53ee8cc1Swenshuai.xi #define VEOF 16 /* End-of-file character [ICANON]. */ 59*53ee8cc1Swenshuai.xi #define VEOL 17 /* End-of-line character [ICANON]. */ 60*53ee8cc1Swenshuai.xi 61*53ee8cc1Swenshuai.xi /* c_iflag bits */ 62*53ee8cc1Swenshuai.xi #define IGNBRK 0000001 /* Ignore break condition. */ 63*53ee8cc1Swenshuai.xi #define BRKINT 0000002 /* Signal interrupt on break. */ 64*53ee8cc1Swenshuai.xi #define IGNPAR 0000004 /* Ignore characters with parity errors. */ 65*53ee8cc1Swenshuai.xi #define PARMRK 0000010 /* Mark parity and framing errors. */ 66*53ee8cc1Swenshuai.xi #define INPCK 0000020 /* Enable input parity check. */ 67*53ee8cc1Swenshuai.xi #define ISTRIP 0000040 /* Strip 8th bit off characters. */ 68*53ee8cc1Swenshuai.xi #define INLCR 0000100 /* Map NL to CR on input. */ 69*53ee8cc1Swenshuai.xi #define IGNCR 0000200 /* Ignore CR. */ 70*53ee8cc1Swenshuai.xi #define ICRNL 0000400 /* Map CR to NL on input. */ 71*53ee8cc1Swenshuai.xi #define IUCLC 0001000 /* Map upper case to lower case on input. */ 72*53ee8cc1Swenshuai.xi #define IXON 0002000 /* Enable start/stop output control. */ 73*53ee8cc1Swenshuai.xi #define IXANY 0004000 /* Any character will restart after stop. */ 74*53ee8cc1Swenshuai.xi #define IXOFF 0010000 /* Enable start/stop input control. */ 75*53ee8cc1Swenshuai.xi #define IMAXBEL 0020000 /* Ring bell when input queue is full. */ 76*53ee8cc1Swenshuai.xi #define IUTF8 0040000 /* Input is UTF8. */ 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi /* c_oflag bits */ 79*53ee8cc1Swenshuai.xi #define OPOST 0000001 /* Perform output processing. */ 80*53ee8cc1Swenshuai.xi #define OLCUC 0000002 /* Map lower case to upper case on output. */ 81*53ee8cc1Swenshuai.xi #define ONLCR 0000004 /* Map NL to CR-NL on output. */ 82*53ee8cc1Swenshuai.xi #define OCRNL 0000010 83*53ee8cc1Swenshuai.xi #define ONOCR 0000020 84*53ee8cc1Swenshuai.xi #define ONLRET 0000040 85*53ee8cc1Swenshuai.xi #define OFILL 0000100 86*53ee8cc1Swenshuai.xi #define OFDEL 0000200 87*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN 88*53ee8cc1Swenshuai.xi # define NLDLY 0000400 89*53ee8cc1Swenshuai.xi # define NL0 0000000 90*53ee8cc1Swenshuai.xi # define NL1 0000400 91*53ee8cc1Swenshuai.xi # define CRDLY 0003000 92*53ee8cc1Swenshuai.xi # define CR0 0000000 93*53ee8cc1Swenshuai.xi # define CR1 0001000 94*53ee8cc1Swenshuai.xi # define CR2 0002000 95*53ee8cc1Swenshuai.xi # define CR3 0003000 96*53ee8cc1Swenshuai.xi # define TABDLY 0014000 97*53ee8cc1Swenshuai.xi # define TAB0 0000000 98*53ee8cc1Swenshuai.xi # define TAB1 0004000 99*53ee8cc1Swenshuai.xi # define TAB2 0010000 100*53ee8cc1Swenshuai.xi # define TAB3 0014000 101*53ee8cc1Swenshuai.xi # define BSDLY 0020000 102*53ee8cc1Swenshuai.xi # define BS0 0000000 103*53ee8cc1Swenshuai.xi # define BS1 0020000 104*53ee8cc1Swenshuai.xi # define FFDLY 0100000 105*53ee8cc1Swenshuai.xi # define FF0 0000000 106*53ee8cc1Swenshuai.xi # define FF1 0100000 107*53ee8cc1Swenshuai.xi #endif 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi #define VTDLY 0040000 110*53ee8cc1Swenshuai.xi #define VT0 0000000 111*53ee8cc1Swenshuai.xi #define VT1 0040000 112*53ee8cc1Swenshuai.xi 113*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 114*53ee8cc1Swenshuai.xi # define XTABS 0014000 115*53ee8cc1Swenshuai.xi #endif 116*53ee8cc1Swenshuai.xi 117*53ee8cc1Swenshuai.xi /* c_cflag bit meaning */ 118*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 119*53ee8cc1Swenshuai.xi # define CBAUD 0010017 120*53ee8cc1Swenshuai.xi #endif 121*53ee8cc1Swenshuai.xi #define B0 0000000 /* hang up */ 122*53ee8cc1Swenshuai.xi #define B50 0000001 123*53ee8cc1Swenshuai.xi #define B75 0000002 124*53ee8cc1Swenshuai.xi #define B110 0000003 125*53ee8cc1Swenshuai.xi #define B134 0000004 126*53ee8cc1Swenshuai.xi #define B150 0000005 127*53ee8cc1Swenshuai.xi #define B200 0000006 128*53ee8cc1Swenshuai.xi #define B300 0000007 129*53ee8cc1Swenshuai.xi #define B600 0000010 130*53ee8cc1Swenshuai.xi #define B1200 0000011 131*53ee8cc1Swenshuai.xi #define B1800 0000012 132*53ee8cc1Swenshuai.xi #define B2400 0000013 133*53ee8cc1Swenshuai.xi #define B4800 0000014 134*53ee8cc1Swenshuai.xi #define B9600 0000015 135*53ee8cc1Swenshuai.xi #define B19200 0000016 136*53ee8cc1Swenshuai.xi #define B38400 0000017 137*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 138*53ee8cc1Swenshuai.xi # define EXTA B19200 139*53ee8cc1Swenshuai.xi # define EXTB B38400 140*53ee8cc1Swenshuai.xi #endif 141*53ee8cc1Swenshuai.xi #define CSIZE 0000060 /* Number of bits per byte (mask). */ 142*53ee8cc1Swenshuai.xi #define CS5 0000000 /* 5 bits per byte. */ 143*53ee8cc1Swenshuai.xi #define CS6 0000020 /* 6 bits per byte. */ 144*53ee8cc1Swenshuai.xi #define CS7 0000040 /* 7 bits per byte. */ 145*53ee8cc1Swenshuai.xi #define CS8 0000060 /* 8 bits per byte. */ 146*53ee8cc1Swenshuai.xi #define CSTOPB 0000100 /* Two stop bits instead of one. */ 147*53ee8cc1Swenshuai.xi #define CREAD 0000200 /* Enable receiver. */ 148*53ee8cc1Swenshuai.xi #define PARENB 0000400 /* Parity enable. */ 149*53ee8cc1Swenshuai.xi #define PARODD 0001000 /* Odd parity instead of even. */ 150*53ee8cc1Swenshuai.xi #define HUPCL 0002000 /* Hang up on last close. */ 151*53ee8cc1Swenshuai.xi #define CLOCAL 0004000 /* Ignore modem status lines. */ 152*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 153*53ee8cc1Swenshuai.xi # define CBAUDEX 0010000 154*53ee8cc1Swenshuai.xi #endif 155*53ee8cc1Swenshuai.xi #define B57600 0010001 156*53ee8cc1Swenshuai.xi #define B115200 0010002 157*53ee8cc1Swenshuai.xi #define B230400 0010003 158*53ee8cc1Swenshuai.xi #define B460800 0010004 159*53ee8cc1Swenshuai.xi #define B500000 0010005 160*53ee8cc1Swenshuai.xi #define B576000 0010006 161*53ee8cc1Swenshuai.xi #define B921600 0010007 162*53ee8cc1Swenshuai.xi #define B1000000 0010010 163*53ee8cc1Swenshuai.xi #define B1152000 0010011 164*53ee8cc1Swenshuai.xi #define B1500000 0010012 165*53ee8cc1Swenshuai.xi #define B2000000 0010013 166*53ee8cc1Swenshuai.xi #define B2500000 0010014 167*53ee8cc1Swenshuai.xi #define B3000000 0010015 168*53ee8cc1Swenshuai.xi #define B3500000 0010016 169*53ee8cc1Swenshuai.xi #define B4000000 0010017 170*53ee8cc1Swenshuai.xi #define __MAX_BAUD B4000000 171*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 172*53ee8cc1Swenshuai.xi # define CIBAUD 002003600000 /* input baud rate (not used) */ 173*53ee8cc1Swenshuai.xi # define CRTSCTS 020000000000 /* flow control */ 174*53ee8cc1Swenshuai.xi #endif 175*53ee8cc1Swenshuai.xi 176*53ee8cc1Swenshuai.xi /* c_lflag bits */ 177*53ee8cc1Swenshuai.xi #define ISIG 0000001 /* Enable signals. */ 178*53ee8cc1Swenshuai.xi #define ICANON 0000002 /* Do erase and kill processing. */ 179*53ee8cc1Swenshuai.xi #if defined __USE_MISC || defined __USE_XOPEN 180*53ee8cc1Swenshuai.xi # define XCASE 0000004 181*53ee8cc1Swenshuai.xi #endif 182*53ee8cc1Swenshuai.xi #define ECHO 0000010 /* Enable echo. */ 183*53ee8cc1Swenshuai.xi #define ECHOE 0000020 /* Visual erase for ERASE. */ 184*53ee8cc1Swenshuai.xi #define ECHOK 0000040 /* Echo NL after KILL. */ 185*53ee8cc1Swenshuai.xi #define ECHONL 0000100 /* Echo NL even if ECHO is off. */ 186*53ee8cc1Swenshuai.xi #define NOFLSH 0000200 /* Disable flush after interrupt. */ 187*53ee8cc1Swenshuai.xi #define IEXTEN 0000400 /* Enable DISCARD and LNEXT. */ 188*53ee8cc1Swenshuai.xi #ifdef __USE_MISC 189*53ee8cc1Swenshuai.xi # define ECHOCTL 0001000 /* Echo control characters as ^X. */ 190*53ee8cc1Swenshuai.xi # define ECHOPRT 0002000 /* Hardcopy visual erase. */ 191*53ee8cc1Swenshuai.xi # define ECHOKE 0004000 /* Visual erase for KILL. */ 192*53ee8cc1Swenshuai.xi # define FLUSHO 0020000 193*53ee8cc1Swenshuai.xi # define PENDIN 0040000 /* Retype pending input (state). */ 194*53ee8cc1Swenshuai.xi #endif 195*53ee8cc1Swenshuai.xi #define TOSTOP 0100000 /* Send SIGTTOU for background output. */ 196*53ee8cc1Swenshuai.xi #define ITOSTOP TOSTOP 197*53ee8cc1Swenshuai.xi 198*53ee8cc1Swenshuai.xi /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */ 199*53ee8cc1Swenshuai.xi #define TIOCSER_TEMT 0x01 /* Transmitter physically empty */ 200*53ee8cc1Swenshuai.xi 201*53ee8cc1Swenshuai.xi /* tcflow() and TCXONC use these */ 202*53ee8cc1Swenshuai.xi #define TCOOFF 0 /* Suspend output. */ 203*53ee8cc1Swenshuai.xi #define TCOON 1 /* Restart suspended output. */ 204*53ee8cc1Swenshuai.xi #define TCIOFF 2 /* Send a STOP character. */ 205*53ee8cc1Swenshuai.xi #define TCION 3 /* Send a START character. */ 206*53ee8cc1Swenshuai.xi 207*53ee8cc1Swenshuai.xi /* tcflush() and TCFLSH use these */ 208*53ee8cc1Swenshuai.xi #define TCIFLUSH 0 /* Discard data received but not yet read. */ 209*53ee8cc1Swenshuai.xi #define TCOFLUSH 1 /* Discard data written but not yet sent. */ 210*53ee8cc1Swenshuai.xi #define TCIOFLUSH 2 /* Discard all pending data. */ 211*53ee8cc1Swenshuai.xi 212*53ee8cc1Swenshuai.xi /* tcsetattr uses these */ 213*53ee8cc1Swenshuai.xi #define TCSANOW 0x540e /* Same as TCSETS; change immediately. */ 214*53ee8cc1Swenshuai.xi #define TCSADRAIN 0x540f /* Same as TCSETSW; change when pending output is written. */ 215*53ee8cc1Swenshuai.xi #define TCSAFLUSH 0x5410 /* Same as TCSETSF; flush pending input before changing. */ 216*53ee8cc1Swenshuai.xi 217*53ee8cc1Swenshuai.xi #define _IOT_termios /* Hurd ioctl type field. */ \ 218*53ee8cc1Swenshuai.xi _IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2) 219