1 /*
2  * Copyright (c) 2006-2022, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2020-09-01     Meco Man     First Version
9  */
10 
11 #ifndef __SYS_IOCTL_H__
12 #define __SYS_IOCTL_H__
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #ifdef RT_USING_MUSLLIBC
19 #include_next <sys/ioctl.h>
20 #else
21 
22 struct winsize
23 {
24     unsigned short ws_row;
25     unsigned short ws_col;
26     unsigned short ws_xpixel;
27     unsigned short ws_ypixel;
28 };
29 
30 /*
31  * Direction bits, which any architecture can choose to override
32  * before including this file.
33  */
34 
35 #ifndef _IOC_NONE
36 #define _IOC_NONE  0U
37 #endif
38 
39 #ifndef _IOC_WRITE
40 #define _IOC_WRITE 1U
41 #endif
42 
43 #ifndef _IOC_READ
44 #define _IOC_READ  2U
45 #endif
46 
47 #ifndef _IOC
48 #define _IOC(a,b,c,d) (((a)<<30) | ((b)<<8) | (c) | ((d)<<16))
49 #endif
50 
51 #ifndef _IO
52 #define _IO(a,b)    _IOC(_IOC_NONE, (a), (b), 0)
53 #endif
54 
55 #ifndef _IOW
56 #define _IOW(a,b,c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
57 #endif
58 
59 #ifndef _IOR
60 #define _IOR(a,b,c) _IOC(_IOC_READ, (a), (b), sizeof(c))
61 #endif
62 
63 #ifndef _IOWR
64 #define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE, (a), (b), sizeof(c))
65 #endif
66 
67 #ifndef FIONREAD
68 #define FIONREAD    _IOR('f', 127, int) /* get # bytes to read */
69 #endif
70 
71 #ifndef FIONBIO
72 #define FIONBIO     _IOW('f', 126, int) /* set/clear non-blocking i/o */
73 #endif
74 
75 #ifndef FIOASYNC
76 #define FIOASYNC    _IOW('f', 125, int) /* set/clear async i/o */
77 #endif
78 
79 /* Socket I/O Controls */
80 #ifndef SIOCSHIWAT
81 #define SIOCSHIWAT  _IOW('s',  0, int)  /* set high watermark */
82 #define SIOCGHIWAT  _IOR('s',  1, int)  /* get high watermark */
83 #define SIOCSLOWAT  _IOW('s',  2, int)  /* set low watermark */
84 #define SIOCGLOWAT  _IOR('s',  3, int)  /* get low watermark */
85 #define SIOCATMARK  _IOR('s',  7, int)  /* at oob mark? */
86 #endif
87 
88 #define TCGETS      0x5401
89 #define TCSETS      0x5402
90 #define TCSETSW     0x5403
91 #define TCSETSF     0x5404
92 #define TCGETA      0x5405
93 #define TCSETA      0x5406
94 #define TCSETAW     0x5407
95 #define TCSETAF     0x5408
96 #define TCSBRK      0x5409
97 #define TCXONC      0x540A
98 #define TCFLSH      0x540B
99 #define TIOCEXCL    0x540C
100 #define TIOCNXCL    0x540D
101 #define TIOCSCTTY   0x540E
102 #define TIOCGPGRP   0x540F
103 #define TIOCSPGRP   0x5410
104 #define TIOCOUTQ    0x5411
105 #define TIOCSTI     0x5412
106 #define TIOCGWINSZ  0x5413
107 #define TIOCSWINSZ  0x5414
108 #define TIOCMGET    0x5415
109 #define TIOCMBIS    0x5416
110 #define TIOCMBIC    0x5417
111 #define TIOCMSET    0x5418
112 #define TIOCGSOFTCAR    0x5419
113 #define TIOCSSOFTCAR    0x541A
114 #define TIOCINQ     FIONREAD
115 #define TIOCLINUX   0x541C
116 #define TIOCCONS    0x541D
117 #define TIOCGSERIAL 0x541E
118 #define TIOCSSERIAL 0x541F
119 #define TIOCPKT     0x5420
120 #define TIOCNOTTY   0x5422
121 #define TIOCSETD    0x5423
122 #define TIOCGETD    0x5424
123 #define TCSBRKP     0x5425
124 #define TIOCSBRK    0x5427
125 #define TIOCCBRK    0x5428
126 #define TIOCGSID    0x5429
127 #define TIOCGRS485  0x542E
128 #define TIOCSRS485  0x542F
129 #define TIOCGPTN    0x80045430
130 #define TIOCSPTLCK  0x40045431
131 #define TIOCGDEV    0x80045432
132 #define TCGETX      0x5432
133 #define TCSETX      0x5433
134 #define TCSETXF     0x5434
135 #define TCSETXW     0x5435
136 #define TIOCSIG     0x40045436
137 #define TIOCVHANGUP 0x5437
138 #define TIOCGPKT    0x80045438
139 #define TIOCGPTLCK  0x80045439
140 #define TIOCGEXCL   0x80045440
141 
142 #define FIONCLEX    0x5450
143 #define FIOCLEX     0x5451
144 
145 #define TIOCSERCONFIG   0x5453
146 #define TIOCSERGWILD    0x5454
147 #define TIOCSERSWILD    0x5455
148 #define TIOCGLCKTRMIOS  0x5456
149 #define TIOCSLCKTRMIOS  0x5457
150 #define TIOCSERGSTRUCT  0x5458
151 #define TIOCSERGETLSR   0x5459
152 #define TIOCSERGETMULTI 0x545A
153 #define TIOCSERSETMULTI 0x545B
154 
155 #define TIOCMIWAIT  0x545C
156 #define TIOCGICOUNT 0x545D
157 #define FIOQSIZE    0x5460
158 
159 #define TIOCPKT_DATA         0
160 #define TIOCPKT_FLUSHREAD    1
161 #define TIOCPKT_FLUSHWRITE   2
162 #define TIOCPKT_STOP         4
163 #define TIOCPKT_START        8
164 #define TIOCPKT_NOSTOP      16
165 #define TIOCPKT_DOSTOP      32
166 #define TIOCPKT_IOCTL       64
167 
168 #define TIOCSER_TEMT    0x01
169 
170 #define TIOCM_LE        0x001
171 #define TIOCM_DTR       0x002
172 #define TIOCM_RTS       0x004
173 #define TIOCM_ST        0x008
174 #define TIOCM_SR        0x010
175 #define TIOCM_CTS       0x020
176 #define TIOCM_CAR       0x040
177 #define TIOCM_RNG       0x080
178 #define TIOCM_DSR       0x100
179 #define TIOCM_CD        TIOCM_CAR
180 #define TIOCM_RI        TIOCM_RNG
181 #define TIOCM_OUT1      0x2000
182 #define TIOCM_OUT2      0x4000
183 #define TIOCM_LOOP      0x8000
184 
185 #define N_TTY           0
186 #define N_SLIP          1
187 #define N_MOUSE         2
188 #define N_PPP           3
189 #define N_STRIP         4
190 #define N_AX25          5
191 #define N_X25           6
192 #define N_6PACK         7
193 #define N_MASC          8
194 #define N_R3964         9
195 #define N_PROFIBUS_FDL  10
196 #define N_IRDA          11
197 #define N_SMSBLOCK      12
198 #define N_HDLC          13
199 #define N_SYNC_PPP      14
200 #define N_HCI           15
201 
202 #define FIOSETOWN       0x8901
203 #define SIOCSPGRP       0x8902
204 #define FIOGETOWN       0x8903
205 #define SIOCGPGRP       0x8904
206 #define SIOCGSTAMP      0x8906
207 #define SIOCGSTAMPNS    0x8907
208 
209 #endif
210 
211 #ifndef FIONWRITE
212 #define FIONWRITE _IOR('f', 121, int) /* get # bytes outstanding in send queue */
213 #endif
214 
215 #define SIOCADDRT       0x890B
216 #define SIOCDELRT       0x890C
217 #define SIOCRTMSG       0x890D
218 
219 #define SIOCGIFNAME     0x8910
220 #define SIOCSIFLINK     0x8911
221 #define SIOCGIFCONF     0x8912
222 #define SIOCGIFFLAGS    0x8913
223 #define SIOCSIFFLAGS    0x8914
224 #define SIOCGIFADDR     0x8915
225 #define SIOCSIFADDR     0x8916
226 #define SIOCGIFDSTADDR  0x8917
227 #define SIOCSIFDSTADDR  0x8918
228 #define SIOCGIFBRDADDR  0x8919
229 #define SIOCSIFBRDADDR  0x891a
230 #define SIOCGIFNETMASK  0x891b
231 #define SIOCSIFNETMASK  0x891c
232 #define SIOCGIFMETRIC   0x891d
233 #define SIOCSIFMETRIC   0x891e
234 #define SIOCGIFMEM      0x891f
235 #define SIOCSIFMEM      0x8920
236 #define SIOCGIFMTU      0x8921
237 #define SIOCSIFMTU      0x8922
238 #define SIOCSIFNAME     0x8923
239 #define SIOCSIFHWADDR   0x8924
240 #define SIOCGIFENCAP    0x8925
241 #define SIOCSIFENCAP    0x8926
242 #define SIOCGIFHWADDR   0x8927
243 #define SIOCGIFSLAVE    0x8929
244 #define SIOCSIFSLAVE    0x8930
245 #define SIOCADDMULTI    0x8931
246 #define SIOCDELMULTI    0x8932
247 #define SIOCGIFINDEX    0x8933
248 #define SIOGIFINDEX     SIOCGIFINDEX
249 #define SIOCSIFPFLAGS   0x8934
250 #define SIOCGIFPFLAGS   0x8935
251 #define SIOCDIFADDR     0x8936
252 #define SIOCSIFHWBROADCAST 0x8937
253 #define SIOCGIFCOUNT    0x8938
254 
255 #define SIOCGIFBR       0x8940
256 #define SIOCSIFBR       0x8941
257 
258 #define SIOCGIFTXQLEN   0x8942
259 #define SIOCSIFTXQLEN   0x8943
260 
261 #define SIOCDARP        0x8953
262 #define SIOCGARP        0x8954
263 #define SIOCSARP        0x8955
264 
265 #define SIOCDRARP       0x8960
266 #define SIOCGRARP       0x8961
267 #define SIOCSRARP       0x8962
268 
269 #define SIOCGIFMAP      0x8970
270 #define SIOCSIFMAP      0x8971
271 
272 #define SIOCADDDLCI     0x8980
273 #define SIOCDELDLCI     0x8981
274 
275 #define SIOCDEVPRIVATE      0x89F0
276 #define SIOCPROTOPRIVATE    0x89E0
277 
278 int ioctl(int fildes, int cmd, ...);
279 
280 #ifdef __cplusplus
281 }
282 #endif
283 
284 #endif
285