summaryrefslogtreecommitdiffstats
path: root/linux-user/generic/termbits.h
blob: 6675e0d1abab1ef259ae049bf82301957de4dee2 (plain) (blame)
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
/* Derived from asm-generic/termbits.h */

#ifndef GENERIC_TERMBITS_H
#define GENERIC_TERMBITS_H

typedef unsigned char   target_cc_t;        /* cc_t */
typedef unsigned int    target_speed_t;     /* speed_t */
typedef unsigned int    target_tcflag_t;    /* tcflag_t */

#define TARGET_NCCS 19

struct target_termios {
    target_tcflag_t c_iflag;         /* input mode flags */
    target_tcflag_t c_oflag;         /* output mode flags */
    target_tcflag_t c_cflag;         /* control mode flags */
    target_tcflag_t c_lflag;         /* local mode flags */
    target_cc_t c_line;              /* line discipline */
    target_cc_t c_cc[TARGET_NCCS];   /* control characters */
};

struct target_termios2 {
    target_tcflag_t c_iflag;       /* input mode flags */
    target_tcflag_t c_oflag;       /* output mode flags */
    target_tcflag_t c_cflag;       /* control mode flags */
    target_tcflag_t c_lflag;       /* local mode flags */
    target_cc_t c_line;            /* line discipline */
    target_cc_t c_cc[TARGET_NCCS]; /* control characters */
    target_speed_t c_ispeed;       /* input speed */
    target_speed_t c_ospeed;       /* output speed */
};

struct target_ktermios {
    target_tcflag_t c_iflag;       /* input mode flags */
    target_tcflag_t c_oflag;       /* output mode flags */
    target_tcflag_t c_cflag;       /* control mode flags */
    target_tcflag_t c_lflag;       /* local mode flags */
    target_cc_t c_line;            /* line discipline */
    target_cc_t c_cc[TARGET_NCCS]; /* control characters */
    target_speed_t c_ispeed;       /* input speed */
    target_speed_t c_ospeed;       /* output speed */
};

/* c_cc character offsets */
#define TARGET_VINTR    0
#define TARGET_VQUIT    1
#define TARGET_VERASE   2
#define TARGET_VKILL    3
#define TARGET_VEOF     4
#define TARGET_VTIME    5
#define TARGET_VMIN     6
#define TARGET_VSWTC    7
#define TARGET_VSTART   8
#define TARGET_VSTOP    9
#define TARGET_VSUSP    10
#define TARGET_VEOL     11
#define TARGET_VREPRINT 12
#define TARGET_VDISCARD 13
#define TARGET_VWERASE  14
#define TARGET_VLNEXT   15
#define TARGET_VEOL2    16

/* c_iflag bits */
#define TARGET_IGNBRK   0000001
#define TARGET_BRKINT   0000002
#define TARGET_IGNPAR   0000004
#define TARGET_PARMRK   0000010
#define TARGET_INPCK    0000020
#define TARGET_ISTRIP   0000040
#define TARGET_INLCR    0000100
#define TARGET_IGNCR    0000200
#define TARGET_ICRNL    0000400
#define TARGET_IUCLC    0001000
#define TARGET_IXON     0002000
#define TARGET_IXANY    0004000
#define TARGET_IXOFF    0010000
#define TARGET_IMAXBEL  0020000
#define TARGET_IUTF8    0040000

/* c_oflag bits */
#define TARGET_OPOST    0000001
#define TARGET_OLCUC    0000002
#define TARGET_ONLCR    0000004
#define TARGET_OCRNL    0000010
#define TARGET_ONOCR    0000020
#define TARGET_ONLRET   0000040
#define TARGET_OFILL    0000100
#define TARGET_OFDEL    0000200
#define TARGET_NLDLY    0000400
#define  TARGET_NL0     0000000
#define  TARGET_NL1     0000400
#define TARGET_CRDLY    0003000
#define  TARGET_CR0     0000000
#define  TARGET_CR1     0001000
#define  TARGET_CR2     0002000
#define  TARGET_CR3     0003000
#define TARGET_TABDLY   0014000
#define  TARGET_TAB0    0000000
#define  TARGET_TAB1    0004000
#define  TARGET_TAB2    0010000
#define  TARGET_TAB3    0014000
#define  TARGET_XTABS   0014000
#define TARGET_BSDLY    0020000
#define  TARGET_BS0     0000000
#define  TARGET_BS1     0020000
#define TARGET_VTDLY    0040000
#define  TARGET_VT0     0000000
#define  TARGET_VT1     0040000
#define TARGET_FFDLY    0100000
#define  TARGET_FF0     0000000
#define  TARGET_FF1     0100000

/* c_cflag bit meaning */
#define TARGET_CBAUD      0010017
#define  TARGET_B0        0000000  /* hang up */
#define  TARGET_B50       0000001
#define  TARGET_B75       0000002
#define  TARGET_B110      0000003
#define  TARGET_B134      0000004
#define  TARGET_B150      0000005
#define  TARGET_B200      0000006
#define  TARGET_B300      0000007
#define  TARGET_B600      0000010
#define  TARGET_B1200     0000011
#define  TARGET_B1800     0000012
#define  TARGET_B2400     0000013
#define  TARGET_B4800     0000014
#define  TARGET_B9600     0000015
#define  TARGET_B19200    0000016
#define  TARGET_B38400    0000017
#define  TARGET_EXTA      TARGET_B19200
#define  TARGET_EXTB      TARGET_B38400
#define TARGET_CSIZE      0000060
#define  TARGET_CS5       0000000
#define  TARGET_CS6       0000020
#define  TARGET_CS7       0000040
#define  TARGET_CS8       0000060
#define TARGET_CSTOPB     0000100
#define TARGET_CREAD      0000200
#define TARGET_PARENB     0000400
#define TARGET_PARODD     0001000
#define TARGET_HUPCL      0002000
#define TARGET_CLOCAL     0004000
#define TARGET_CBAUDEX    0010000
#define  TARGET_BOTHER    0010000
#define  TARGET_B57600    0010001
#define  TARGET_B115200   0010002
#define  TARGET_B230400   0010003
#define  TARGET_B460800   0010004
#define  TARGET_B500000   0010005
#define  TARGET_B576000   0010006
#define  TARGET_B921600   0010007
#define  TARGET_B1000000  0010010
#define  TARGET_B1152000  0010011
#define  TARGET_B1500000  0010012
#define  TARGET_B2000000  0010013
#define  TARGET_B2500000  0010014
#define  TARGET_B3000000  0010015
#define  TARGET_B3500000  0010016
#define  TARGET_B4000000  0010017
#define TARGET_CIBAUD     002003600000  /* input baud rate (not used) */
#define TARGET_CMSPAR     010000000000  /* mark or space (stick) parity */
#define TARGET_CRTSCTS    020000000000  /* flow control */

#define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */

/* c_lflag bits */
#define TARGET_ISIG       0000001
#define TARGET_ICANON     0000002
#define TARGET_XCASE      0000004
#define TARGET_ECHO       0000010
#define TARGET_ECHOE      0000020
#define TARGET_ECHOK      0000040
#define TARGET_ECHONL     0000100
#define TARGET_NOFLSH     0000200
#define TARGET_TOSTOP     0000400
#define TARGET_ECHOCTL    0001000
#define TARGET_ECHOPRT    0002000
#define TARGET_ECHOKE     0004000
#define TARGET_FLUSHO     0010000
#define TARGET_PENDIN     0040000
#define TARGET_IEXTEN     0100000
#define TARGET_EXTPROC    0200000

/* tcflow() and TCXONC use these */
#define TARGET_TCOOFF          0
#define TARGET_TCOON           1
#define TARGET_TCIOFF          2
#define TARGET_TCION           3

/* tcflush() and TCFLSH use these */
#define TARGET_TCIFLUSH        0
#define TARGET_TCOFLUSH        1
#define TARGET_TCIOFLUSH       2

/* tcsetattr uses these */
#define TARGET_TCSANOW         0
#define TARGET_TCSADRAIN       1
#define TARGET_TCSAFLUSH       2

/* Derived from include/uapi/asm-generic/ioctls.h */

#define TARGET_TCGETS           0x5401
#define TARGET_TCSETS           0x5402
#define TARGET_TCSETSW          0x5403
#define TARGET_TCSETSF          0x5404
#define TARGET_TCGETA           0x5405
#define TARGET_TCSETA           0x5406
#define TARGET_TCSETAW          0x5407
#define TARGET_TCSETAF          0x5408
#define TARGET_TCSBRK           0x5409
#define TARGET_TCXONC           0x540A
#define TARGET_TCFLSH           0x540B

#define TARGET_TIOCEXCL         0x540C
#define TARGET_TIOCNXCL         0x540D
#define TARGET_TIOCSCTTY        0x540E
#define TARGET_TIOCGPGRP        0x540F
#define TARGET_TIOCSPGRP        0x5410
#define TARGET_TIOCOUTQ         0x5411
#define TARGET_TIOCSTI          0x5412
#define TARGET_TIOCGWINSZ       0x5413
#define TARGET_TIOCSWINSZ       0x5414
#define TARGET_TIOCMGET         0x5415
#define TARGET_TIOCMBIS         0x5416
#define TARGET_TIOCMBIC         0x5417
#define TARGET_TIOCMSET         0x5418
#define TARGET_TIOCGSOFTCAR     0x5419
#define TARGET_TIOCSSOFTCAR     0x541A
#define TARGET_FIONREAD         0x541B
#define TARGET_TIOCINQ          TARGET_FIONREAD
#define TARGET_TIOCLINUX        0x541C
#define TARGET_TIOCCONS         0x541D
#define TARGET_TIOCGSERIAL      0x541E
#define TARGET_TIOCSSERIAL      0x541F
#define TARGET_TIOCPKT          0x5420
#define TARGET_FIONBIO          0x5421
#define TARGET_TIOCNOTTY        0x5422
#define TARGET_TIOCSETD         0x5423
#define TARGET_TIOCGETD         0x5424
#define TARGET_TCSBRKP          0x5425 /* Needed for POSIX tcsendbreak() */
#define TARGET_TIOCTTYGSTRUCT   0x5426 /* For debugging only */
#define TARGET_TIOCSBRK         0x5427 /* BSD compatibility */
#define TARGET_TIOCCBRK         0x5428 /* BSD compatibility */
#define TARGET_TIOCGSID         0x5429 /* Return the session ID of FD */
#define TARGET_TCGETS2          TARGET_IOR('T', 0x2A, struct target_termios2)
#define TARGET_TCSETS2          TARGET_IOW('T', 0x2B, struct target_termios2)
#define TARGET_TCSETSW2         TARGET_IOW('T', 0x2C, struct target_termios2)
#define TARGET_TCSETSF2         TARGET_IOW('T', 0x2D, struct target_termios2)
#define TARGET_TIOCGRS485       0x542E
#ifndef TARGET_TIOCSRS485
#define TARGET_TIOCSRS485       0x542F
#endif
/* Get Pty Number (of pty-mux device) */
#define TARGET_TIOCGPTN         TARGET_IOR('T', 0x30, unsigned int)
/* Lock/unlock Pty */
#define TARGET_TIOCSPTLCK       TARGET_IOW('T', 0x31, int)

/* Get primary device node of /dev/console */
#define TARGET_TIOCGDEV        TARGET_IOR('T', 0x32, unsigned int)
#define TARGET_TCGETX          0x5432 /* SYS5 TCGETX compatibility */
#define TARGET_TCSETX          0x5433
#define TARGET_TCSETXF         0x5434
#define TARGET_TCSETXW         0x5435
/* pty: generate signal */
#define TARGET_TIOCSIG         TARGET_IOW('T', 0x36, int)
#define TARGET_TIOCVHANGUP     0x5437
/* Get packet mode state */
#define TARGET_TIOCGPKT        TARGET_IOR('T', 0x38, int)
/* Get Pty lock state */
#define TARGET_TIOCGPTLCK      TARGET_IOR('T', 0x39, int)
/* Get exclusive mode state */
#define TARGET_TIOCGEXCL       TARGET_IOR('T', 0x40, int)
/* Safely open the slave */
#define TARGET_TIOCGPTPEER     TARGET_IO('T', 0x41)
#define TARGET_TIOCGISO7816    TARGET_IOR('T', 0x42, struct serial_iso7816)
#define TARGET_TIOCSISO7816    TARGET_IOWR('T', 0x43, struct serial_iso7816)

#define TARGET_FIONCLEX         0x5450 /* these numbers need to be adjusted */
#define TARGET_FIOCLEX          0x5451
#define TARGET_FIOASYNC         0x5452
#define TARGET_TIOCSERCONFIG    0x5453
#define TARGET_TIOCSERGWILD     0x5454
#define TARGET_TIOCSERSWILD     0x5455
#define TARGET_TIOCGLCKTRMIOS   0x5456
#define TARGET_TIOCSLCKTRMIOS   0x5457
#define TARGET_TIOCSERGSTRUCT   0x5458 /* For debugging only */
#define TARGET_TIOCSERGETLSR    0x5459 /* Get line status register */
#define TARGET_TIOCSERGETMULTI  0x545A /* Get multiport config  */
#define TARGET_TIOCSERSETMULTI  0x545B /* Set multiport config */

/* wait for a change on serial input line(s) */
#define TARGET_TIOCMIWAIT       0x545C
/* read serial port inline interrupt counts */
#define TARGET_TIOCGICOUNT      0x545D
#define TARGET_TIOCGHAYESESP    0x545E  /* Get Hayes ESP configuration */
#define TARGET_TIOCSHAYESESP    0x545F  /* Set Hayes ESP configuration */

/*
 * Some arches already define TARGET_FIOQSIZE due to a historical
 * conflict with a Hayes modem-specific ioctl value.
 */
#ifndef TARGET_FIOQSIZE
# define TARGET_FIOQSIZE        0x5460
#endif

/* Used for packet mode */
#define TARGET_TIOCPKT_DATA              0
#define TARGET_TIOCPKT_FLUSHREAD         1
#define TARGET_TIOCPKT_FLUSHWRITE        2
#define TARGET_TIOCPKT_STOP              4
#define TARGET_TIOCPKT_START             8
#define TARGET_TIOCPKT_NOSTOP            16
#define TARGET_TIOCPKT_DOSTOP            32
#define TARGET_TIOCPKT_IOCTL             64

#define TARGET_TIOCSER_TEMT     0x01 /* Transmitter physically empty */

#endif