Blame bits/termios.h

Packit 6c4009
/* termios type and macro definitions.  4.4 BSD/generic GNU version.
Packit 6c4009
   Copyright (C) 1993-2018 Free Software Foundation, Inc.
Packit 6c4009
   This file is part of the GNU C Library.
Packit 6c4009
Packit 6c4009
   The GNU C Library is free software; you can redistribute it and/or
Packit 6c4009
   modify it under the terms of the GNU Lesser General Public
Packit 6c4009
   License as published by the Free Software Foundation; either
Packit 6c4009
   version 2.1 of the License, or (at your option) any later version.
Packit 6c4009
Packit 6c4009
   The GNU C Library is distributed in the hope that it will be useful,
Packit 6c4009
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 6c4009
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 6c4009
   Lesser General Public License for more details.
Packit 6c4009
Packit 6c4009
   You should have received a copy of the GNU Lesser General Public
Packit 6c4009
   License along with the GNU C Library; if not, see
Packit 6c4009
   <http://www.gnu.org/licenses/>.  */
Packit 6c4009
Packit 6c4009
#ifndef _TERMIOS_H
Packit 6c4009
# error "Never include <bits/termios.h> directly; use <termios.h> instead."
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
/* These macros are also defined in some <bits/ioctls.h> files (with
Packit 6c4009
   numerically identical values), but this serves to shut up cpp's
Packit 6c4009
   complaining. */
Packit 6c4009
#if defined __USE_MISC || defined __USE_XOPEN
Packit 6c4009
Packit 6c4009
# ifdef NL0
Packit 6c4009
#  undef NL0
Packit 6c4009
# endif
Packit 6c4009
# ifdef NL1
Packit 6c4009
#  undef NL1
Packit 6c4009
# endif
Packit 6c4009
# ifdef TAB0
Packit 6c4009
#  undef TAB0
Packit 6c4009
# endif
Packit 6c4009
# ifdef TAB1
Packit 6c4009
#  undef TAB1
Packit 6c4009
# endif
Packit 6c4009
# ifdef TAB2
Packit 6c4009
#  undef TAB2
Packit 6c4009
# endif
Packit 6c4009
# ifdef CR0
Packit 6c4009
#  undef CR0
Packit 6c4009
# endif
Packit 6c4009
# ifdef CR1
Packit 6c4009
#  undef CR1
Packit 6c4009
# endif
Packit 6c4009
# ifdef CR2
Packit 6c4009
#  undef CR2
Packit 6c4009
# endif
Packit 6c4009
# ifdef CR3
Packit 6c4009
#  undef CR3
Packit 6c4009
# endif
Packit 6c4009
# ifdef FF0
Packit 6c4009
#  undef FF0
Packit 6c4009
# endif
Packit 6c4009
# ifdef FF1
Packit 6c4009
#  undef FF1
Packit 6c4009
# endif
Packit 6c4009
# ifdef BS0
Packit 6c4009
#  undef BS0
Packit 6c4009
# endif
Packit 6c4009
# ifdef BS1
Packit 6c4009
#  undef BS1
Packit 6c4009
# endif
Packit 6c4009
Packit 6c4009
#endif /* __USE_MISC || __USE_XOPEN */
Packit 6c4009
Packit 6c4009
#ifdef __USE_MISC
Packit 6c4009
Packit 6c4009
# ifdef MDMBUF
Packit 6c4009
#  undef MDMBUF
Packit 6c4009
# endif
Packit 6c4009
# ifdef FLUSHO
Packit 6c4009
#  undef FLUSHO
Packit 6c4009
# endif
Packit 6c4009
# ifdef PENDIN
Packit 6c4009
#  undef PENDIN
Packit 6c4009
# endif
Packit 6c4009
Packit 6c4009
#endif /* __USE_MISC */
Packit 6c4009
Packit 6c4009
#ifdef ECHO
Packit 6c4009
# undef ECHO
Packit 6c4009
#endif
Packit 6c4009
#ifdef TOSTOP
Packit 6c4009
# undef TOSTOP
Packit 6c4009
#endif
Packit 6c4009
#ifdef NOFLSH
Packit 6c4009
# undef NOFLSH
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
Packit 6c4009
/* These definitions match those used by the 4.4 BSD kernel.
Packit 6c4009
   If the operating system has termios system calls or ioctls that
Packit 6c4009
   correctly implement the POSIX.1 behavior, there should be a
Packit 6c4009
   system-dependent version of this file that defines `struct termios',
Packit 6c4009
   `tcflag_t', `cc_t', `speed_t' and the `TC*' constants appropriately.  */
Packit 6c4009
Packit 6c4009
/* Type of terminal control flag masks.  */
Packit 6c4009
typedef unsigned long int tcflag_t;
Packit 6c4009
Packit 6c4009
/* Type of control characters.  */
Packit 6c4009
typedef unsigned char cc_t;
Packit 6c4009
Packit 6c4009
/* Type of baud rate specifiers.  */
Packit 6c4009
typedef long int speed_t;
Packit 6c4009
Packit 6c4009
/* Terminal control structure.  */
Packit 6c4009
struct termios
Packit 6c4009
{
Packit 6c4009
  /* Input modes.  */
Packit 6c4009
  tcflag_t c_iflag;
Packit 6c4009
#define	IGNBRK	(1 << 0)	/* Ignore break condition.  */
Packit 6c4009
#define	BRKINT	(1 << 1)	/* Signal interrupt on break.  */
Packit 6c4009
#define	IGNPAR	(1 << 2)	/* Ignore characters with parity errors.  */
Packit 6c4009
#define	PARMRK	(1 << 3)	/* Mark parity and framing errors.  */
Packit 6c4009
#define	INPCK	(1 << 4)	/* Enable input parity check.  */
Packit 6c4009
#define	ISTRIP	(1 << 5)	/* Strip 8th bit off characters.  */
Packit 6c4009
#define	INLCR	(1 << 6)	/* Map NL to CR on input.  */
Packit 6c4009
#define	IGNCR	(1 << 7)	/* Ignore CR.  */
Packit 6c4009
#define	ICRNL	(1 << 8)	/* Map CR to NL on input.  */
Packit 6c4009
#define	IXON	(1 << 9)	/* Enable start/stop output control.  */
Packit 6c4009
#define	IXOFF	(1 << 10)	/* Enable start/stop input control.  */
Packit 6c4009
#if defined __USE_MISC || defined __USE_XOPEN || defined __USE_XOPEN2K8
Packit 6c4009
# define IXANY	(1 << 11)	/* Any character will restart after stop.  */
Packit 6c4009
#endif
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define IMAXBEL (1 << 13)	/* Ring bell when input queue is full.  */
Packit 6c4009
#endif
Packit 6c4009
#if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
Packit 6c4009
# define IUCLC	(1 << 14)	/* Translate upper case input to lower case. */
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
  /* Output modes.  */
Packit 6c4009
  tcflag_t c_oflag;
Packit 6c4009
#define	OPOST	(1 << 0)	/* Perform output processing.  */
Packit 6c4009
#if defined __USE_MISC || defined __USE_XOPEN
Packit 6c4009
# define ONLCR	(1 << 1)	/* Map NL to CR-NL on output.  */
Packit 6c4009
#endif
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define OXTABS	TAB3		/* Expand tabs to spaces.  */
Packit 6c4009
# define ONOEOT	(1 << 3)	/* Discard EOT (^D) on output.  */
Packit 6c4009
#endif
Packit 6c4009
#if defined __USE_MISC || defined __USE_XOPEN
Packit 6c4009
# define OCRNL	(1 << 4)	/* Map CR to NL.  */
Packit 6c4009
# define ONOCR	(1 << 5)	/* Discard CR's when on column 0.  */
Packit 6c4009
# define ONLRET	(1 << 6)	/* Move to column 0 on NL.  */
Packit 6c4009
#endif
Packit 6c4009
#if defined __USE_MISC || defined __USE_XOPEN
Packit 6c4009
# define NLDLY	(3 << 8)	/* NL delay.  */
Packit 6c4009
# define NL0	(0 << 8)	/* NL type 0.  */
Packit 6c4009
# define NL1	(1 << 8)	/* NL type 1.  */
Packit 6c4009
# define TABDLY	(3 << 10 | 1 << 2)	/* TAB delay.  */
Packit 6c4009
# define TAB0	(0 << 10)	/* TAB delay type 0.  */
Packit 6c4009
# define TAB1	(1 << 10)	/* TAB delay type 1.  */
Packit 6c4009
# define TAB2	(2 << 10)	/* TAB delay type 2.  */
Packit 6c4009
# define TAB3	(1 << 2)	/* Expand tabs to spaces.  */
Packit 6c4009
# define CRDLY	(3 << 12)	/* CR delay.  */
Packit 6c4009
# define CR0	(0 << 12)	/* CR delay type 0.  */
Packit 6c4009
# define CR1	(1 << 12)	/* CR delay type 1.  */
Packit 6c4009
# define CR2	(2 << 12)	/* CR delay type 2.  */
Packit 6c4009
# define CR3	(3 << 12)	/* CR delay type 3.  */
Packit 6c4009
# define FFDLY	(1 << 14)	/* FF delay.  */
Packit 6c4009
# define FF0	(0 << 14)	/* FF delay type 0.  */
Packit 6c4009
# define FF1	(1 << 14)	/* FF delay type 1.  */
Packit 6c4009
# define BSDLY	(1 << 15)	/* BS delay.  */
Packit 6c4009
# define BS0	(0 << 15)	/* BS delay type 0.  */
Packit 6c4009
# define BS1	(1 << 15)	/* BS delay type 1.  */
Packit 6c4009
# define VTDLY	(1 << 16)	/* VT delay.  */
Packit 6c4009
# define VT0	(0 << 16)	/* VT delay type 0.  */
Packit 6c4009
# define VT1	(1 << 16)	/* VT delay type 1.  */
Packit 6c4009
#endif /* __USE_MISC || __USE_XOPEN */
Packit 6c4009
#if defined __USE_GNU || (defined __USE_XOPEN && !defined __USE_XOPEN2K)
Packit 6c4009
# define OLCUC	(1 << 17)	/* Translate lower case output to upper case */
Packit 6c4009
#endif
Packit 6c4009
#ifdef __USE_XOPEN
Packit 6c4009
# define OFILL	(1 << 18)	/* Send fill characters for delays.  */
Packit 6c4009
# define OFDEL	(1 << 19)	/* Fill is DEL.  */
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
  /* Control modes.  */
Packit 6c4009
  tcflag_t c_cflag;
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define CIGNORE	(1 << 0)	/* Ignore these control flags.  */
Packit 6c4009
#endif
Packit 6c4009
#define	CSIZE	(CS5|CS6|CS7|CS8)	/* Number of bits per byte (mask).  */
Packit 6c4009
#define	CS5	0		/* 5 bits per byte.  */
Packit 6c4009
#define	CS6	(1 << 8)	/* 6 bits per byte.  */
Packit 6c4009
#define	CS7	(1 << 9)	/* 7 bits per byte.  */
Packit 6c4009
#define	CS8	(CS6|CS7)	/* 8 bits per byte.  */
Packit 6c4009
#define	CSTOPB	(1 << 10)	/* Two stop bits instead of one.  */
Packit 6c4009
#define	CREAD	(1 << 11)	/* Enable receiver.  */
Packit 6c4009
#define	PARENB	(1 << 12)	/* Parity enable.  */
Packit 6c4009
#define	PARODD	(1 << 13)	/* Odd parity instead of even.  */
Packit 6c4009
#define	HUPCL	(1 << 14)	/* Hang up on last close.  */
Packit 6c4009
#define	CLOCAL	(1 << 15)	/* Ignore modem status lines.  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define CRTSCTS	(1 << 16)	/* RTS/CTS flow control.  */
Packit 6c4009
# define CRTS_IFLOW	CRTSCTS		/* Compatibility.  */
Packit 6c4009
# define CCTS_OFLOW	CRTSCTS		/* Compatibility.  */
Packit 6c4009
# define CDTRCTS	(1 << 17)	/* DTR/CTS flow control.  */
Packit 6c4009
# define MDMBUF		(1 << 20)	/* DTR/DCD flow control.  */
Packit 6c4009
# define CHWFLOW	(MDMBUF|CRTSCTS|CDTRCTS) /* All types of flow control.  */
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
  /* Local modes.  */
Packit 6c4009
  tcflag_t c_lflag;
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define ECHOKE	(1 << 0)	/* Visual erase for KILL.  */
Packit 6c4009
#endif
Packit 6c4009
#define	_ECHOE	(1 << 1)	/* Visual erase for ERASE.  */
Packit 6c4009
#define	ECHOE	_ECHOE
Packit 6c4009
#define	_ECHOK	(1 << 2)	/* Echo NL after KILL.  */
Packit 6c4009
#define	ECHOK	_ECHOK
Packit 6c4009
#define	_ECHO	(1 << 3)	/* Enable echo.  */
Packit 6c4009
#define	ECHO	_ECHO
Packit 6c4009
#define	_ECHONL	(1 << 4)	/* Echo NL even if ECHO is off.  */
Packit 6c4009
#define	ECHONL	_ECHONL
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define ECHOPRT	(1 << 5)	/* Hardcopy visual erase.  */
Packit 6c4009
# define ECHOCTL	(1 << 6)	/* Echo control characters as ^X.  */
Packit 6c4009
#endif
Packit 6c4009
#define	_ISIG	(1 << 7)	/* Enable signals.  */
Packit 6c4009
#define	ISIG	_ISIG
Packit 6c4009
#define	_ICANON	(1 << 8)	/* Do erase and kill processing.  */
Packit 6c4009
#define	ICANON	_ICANON
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define ALTWERASE (1 << 9)	/* Alternate WERASE algorithm.  */
Packit 6c4009
#endif
Packit 6c4009
#define	_IEXTEN	(1 << 10)	/* Enable DISCARD and LNEXT.  */
Packit 6c4009
#define	IEXTEN	_IEXTEN
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define EXTPROC	(1 << 11)	/* External processing.  */
Packit 6c4009
#endif
Packit 6c4009
#define	_TOSTOP	(1 << 22)	/* Send SIGTTOU for background output.  */
Packit 6c4009
#define	TOSTOP	_TOSTOP
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define FLUSHO	(1 << 23)	/* Output being flushed (state).  */
Packit 6c4009
#endif
Packit 6c4009
#if defined __USE_XOPEN && !defined __USE_XOPEN2K
Packit 6c4009
# define XCASE	(1 << 24)	/* Canonical upper/lower case.  */
Packit 6c4009
#endif
Packit 6c4009
#ifdef __USE_MISC
Packit 6c4009
# define NOKERNINFO (1 << 25)	/* Disable VSTATUS.  */
Packit 6c4009
# define PENDIN	(1 << 29)	/* Retype pending input (state).  */
Packit 6c4009
#endif
Packit 6c4009
#define	_NOFLSH	(1 << 31)	/* Disable flush after interrupt.  */
Packit 6c4009
#define	NOFLSH	_NOFLSH
Packit 6c4009
Packit 6c4009
  /* Control characters.  */
Packit 6c4009
#define	VEOF	0		/* End-of-file character [ICANON].  */
Packit 6c4009
#define	VEOL	1		/* End-of-line character [ICANON].  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define VEOL2	2		/* Second EOL character [ICANON].  */
Packit 6c4009
#endif
Packit 6c4009
#define	VERASE	3		/* Erase character [ICANON].  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define VWERASE	4		/* Word-erase character [ICANON].  */
Packit 6c4009
#endif
Packit 6c4009
#define	VKILL	5		/* Kill-line character [ICANON].  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define VREPRINT 6		/* Reprint-line character [ICANON].  */
Packit 6c4009
#endif
Packit 6c4009
#define	VINTR	8		/* Interrupt character [ISIG].  */
Packit 6c4009
#define	VQUIT	9		/* Quit character [ISIG].  */
Packit 6c4009
#define	VSUSP	10		/* Suspend character [ISIG].  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define VDSUSP	11		/* Delayed suspend character [ISIG].  */
Packit 6c4009
#endif
Packit 6c4009
#define	VSTART	12		/* Start (X-ON) character [IXON, IXOFF].  */
Packit 6c4009
#define	VSTOP	13		/* Stop (X-OFF) character [IXON, IXOFF].  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define VLNEXT	14		/* Literal-next character [IEXTEN].  */
Packit 6c4009
# define VDISCARD 15		/* Discard character [IEXTEN].  */
Packit 6c4009
#endif
Packit 6c4009
#define	VMIN	16		/* Minimum number of bytes read at once [!ICANON].  */
Packit 6c4009
#define	VTIME	17		/* Time-out value (tenths of a second) [!ICANON].  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define VSTATUS	18		/* Status character [ICANON].  */
Packit 6c4009
#endif
Packit 6c4009
#define	NCCS	20		/* Value duplicated in <hurd/tioctl.defs>.  */
Packit 6c4009
  cc_t c_cc[NCCS];
Packit 6c4009
Packit 6c4009
  /* Input and output baud rates.  */
Packit 6c4009
  speed_t __ispeed, __ospeed;
Packit 6c4009
#define	B0	0		/* Hang up.  */
Packit 6c4009
#define	B50	50		/* 50 baud.  */
Packit 6c4009
#define	B75	75		/* 75 baud.  */
Packit 6c4009
#define	B110	110		/* 110 baud.  */
Packit 6c4009
#define	B134	134		/* 134.5 baud.  */
Packit 6c4009
#define	B150	150		/* 150 baud.  */
Packit 6c4009
#define	B200	200		/* 200 baud.  */
Packit 6c4009
#define	B300	300		/* 300 baud.  */
Packit 6c4009
#define	B600	600		/* 600 baud.  */
Packit 6c4009
#define	B1200	1200		/* 1200 baud.  */
Packit 6c4009
#define	B1800	1800		/* 1800 baud.  */
Packit 6c4009
#define	B2400	2400		/* 2400 baud.  */
Packit 6c4009
#define	B4800	4800		/* 4800 baud.  */
Packit 6c4009
#define	B9600	9600		/* 9600 baud.  */
Packit 6c4009
#define	B7200	7200		/* 7200 baud.  */
Packit 6c4009
#define	B14400	14400		/* 14400 baud.  */
Packit 6c4009
#define	B19200	19200		/* 19200 baud.  */
Packit 6c4009
#define	B28800	28800		/* 28800 baud.  */
Packit 6c4009
#define	B38400	38400		/* 38400 baud.  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define EXTA	19200
Packit 6c4009
# define EXTB	38400
Packit 6c4009
#endif
Packit 6c4009
#define	B57600	57600
Packit 6c4009
#define	B76800	76800
Packit 6c4009
#define	B115200	115200
Packit 6c4009
#define	B230400	230400
Packit 6c4009
#define	B460800	460800
Packit 6c4009
#define	B500000	500000
Packit 6c4009
#define	B576000	576000
Packit 6c4009
#define	B921600	921600
Packit 6c4009
#define	B1000000 1000000
Packit 6c4009
#define	B1152000 1152000
Packit 6c4009
#define	B1500000 1500000
Packit 6c4009
#define	B2000000 2000000
Packit 6c4009
#define	B2500000 2500000
Packit 6c4009
#define	B3000000 3000000
Packit 6c4009
#define	B3500000 3500000
Packit 6c4009
#define	B4000000 4000000
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
#define _IOT_termios /* Hurd ioctl type field.  */ \
Packit 6c4009
  _IOT (_IOTS (tcflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
Packit 6c4009
Packit 6c4009
/* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'.  */
Packit 6c4009
#define	TCSANOW		0	/* Change immediately.  */
Packit 6c4009
#define	TCSADRAIN	1	/* Change when pending output is written.  */
Packit 6c4009
#define	TCSAFLUSH	2	/* Flush pending input before changing.  */
Packit 6c4009
#ifdef	__USE_MISC
Packit 6c4009
# define TCSASOFT	0x10	/* Flag: Don't alter hardware state.  */
Packit 6c4009
#endif
Packit 6c4009
Packit 6c4009
/* Values for the QUEUE_SELECTOR argument to `tcflush'.  */
Packit 6c4009
#define	TCIFLUSH	1	/* Discard data received but not yet read.  */
Packit 6c4009
#define	TCOFLUSH	2	/* Discard data written but not yet sent.  */
Packit 6c4009
#define	TCIOFLUSH	3	/* Discard all pending data.  */
Packit 6c4009
Packit 6c4009
/* Values for the ACTION argument to `tcflow'.  */
Packit 6c4009
#define	TCOOFF	1		/* Suspend output.  */
Packit 6c4009
#define	TCOON	2		/* Restart suspended output.  */
Packit 6c4009
#define	TCIOFF	3		/* Send a STOP character.  */
Packit 6c4009
#define	TCION	4		/* Send a START character.  */