1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
/* termios type and macro definitions. Linux version.
Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
/* Type of terminal control flag masks. */
typedef unsigned int tcflag_t;
/* Type of control characters. */
typedef unsigned char cc_t;
/* Type of baud rate specifiers. */
typedef unsigned int speed_t;
/* Terminal control structure. */
struct termios
{
/* Input modes. */
tcflag_t c_iflag;
#define IGNBRK 0x0001 /* Ignore break condition. */
#define BRKINT 0x0002 /* Signal interrupt on break. */
#define IGNPAR 0x0004 /* Ignore characters with parity errors. */
#define PARMRK 0x0008 /* Mark parity and framing errors. */
#define INPCK 0x0010 /* Enable input parity check. */
#define ISTRIP 0x0020 /* Strip 8th bit off characters. */
#define INLCR 0x0040 /* Map NL to CR on input. */
#define IGNCR 0x0080 /* Ignore CR. */
#define ICRNL 0x0100 /* Map CR to NL on input. */
#ifdef __USE_BSD
#define IUCLC 0x0200 /* Map upper case to lower case on input. */
#endif
#define IXON 0x0400 /* Enable start/stop output control. */
#define IXOFF 0x1000 /* Enable start/stop input control. */
#ifdef __USE_BSD
#define IXANY 0x0800 /* Any character will restart after stop. */
#define IMAXBEL 0x2000 /* Ring bell when input queue is full. */
#endif
/* Output modes. */
tcflag_t c_oflag;
#define OPOST 0x0001 /* Perform output processing. */
#ifdef __USE_BSD
#define OLCUC 0x00000002 /* Map lower case to upper case on output. */
#define ONLCR 0x00000004 /* Map NL to CR-NL on output. */
#define OCRNL 0x00000008
#define ONOCR 0x00000010
#define ONLRET 0x00000020
#define OFILL 0x00000040
#define OFDEL 0x00000080
#define NLDLY 0x00000100
#define NL0 0
#define NL1 0x00000100
#define CRDLY 0x00000600
#define CR0 0
#define CR1 0x00000200
#define CR2 0x00000400
#define CR3 0x00000600
#define TABDLY 0x00001800
#define TAB0 0
#define TAB1 0x00000800
#define TAB2 0x00001000
#define XTABS 0x00001800
#define TAB3 XTABS
#define BSDLY 0x00002000
#define BS0 0
#define BS1 0x00002000
#define VTDLY 0x00004000
#define VT0 0
#define VT1 0x00004000
#define FFDLY 0x00008000
#define FF0 0
#define FF1 0x00008000
#define PAGEOUT 0x00010000
#define WRAP 0x00020000
#endif
/* Control modes. */
tcflag_t c_cflag;
#define CSIZE (CS5|CS6|CS7|CS8) /* Number of bits per byte (mask). */
#define CS5 0 /* 5 bits per byte. */
#define CS6 0x00000010 /* 6 bits per byte. */
#define CS7 0x00000020 /* 7 bits per byte. */
#define CS8 0x00000030 /* 8 bits per byte. */
#define CSTOPB 0x00000040 /* Two stop bits instead of one. */
#define CREAD 0x00000080 /* Enable receiver. */
#define PARENB 0x00000100 /* Parity enable. */
#define PARODD 0x00000200 /* Odd parity instead of even. */
#define HUPCL 0x00000400 /* Hang up on last close. */
#define CLOCAL 0x00000800 /* Ignore modem status lines. */
#ifdef __USE_BSD
#define CRTSCTS 0x08000000
#define CBAUD 0x0000000f /* Mask for speed from c_cflag. */
#define CBAUDEX 0x00010000 /* Mask for extended speed from c_cflag. */
#endif
/* Input and output baud rates. These are encoded in c_cflag. */
#define B0 0x000000000
#define B50 0x000000001
#define B75 0x000000002
#define B110 0x000000003
#define B134 0x000000004
#define B150 0x000000005
#define B200 0x000000006
#define B300 0x000000007
#define B600 0x000000008
#define B1200 0x000000009
#define B1800 0x00000000a
#define B2400 0x00000000b
#define B4800 0x00000000c
#define B9600 0x00000000d
#define B19200 0x00000000e
#define B38400 0x00000000f
#ifdef __USE_BSD
#define EXTA 0x00000000e
#define EXTB 0x00000000f
#endif
#define B57600 0x000010001
#define B115200 0x000010002
#define B230400 0x000010003
/* Local modes. */
tcflag_t c_lflag;
#ifdef __USE_BSD
#define ECHOKE 0x00000800 /* Visual erase for KILL. */
#endif
#define ECHOE 0x00000010 /* Visual erase for ERASE. */
#define ECHOK 0x00000020 /* Echo NL after KILL. */
#define ECHO 0x00000008 /* Enable echo. */
#define ECHONL 0x00000040 /* Echo NL even if ECHO is off. */
#ifdef __USE_BSD
#define ECHOPRT 0x00000400 /* Hardcopy visual erase. */
#define ECHOCTL 0x00000200 /* Echo control characters as ^X. */
#endif
#define ISIG 0x00000001 /* Enable signals. */
#define ICANON 0x00000002 /* Do erase and kill processing. */
#define IEXTEN 0x00008000 /* Enable DISCARD and LNEXT. */
#define TOSTOP 0x00000100 /* Send SIGTTOU for background output. */
#ifdef __USE_BSD
#define PENDIN 0x00004000 /* Retype pending input (state). */
#endif
#define NOFLSH 0x00000080 /* Disable flush after interrupt. */
cc_t c_line; /* Line discipline (?) */
/* Control characters. */
#define VEOF 4 /* End-of-file character [ICANON]. */
#define VEOL 5 /* End-of-line character [ICANON]. */
#ifdef __USE_BSD
#define VEOL2 6 /* Second EOL character [ICANON]. */
#define VSWTCH 7 /* ??? */
#endif
#define VERASE 2 /* Erase character [ICANON]. */
#ifdef __USE_BSD
#define VWERASE 14 /* Word-erase character [ICANON]. */
#endif
#define VKILL 3 /* Kill-line character [ICANON]. */
#ifdef __USE_BSD
#define VREPRINT 12 /* Reprint-line character [ICANON]. */
#endif
#define VINTR 0 /* Interrupt character [ISIG]. */
#define VQUIT 1 /* Quit character [ISIG]. */
#define VSUSP 10 /* Suspend character [ISIG]. */
#ifdef __USE_BSD
#define VDSUSP 11 /* Delayed suspend character [ISIG]. */
#endif
#define VSTART 8 /* Start (X-ON) character [IXON, IXOFF]. */
#define VSTOP 9 /* Stop (X-OFF) character [IXON, IXOFF]. */
#ifdef __USE_BSD
#define VLNEXT 15 /* Literal-next character [IEXTEN]. */
#define VDISCARD 13 /* Discard character [IEXTEN]. */
#endif
#define VMIN VEOF /* Minimum number of bytes read at once [!ICANON]. */
#define VTIME VEOL /* Time-out value (tenths of a second) [!ICANON]. */
#define NCCS 19
cc_t c_cc[NCCS];
};
#define _IOT_termios /* Hurd ioctl type field. */ \
_IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
/* Values for the OPTIONAL_ACTIONS argument to `tcsetattr'. */
#define TCSANOW 0 /* Change immediately. */
#define TCSADRAIN 1 /* Change when pending output is written. */
#define TCSAFLUSH 2 /* Flush pending input before changing. */
/* Values for the QUEUE_SELECTOR argument to `tcflush'. */
#define TCIFLUSH 0 /* Discard data received but not yet read. */
#define TCOFLUSH 1 /* Discard data written but not yet sent. */
#define TCIOFLUSH 2 /* Discard all pending data. */
/* Values for the ACTION argument to `tcflow'. */
#define TCOOFF 0 /* Suspend output. */
#define TCOON 1 /* Restart suspended output. */
#define TCIOFF 2 /* Send a STOP character. */
#define TCION 3 /* Send a START character. */
|