xref: /qemu/linux-user/generic/termbits.h (revision e3a6e0da)
1 /* Derived from asm-generic/termbits.h */
2 
3 #ifndef GENERIC_TERMBITS_H
4 #define GENERIC_TERMBITS_H
5 
6 typedef unsigned char   target_cc_t;        /* cc_t */
7 typedef unsigned int    target_speed_t;     /* speed_t */
8 typedef unsigned int    target_tcflag_t;    /* tcflag_t */
9 
10 #define TARGET_NCCS 19
11 
12 struct target_termios {
13     target_tcflag_t c_iflag;         /* input mode flags */
14     target_tcflag_t c_oflag;         /* output mode flags */
15     target_tcflag_t c_cflag;         /* control mode flags */
16     target_tcflag_t c_lflag;         /* local mode flags */
17     target_cc_t c_line;              /* line discipline */
18     target_cc_t c_cc[TARGET_NCCS];   /* control characters */
19 };
20 
21 struct target_termios2 {
22     target_tcflag_t c_iflag;       /* input mode flags */
23     target_tcflag_t c_oflag;       /* output mode flags */
24     target_tcflag_t c_cflag;       /* control mode flags */
25     target_tcflag_t c_lflag;       /* local mode flags */
26     target_cc_t c_line;            /* line discipline */
27     target_cc_t c_cc[TARGET_NCCS]; /* control characters */
28     target_speed_t c_ispeed;       /* input speed */
29     target_speed_t c_ospeed;       /* output speed */
30 };
31 
32 struct target_ktermios {
33     target_tcflag_t c_iflag;       /* input mode flags */
34     target_tcflag_t c_oflag;       /* output mode flags */
35     target_tcflag_t c_cflag;       /* control mode flags */
36     target_tcflag_t c_lflag;       /* local mode flags */
37     target_cc_t c_line;            /* line discipline */
38     target_cc_t c_cc[TARGET_NCCS]; /* control characters */
39     target_speed_t c_ispeed;       /* input speed */
40     target_speed_t c_ospeed;       /* output speed */
41 };
42 
43 /* c_cc character offsets */
44 #define TARGET_VINTR    0
45 #define TARGET_VQUIT    1
46 #define TARGET_VERASE   2
47 #define TARGET_VKILL    3
48 #define TARGET_VEOF     4
49 #define TARGET_VTIME    5
50 #define TARGET_VMIN     6
51 #define TARGET_VSWTC    7
52 #define TARGET_VSTART   8
53 #define TARGET_VSTOP    9
54 #define TARGET_VSUSP    10
55 #define TARGET_VEOL     11
56 #define TARGET_VREPRINT 12
57 #define TARGET_VDISCARD 13
58 #define TARGET_VWERASE  14
59 #define TARGET_VLNEXT   15
60 #define TARGET_VEOL2    16
61 
62 /* c_iflag bits */
63 #define TARGET_IGNBRK   0000001
64 #define TARGET_BRKINT   0000002
65 #define TARGET_IGNPAR   0000004
66 #define TARGET_PARMRK   0000010
67 #define TARGET_INPCK    0000020
68 #define TARGET_ISTRIP   0000040
69 #define TARGET_INLCR    0000100
70 #define TARGET_IGNCR    0000200
71 #define TARGET_ICRNL    0000400
72 #define TARGET_IUCLC    0001000
73 #define TARGET_IXON     0002000
74 #define TARGET_IXANY    0004000
75 #define TARGET_IXOFF    0010000
76 #define TARGET_IMAXBEL  0020000
77 #define TARGET_IUTF8    0040000
78 
79 /* c_oflag bits */
80 #define TARGET_OPOST    0000001
81 #define TARGET_OLCUC    0000002
82 #define TARGET_ONLCR    0000004
83 #define TARGET_OCRNL    0000010
84 #define TARGET_ONOCR    0000020
85 #define TARGET_ONLRET   0000040
86 #define TARGET_OFILL    0000100
87 #define TARGET_OFDEL    0000200
88 #define TARGET_NLDLY    0000400
89 #define  TARGET_NL0     0000000
90 #define  TARGET_NL1     0000400
91 #define TARGET_CRDLY    0003000
92 #define  TARGET_CR0     0000000
93 #define  TARGET_CR1     0001000
94 #define  TARGET_CR2     0002000
95 #define  TARGET_CR3     0003000
96 #define TARGET_TABDLY   0014000
97 #define  TARGET_TAB0    0000000
98 #define  TARGET_TAB1    0004000
99 #define  TARGET_TAB2    0010000
100 #define  TARGET_TAB3    0014000
101 #define  TARGET_XTABS   0014000
102 #define TARGET_BSDLY    0020000
103 #define  TARGET_BS0     0000000
104 #define  TARGET_BS1     0020000
105 #define TARGET_VTDLY    0040000
106 #define  TARGET_VT0     0000000
107 #define  TARGET_VT1     0040000
108 #define TARGET_FFDLY    0100000
109 #define  TARGET_FF0     0000000
110 #define  TARGET_FF1     0100000
111 
112 /* c_cflag bit meaning */
113 #define TARGET_CBAUD      0010017
114 #define  TARGET_B0        0000000  /* hang up */
115 #define  TARGET_B50       0000001
116 #define  TARGET_B75       0000002
117 #define  TARGET_B110      0000003
118 #define  TARGET_B134      0000004
119 #define  TARGET_B150      0000005
120 #define  TARGET_B200      0000006
121 #define  TARGET_B300      0000007
122 #define  TARGET_B600      0000010
123 #define  TARGET_B1200     0000011
124 #define  TARGET_B1800     0000012
125 #define  TARGET_B2400     0000013
126 #define  TARGET_B4800     0000014
127 #define  TARGET_B9600     0000015
128 #define  TARGET_B19200    0000016
129 #define  TARGET_B38400    0000017
130 #define  TARGET_EXTA      TARGET_B19200
131 #define  TARGET_EXTB      TARGET_B38400
132 #define TARGET_CSIZE      0000060
133 #define  TARGET_CS5       0000000
134 #define  TARGET_CS6       0000020
135 #define  TARGET_CS7       0000040
136 #define  TARGET_CS8       0000060
137 #define TARGET_CSTOPB     0000100
138 #define TARGET_CREAD      0000200
139 #define TARGET_PARENB     0000400
140 #define TARGET_PARODD     0001000
141 #define TARGET_HUPCL      0002000
142 #define TARGET_CLOCAL     0004000
143 #define TARGET_CBAUDEX    0010000
144 #define  TARGET_BOTHER    0010000
145 #define  TARGET_B57600    0010001
146 #define  TARGET_B115200   0010002
147 #define  TARGET_B230400   0010003
148 #define  TARGET_B460800   0010004
149 #define  TARGET_B500000   0010005
150 #define  TARGET_B576000   0010006
151 #define  TARGET_B921600   0010007
152 #define  TARGET_B1000000  0010010
153 #define  TARGET_B1152000  0010011
154 #define  TARGET_B1500000  0010012
155 #define  TARGET_B2000000  0010013
156 #define  TARGET_B2500000  0010014
157 #define  TARGET_B3000000  0010015
158 #define  TARGET_B3500000  0010016
159 #define  TARGET_B4000000  0010017
160 #define TARGET_CIBAUD     002003600000  /* input baud rate (not used) */
161 #define TARGET_CMSPAR     010000000000  /* mark or space (stick) parity */
162 #define TARGET_CRTSCTS    020000000000  /* flow control */
163 
164 #define TARGET_IBSHIFT    16            /* Shift from CBAUD to CIBAUD */
165 
166 /* c_lflag bits */
167 #define TARGET_ISIG       0000001
168 #define TARGET_ICANON     0000002
169 #define TARGET_XCASE      0000004
170 #define TARGET_ECHO       0000010
171 #define TARGET_ECHOE      0000020
172 #define TARGET_ECHOK      0000040
173 #define TARGET_ECHONL     0000100
174 #define TARGET_NOFLSH     0000200
175 #define TARGET_TOSTOP     0000400
176 #define TARGET_ECHOCTL    0001000
177 #define TARGET_ECHOPRT    0002000
178 #define TARGET_ECHOKE     0004000
179 #define TARGET_FLUSHO     0010000
180 #define TARGET_PENDIN     0040000
181 #define TARGET_IEXTEN     0100000
182 #define TARGET_EXTPROC    0200000
183 
184 /* tcflow() and TCXONC use these */
185 #define TARGET_TCOOFF          0
186 #define TARGET_TCOON           1
187 #define TARGET_TCIOFF          2
188 #define TARGET_TCION           3
189 
190 /* tcflush() and TCFLSH use these */
191 #define TARGET_TCIFLUSH        0
192 #define TARGET_TCOFLUSH        1
193 #define TARGET_TCIOFLUSH       2
194 
195 /* tcsetattr uses these */
196 #define TARGET_TCSANOW         0
197 #define TARGET_TCSADRAIN       1
198 #define TARGET_TCSAFLUSH       2
199 
200 /* Derived from include/uapi/asm-generic/ioctls.h */
201 
202 #define TARGET_TCGETS           0x5401
203 #define TARGET_TCSETS           0x5402
204 #define TARGET_TCSETSW          0x5403
205 #define TARGET_TCSETSF          0x5404
206 #define TARGET_TCGETA           0x5405
207 #define TARGET_TCSETA           0x5406
208 #define TARGET_TCSETAW          0x5407
209 #define TARGET_TCSETAF          0x5408
210 #define TARGET_TCSBRK           0x5409
211 #define TARGET_TCXONC           0x540A
212 #define TARGET_TCFLSH           0x540B
213 
214 #define TARGET_TIOCEXCL         0x540C
215 #define TARGET_TIOCNXCL         0x540D
216 #define TARGET_TIOCSCTTY        0x540E
217 #define TARGET_TIOCGPGRP        0x540F
218 #define TARGET_TIOCSPGRP        0x5410
219 #define TARGET_TIOCOUTQ         0x5411
220 #define TARGET_TIOCSTI          0x5412
221 #define TARGET_TIOCGWINSZ       0x5413
222 #define TARGET_TIOCSWINSZ       0x5414
223 #define TARGET_TIOCMGET         0x5415
224 #define TARGET_TIOCMBIS         0x5416
225 #define TARGET_TIOCMBIC         0x5417
226 #define TARGET_TIOCMSET         0x5418
227 #define TARGET_TIOCGSOFTCAR     0x5419
228 #define TARGET_TIOCSSOFTCAR     0x541A
229 #define TARGET_FIONREAD         0x541B
230 #define TARGET_TIOCINQ          TARGET_FIONREAD
231 #define TARGET_TIOCLINUX        0x541C
232 #define TARGET_TIOCCONS         0x541D
233 #define TARGET_TIOCGSERIAL      0x541E
234 #define TARGET_TIOCSSERIAL      0x541F
235 #define TARGET_TIOCPKT          0x5420
236 #define TARGET_FIONBIO          0x5421
237 #define TARGET_TIOCNOTTY        0x5422
238 #define TARGET_TIOCSETD         0x5423
239 #define TARGET_TIOCGETD         0x5424
240 #define TARGET_TCSBRKP          0x5425 /* Needed for POSIX tcsendbreak() */
241 #define TARGET_TIOCTTYGSTRUCT   0x5426 /* For debugging only */
242 #define TARGET_TIOCSBRK         0x5427 /* BSD compatibility */
243 #define TARGET_TIOCCBRK         0x5428 /* BSD compatibility */
244 #define TARGET_TIOCGSID         0x5429 /* Return the session ID of FD */
245 #define TARGET_TCGETS2          TARGET_IOR('T', 0x2A, struct target_termios2)
246 #define TARGET_TCSETS2          TARGET_IOW('T', 0x2B, struct target_termios2)
247 #define TARGET_TCSETSW2         TARGET_IOW('T', 0x2C, struct target_termios2)
248 #define TARGET_TCSETSF2         TARGET_IOW('T', 0x2D, struct target_termios2)
249 #define TARGET_TIOCGRS485       0x542E
250 #ifndef TARGET_TIOCSRS485
251 #define TARGET_TIOCSRS485       0x542F
252 #endif
253 /* Get Pty Number (of pty-mux device) */
254 #define TARGET_TIOCGPTN         TARGET_IOR('T', 0x30, unsigned int)
255 /* Lock/unlock Pty */
256 #define TARGET_TIOCSPTLCK       TARGET_IOW('T', 0x31, int)
257 
258 /* Get primary device node of /dev/console */
259 #define TARGET_TIOCGDEV        TARGET_IOR('T', 0x32, unsigned int)
260 #define TARGET_TCGETX          0x5432 /* SYS5 TCGETX compatibility */
261 #define TARGET_TCSETX          0x5433
262 #define TARGET_TCSETXF         0x5434
263 #define TARGET_TCSETXW         0x5435
264 /* pty: generate signal */
265 #define TARGET_TIOCSIG         TARGET_IOW('T', 0x36, int)
266 #define TARGET_TIOCVHANGUP     0x5437
267 /* Get packet mode state */
268 #define TARGET_TIOCGPKT        TARGET_IOR('T', 0x38, int)
269 /* Get Pty lock state */
270 #define TARGET_TIOCGPTLCK      TARGET_IOR('T', 0x39, int)
271 /* Get exclusive mode state */
272 #define TARGET_TIOCGEXCL       TARGET_IOR('T', 0x40, int)
273 /* Safely open the slave */
274 #define TARGET_TIOCGPTPEER     TARGET_IO('T', 0x41)
275 #define TARGET_TIOCGISO7816    TARGET_IOR('T', 0x42, struct serial_iso7816)
276 #define TARGET_TIOCSISO7816    TARGET_IOWR('T', 0x43, struct serial_iso7816)
277 
278 #define TARGET_FIONCLEX         0x5450 /* these numbers need to be adjusted */
279 #define TARGET_FIOCLEX          0x5451
280 #define TARGET_FIOASYNC         0x5452
281 #define TARGET_TIOCSERCONFIG    0x5453
282 #define TARGET_TIOCSERGWILD     0x5454
283 #define TARGET_TIOCSERSWILD     0x5455
284 #define TARGET_TIOCGLCKTRMIOS   0x5456
285 #define TARGET_TIOCSLCKTRMIOS   0x5457
286 #define TARGET_TIOCSERGSTRUCT   0x5458 /* For debugging only */
287 #define TARGET_TIOCSERGETLSR    0x5459 /* Get line status register */
288 #define TARGET_TIOCSERGETMULTI  0x545A /* Get multiport config  */
289 #define TARGET_TIOCSERSETMULTI  0x545B /* Set multiport config */
290 
291 /* wait for a change on serial input line(s) */
292 #define TARGET_TIOCMIWAIT       0x545C
293 /* read serial port inline interrupt counts */
294 #define TARGET_TIOCGICOUNT      0x545D
295 #define TARGET_TIOCGHAYESESP    0x545E  /* Get Hayes ESP configuration */
296 #define TARGET_TIOCSHAYESESP    0x545F  /* Set Hayes ESP configuration */
297 
298 /*
299  * Some arches already define TARGET_FIOQSIZE due to a historical
300  * conflict with a Hayes modem-specific ioctl value.
301  */
302 #ifndef TARGET_FIOQSIZE
303 # define TARGET_FIOQSIZE        0x5460
304 #endif
305 
306 /* Used for packet mode */
307 #define TARGET_TIOCPKT_DATA              0
308 #define TARGET_TIOCPKT_FLUSHREAD         1
309 #define TARGET_TIOCPKT_FLUSHWRITE        2
310 #define TARGET_TIOCPKT_STOP              4
311 #define TARGET_TIOCPKT_START             8
312 #define TARGET_TIOCPKT_NOSTOP            16
313 #define TARGET_TIOCPKT_DOSTOP            32
314 #define TARGET_TIOCPKT_IOCTL             64
315 
316 #define TARGET_TIOCSER_TEMT     0x01 /* Transmitter physically empty */
317 
318 #endif
319