hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 1995, 96, 99, 2001, 06 Ralf Baechle
 * Copyright (C) 1999 Silicon Graphics, Inc.
 * Copyright (C) 2001 MIPS Technologies, Inc.
 */
#ifndef _ASM_TERMBITS_H
#define _ASM_TERMBITS_H
 
#include <linux/posix_types.h>
 
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
 
/*
 * The ABI says nothing about NCC but seems to use NCCS as
 * replacement for it in struct termio
 */
#define NCCS    23
struct termios {
   tcflag_t c_iflag;        /* input mode flags */
   tcflag_t c_oflag;        /* output mode flags */
   tcflag_t c_cflag;        /* control mode flags */
   tcflag_t c_lflag;        /* local mode flags */
   cc_t c_line;            /* line discipline */
   cc_t c_cc[NCCS];        /* control characters */
};
 
struct termios2 {
   tcflag_t c_iflag;        /* input mode flags */
   tcflag_t c_oflag;        /* output mode flags */
   tcflag_t c_cflag;        /* control mode flags */
   tcflag_t c_lflag;        /* local mode flags */
   cc_t c_line;            /* line discipline */
   cc_t c_cc[NCCS];        /* control characters */
   speed_t c_ispeed;        /* input speed */
   speed_t c_ospeed;        /* output speed */
};
 
struct ktermios {
   tcflag_t c_iflag;        /* input mode flags */
   tcflag_t c_oflag;        /* output mode flags */
   tcflag_t c_cflag;        /* control mode flags */
   tcflag_t c_lflag;        /* local mode flags */
   cc_t c_line;            /* line discipline */
   cc_t c_cc[NCCS];        /* control characters */
   speed_t c_ispeed;        /* input speed */
   speed_t c_ospeed;        /* output speed */
};
 
/* c_cc characters */
#define VINTR         0        /* Interrupt character [ISIG].    */
#define VQUIT         1        /* Quit character [ISIG].  */
#define VERASE         2        /* Erase character [ICANON].  */
#define VKILL         3        /* Kill-line character [ICANON].  */
#define VMIN         4        /* Minimum number of bytes read at once [!ICANON].  */
#define VTIME         5        /* Time-out value (tenths of a second) [!ICANON].  */
#define VEOL2         6        /* Second EOL character [ICANON].  */
#define VSWTC         7        /* ??? */
#define VSWTCH        VSWTC
#define VSTART         8        /* Start (X-ON) character [IXON, IXOFF].  */
#define VSTOP         9        /* Stop (X-OFF) character [IXON, IXOFF].  */
#define VSUSP        10        /* Suspend character [ISIG].  */
#if 0
/*
 * VDSUSP is not supported
 */
#define VDSUSP        11        /* Delayed suspend character [ISIG].  */
#endif
#define VREPRINT    12        /* Reprint-line character [ICANON].  */
#define VDISCARD    13        /* Discard character [IEXTEN].    */
#define VWERASE        14        /* Word-erase character [ICANON].  */
#define VLNEXT        15        /* Literal-next character [IEXTEN].  */
#define VEOF        16        /* End-of-file character [ICANON].  */
#define VEOL        17        /* End-of-line character [ICANON].  */
 
/* c_iflag bits */
#define IGNBRK    0000001        /* Ignore break condition.  */
#define BRKINT    0000002        /* Signal interrupt on break.  */
#define IGNPAR    0000004        /* Ignore characters with parity errors.  */
#define PARMRK    0000010        /* Mark parity and framing errors.  */
#define INPCK    0000020        /* Enable input parity check.  */
#define ISTRIP    0000040        /* Strip 8th bit off characters.  */
#define INLCR    0000100        /* Map NL to CR on input.  */
#define IGNCR    0000200        /* Ignore CR.  */
#define ICRNL    0000400        /* Map CR to NL on input.  */
#define IUCLC    0001000        /* Map upper case to lower case on input.  */
#define IXON    0002000        /* Enable start/stop output control.  */
#define IXANY    0004000        /* Any character will restart after stop.  */
#define IXOFF    0010000        /* Enable start/stop input control.  */
#define IMAXBEL 0020000        /* Ring bell when input queue is full.    */
#define IUTF8    0040000        /* Input is UTF-8 */
 
/* c_oflag bits */
#define OPOST    0000001        /* Perform output processing.  */
#define OLCUC    0000002        /* Map lower case to upper case on output.  */
#define ONLCR    0000004        /* Map NL to CR-NL on output.  */
#define OCRNL    0000010
#define ONOCR    0000020
#define ONLRET    0000040
#define OFILL    0000100
#define OFDEL    0000200
#define NLDLY    0000400
#define      NL0    0000000
#define      NL1    0000400
#define CRDLY    0003000
#define      CR0    0000000
#define      CR1    0001000
#define      CR2    0002000
#define      CR3    0003000
#define TABDLY    0014000
#define      TAB0    0000000
#define      TAB1    0004000
#define      TAB2    0010000
#define      TAB3    0014000
#define      XTABS 0014000
#define BSDLY    0020000
#define      BS0    0000000
#define      BS1    0020000
#define VTDLY    0040000
#define      VT0    0000000
#define      VT1    0040000
#define FFDLY    0100000
#define      FF0    0000000
#define      FF1    0100000
/*
#define PAGEOUT ???
#define WRAP    ???
 */
 
/* c_cflag bit meaning */
#define CBAUD    0010017
#define     B0    0000000        /* hang up */
#define     B50    0000001
#define     B75    0000002
#define     B110    0000003
#define     B134    0000004
#define     B150    0000005
#define     B200    0000006
#define     B300    0000007
#define     B600    0000010
#define     B1200    0000011
#define     B1800    0000012
#define     B2400    0000013
#define     B4800    0000014
#define     B9600    0000015
#define     B19200 0000016
#define     B38400 0000017
#define EXTA B19200
#define EXTB B38400
#define CSIZE    0000060        /* Number of bits per byte (mask).  */
#define      CS5    0000000        /* 5 bits per byte.  */
#define      CS6    0000020        /* 6 bits per byte.  */
#define      CS7    0000040        /* 7 bits per byte.  */
#define      CS8    0000060        /* 8 bits per byte.  */
#define CSTOPB    0000100        /* Two stop bits instead of one.  */
#define CREAD    0000200        /* Enable receiver.  */
#define PARENB    0000400        /* Parity enable.  */
#define PARODD    0001000        /* Odd parity instead of even.    */
#define HUPCL    0002000        /* Hang up on last close.  */
#define CLOCAL    0004000        /* Ignore modem status lines.  */
#define CBAUDEX 0010000
#define       BOTHER 0010000
#define       B57600 0010001
#define      B115200 0010002
#define      B230400 0010003
#define      B460800 0010004
#define      B500000 0010005
#define      B576000 0010006
#define      B921600 0010007
#define     B1000000 0010010
#define     B1152000 0010011
#define     B1500000 0010012
#define     B2000000 0010013
#define     B2500000 0010014
#define     B3000000 0010015
#define     B3500000 0010016
#define     B4000000 0010017
#define CIBAUD      002003600000    /* input baud rate */
#define CMSPAR      010000000000    /* mark or space (stick) parity */
#define CRTSCTS      020000000000    /* flow control */
 
#define IBSHIFT 16        /* Shift from CBAUD to CIBAUD */
 
/* c_lflag bits */
#define ISIG    0000001        /* Enable signals.  */
#define ICANON    0000002        /* Do erase and kill processing.  */
#define XCASE    0000004
#define ECHO    0000010        /* Enable echo.     */
#define ECHOE    0000020        /* Visual erase for ERASE.  */
#define ECHOK    0000040        /* Echo NL after KILL.    */
#define ECHONL    0000100        /* Echo NL even if ECHO is off.     */
#define NOFLSH    0000200        /* Disable flush after interrupt.  */
#define IEXTEN    0000400        /* Enable DISCARD and LNEXT.  */
#define ECHOCTL 0001000        /* Echo control characters as ^X.  */
#define ECHOPRT 0002000        /* Hardcopy visual erase.  */
#define ECHOKE    0004000        /* Visual erase for KILL.  */
#define FLUSHO    0020000
#define PENDIN    0040000        /* Retype pending input (state).  */
#define TOSTOP    0100000        /* Send SIGTTOU for background output.    */
#define ITOSTOP TOSTOP
#define EXTPROC 0200000        /* External processing on pty */
 
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
#define TIOCSER_TEMT    0x01    /* Transmitter physically empty */
 
/* tcflow() and TCXONC use these */
#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.  */
 
/* tcflush() and TCFLSH use these */
#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.  */
 
/* tcsetattr uses these */
#define TCSANOW        TCSETS    /* Change immediately.    */
#define TCSADRAIN    TCSETSW /* Change when pending output is written.  */
#define TCSAFLUSH    TCSETSF /* Flush pending input before changing.     */
 
#endif /* _ASM_TERMBITS_H */