(linenum→info "unix/slp.c:2238")

glibc/2.7/bits/termios.h

    1: /* termios type and macro definitions.  4.4 BSD/generic GNU version.
    2:    Copyright (C) 1993,94,96,97,99,2001 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #ifndef _TERMIOS_H
   21: # error "Never include <bits/termios.h> directly; use <termios.h> instead."
   22: #endif
   23: 
   24: /* These macros are also defined in some <bits/ioctls.h> files (with
   25:    numerically identical values), but this serves to shut up cpp's
   26:    complaining. */
   27: #ifdef __USE_BSD
   28: 
   29: # ifdef MDMBUF
   30: #  undef MDMBUF
   31: # endif
   32: # ifdef FLUSHO
   33: #  undef FLUSHO
   34: # endif
   35: # ifdef PENDIN
   36: #  undef PENDIN
   37: # endif
   38: 
   39: #endif /* __USE_BSD */
   40: 
   41: #ifdef ECHO
   42: # undef ECHO
   43: #endif
   44: #ifdef TOSTOP
   45: # undef TOSTOP
   46: #endif
   47: #ifdef NOFLSH
   48: # undef NOFLSH
   49: #endif
   50: 
   51: 
   52: /* These definitions match those used by the 4.4 BSD kernel.
   53:    If the operating system has termios system calls or ioctls that
   54:    correctly implement the POSIX.1 behavior, there should be a
   55:    system-dependent version of this file that defines `struct termios',
   56:    `tcflag_t', `cc_t', `speed_t' and the `TC*' constants appropriately.  */
   57: 
   58: /* Type of terminal control flag masks.  */
   59: typedef unsigned long int tcflag_t;
   60: 
   61: /* Type of control characters.  */
   62: typedef unsigned char cc_t;
   63: 
   64: /* Type of baud rate specifiers.  */
   65: typedef long int speed_t;
   66: 
   67: /* Terminal control structure.  */
   68: struct termios
   69: {
   70:   /* Input modes.  */
   71:   tcflag_t c_iflag;
   72: #define IGNBRK  (1 << 0) /* Ignore break condition.  */
   73: #define BRKINT  (1 << 1) /* Signal interrupt on break.  */
   74: #define IGNPAR  (1 << 2) /* Ignore characters with parity errors.  */
   75: #define PARMRK  (1 << 3) /* Mark parity and framing errors.  */
   76: #define INPCK   (1 << 4)  /* Enable input parity check.  */
   77: #define ISTRIP  (1 << 5) /* Strip 8th bit off characters.  */
   78: #define INLCR   (1 << 6)  /* Map NL to CR on input.  */
   79: #define IGNCR   (1 << 7)  /* Ignore CR.  */
   80: #define ICRNL   (1 << 8)  /* Map CR to NL on input.  */
   81: #define IXON    (1 << 9)   /* Enable start/stop output control.  */
   82: #define IXOFF   (1 << 10) /* Enable start/stop input control.  */
   83: #ifdef  __USE_BSD
   84: # define IXANY  (1 << 11)        /* Any character will restart after stop.  */
   85: # define IMAXBEL (1 << 13)      /* Ring bell when input queue is full.  */
   86: #endif
   87: #ifdef __USE_GNU
   88: # define IUCLC  (1 << 14)        /* Translate upper case input to lower case. */
   89: #endif
   90: 
   91:   /* Output modes.  */
   92:   tcflag_t c_oflag;
   93: #define OPOST   (1 << 0)  /* Perform output processing.  */
   94: #ifdef  __USE_BSD
   95: # define ONLCR  (1 << 1) /* Map NL to CR-NL on output.  */
   96: # define OXTABS (1 << 2)        /* Expand tabs to spaces.  */
   97: # define ONOEOT (1 << 3)        /* Discard EOT (^D) on output.  */
   98: #endif
   99: #ifdef __USE_GNU
  100: # define OLCUC  (1 << 9) /* Translate lower case output to upper case */
  101: #endif
  102: 
  103:   /* Control modes.  */
  104:   tcflag_t c_cflag;
  105: #ifdef  __USE_BSD
  106: # define CIGNORE        (1 << 0)       /* Ignore these control flags.  */
  107: #endif
  108: #define CSIZE   (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask).  */
  109: #define CS5     0           /* 5 bits per byte.  */
  110: #define CS6     (1 << 8)    /* 6 bits per byte.  */
  111: #define CS7     (1 << 9)    /* 7 bits per byte.  */
  112: #define CS8     (CS6|CS7)   /* 8 bits per byte.  */
  113: #define CSTOPB  (1 << 10)        /* Two stop bits instead of one.  */
  114: #define CREAD   (1 << 11) /* Enable receiver.  */
  115: #define PARENB  (1 << 12)        /* Parity enable.  */
  116: #define PARODD  (1 << 13)        /* Odd parity instead of even.  */
  117: #define HUPCL   (1 << 14) /* Hang up on last close.  */
  118: #define CLOCAL  (1 << 15)        /* Ignore modem status lines.  */
  119: #ifdef  __USE_BSD
  120: # define CCTS_OFLOW     (1 << 16)   /* CTS flow control of output.  */
  121: # define CRTS_IFLOW     (1 << 17)   /* RTS flow control of input.  */
  122: # define CRTSCTS        (CCTS_OFLOW|CRTS_IFLOW)        /* CTS/RTS flow control.  */
  123: # define MDMBUF         (1 << 20)      /* Carrier flow control of output.  */
  124: #endif
  125: 
  126:   /* Local modes.  */
  127:   tcflag_t c_lflag;
  128: #ifdef  __USE_BSD
  129: # define ECHOKE (1 << 0)        /* Visual erase for KILL.  */
  130: #endif
  131: #define _ECHOE  (1 << 1) /* Visual erase for ERASE.  */
  132: #define ECHOE   _ECHOE
  133: #define _ECHOK  (1 << 2) /* Echo NL after KILL.  */
  134: #define ECHOK   _ECHOK
  135: #define _ECHO   (1 << 3)  /* Enable echo.  */
  136: #define ECHO    _ECHO
  137: #define _ECHONL (1 << 4)        /* Echo NL even if ECHO is off.  */
  138: #define ECHONL  _ECHONL
  139: #ifdef  __USE_BSD
  140: # define ECHOPRT        (1 << 5)       /* Hardcopy visual erase.  */
  141: # define ECHOCTL        (1 << 6)       /* Echo control characters as ^X.  */
  142: #endif
  143: #define _ISIG   (1 << 7)  /* Enable signals.  */
  144: #define ISIG    _ISIG
  145: #define _ICANON (1 << 8)        /* Do erase and kill processing.  */
  146: #define ICANON  _ICANON
  147: #ifdef  __USE_BSD
  148: # define ALTWERASE (1 << 9)     /* Alternate WERASE algorithm.  */
  149: #endif
  150: #define _IEXTEN (1 << 10)       /* Enable DISCARD and LNEXT.  */
  151: #define IEXTEN  _IEXTEN
  152: #define EXTPROC (1 << 11)       /* External processing.  */
  153: #define _TOSTOP (1 << 22)       /* Send SIGTTOU for background output.  */
  154: #define TOSTOP  _TOSTOP
  155: #ifdef  __USE_BSD
  156: # define FLUSHO (1 << 23)       /* Output being flushed (state).  */
  157: # define NOKERNINFO (1 << 25)   /* Disable VSTATUS.  */
  158: # define PENDIN (1 << 29)       /* Retype pending input (state).  */
  159: #endif
  160: #define _NOFLSH (1 << 31)       /* Disable flush after interrupt.  */
  161: #define NOFLSH  _NOFLSH
  162: 
  163:   /* Control characters.  */
  164: #define VEOF    0          /* End-of-file character [ICANON].  */
  165: #define VEOL    1          /* End-of-line character [ICANON].  */
  166: #ifdef  __USE_BSD
  167: # define VEOL2  2                /* Second EOL character [ICANON].  */
  168: #endif
  169: #define VERASE  3                /* Erase character [ICANON].  */
  170: #ifdef  __USE_BSD
  171: # define VWERASE        4              /* Word-erase character [ICANON].  */
  172: #endif
  173: #define VKILL   5         /* Kill-line character [ICANON].  */
  174: #ifdef  __USE_BSD
  175: # define VREPRINT 6             /* Reprint-line character [ICANON].  */
  176: #endif
  177: #define VINTR   8         /* Interrupt character [ISIG].  */
  178: #define VQUIT   9         /* Quit character [ISIG].  */
  179: #define VSUSP   10                /* Suspend character [ISIG].  */
  180: #ifdef  __USE_BSD
  181: # define VDSUSP 11              /* Delayed suspend character [ISIG].  */
  182: #endif
  183: #define VSTART  12               /* Start (X-ON) character [IXON, IXOFF].  */
  184: #define VSTOP   13                /* Stop (X-OFF) character [IXON, IXOFF].  */
  185: #ifdef  __USE_BSD
  186: # define VLNEXT 14              /* Literal-next character [IEXTEN].  */
  187: # define VDISCARD 15            /* Discard character [IEXTEN].  */
  188: #endif
  189: #define VMIN    16         /* Minimum number of bytes read at once [!ICANON].  */
  190: #define VTIME   17                /* Time-out value (tenths of a second) [!ICANON].  */
  191: #ifdef  __USE_BSD
  192: # define VSTATUS        18             /* Status character [ICANON].  */
  193: #endif
  194: #define NCCS    20         /* Value duplicated in <hurd/tioctl.defs>.  */
  195:   cc_t c_cc[NCCS];
  196: 
  197:   /* Input and output baud rates.  */
  198:   speed_t __ispeed, __ospeed;
  199: #define B0      0            /* Hang up.  */
  200: #define B50     50          /* 50 baud.  */
  201: #define B75     75          /* 75 baud.  */
  202: #define B110    110                /* 110 baud.  */
  203: #define B134    134                /* 134.5 baud.  */
  204: #define B150    150                /* 150 baud.  */
  205: #define B200    200                /* 200 baud.  */
  206: #define B300    300                /* 300 baud.  */
  207: #define B600    600                /* 600 baud.  */
  208: #define B1200   1200              /* 1200 baud.  */
  209: #define B1800   1800              /* 1800 baud.  */
  210: #define B2400   2400              /* 2400 baud.  */
  211: #define B4800   4800              /* 4800 baud.  */
  212: #define B9600   9600              /* 9600 baud.  */
  213: #define B19200  19200            /* 19200 baud.  */
  214: #define B38400  38400            /* 38400 baud.  */
  215: #ifdef  __USE_MISC
  216: # define EXTA   19200
  217: # define EXTB   38400
  218: #endif
  219: #define B57600  57600
  220: #define B115200 115200
  221: #define B230400 230400
  222: #define B460800 460800
  223: #define B500000 500000
  224: #define B576000 576000
  225: #define B921600 921600
  226: #define B1000000 1000000
  227: #define B1152000 1152000
  228: #define B1500000 1500000
  229: #define B2000000 2000000
  230: #define B2500000 2500000
  231: #define B3000000 3000000
  232: #define B3500000 3500000
  233: #define B4000000 4000000
  234: };
  235: 
  236: #define _IOT_termios /* Hurd ioctl type field.  */ \
  237:   _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
  238: 
  239: /* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'.  */
  240: #define TCSANOW         0      /* Change immediately.  */
  241: #define TCSADRAIN       1     /* Change when pending output is written.  */
  242: #define TCSAFLUSH       2     /* Flush pending input before changing.  */
  243: #ifdef  __USE_BSD
  244: # define TCSASOFT       0x10  /* Flag: Don't alter hardware state.  */
  245: #endif
  246: 
  247: /* Values for the QUEUE_SELECTOR argument to `tcflush'.  */
  248: #define TCIFLUSH        1      /* Discard data received but not yet read.  */
  249: #define TCOFLUSH        2      /* Discard data written but not yet sent.  */
  250: #define TCIOFLUSH       3     /* Discard all pending data.  */
  251: 
  252: /* Values for the ACTION argument to `tcflow'.  */
  253: #define TCOOFF  1                /* Suspend output.  */
  254: #define TCOON   2         /* Restart suspended output.  */
  255: #define TCIOFF  3                /* Send a STOP character.  */
  256: #define TCION   4         /* Send a START character.  */
Syntax (Markdown)