]> git.ipfire.org Git - thirdparty/gcc.git/blob - libphobos/libdruntime/core/sys/posix/sys/ioctl.d
b8bb03be9a17127385a555816c97b408566c7d60
[thirdparty/gcc.git] / libphobos / libdruntime / core / sys / posix / sys / ioctl.d
1 /**
2 * D header file for POSIX.
3 *
4 * Copyright: Copyright Alex Rønne Petersen 2011 - 2012.
5 * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
6 * Authors: Alex Rønne Petersen
7 * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
8 */
9
10 /* Copyright Alex Rønne Petersen 2011 - 2012.
11 * Distributed under the Boost Software License, Version 1.0.
12 * (See accompanying file LICENSE or copy at
13 * http://www.boost.org/LICENSE_1_0.txt)
14 */
15 module core.sys.posix.sys.ioctl;
16
17 import core.stdc.config;
18
19 version (OSX)
20 version = Darwin;
21 else version (iOS)
22 version = Darwin;
23 else version (TVOS)
24 version = Darwin;
25 else version (WatchOS)
26 version = Darwin;
27
28 version (Posix):
29
30 extern (C) nothrow @nogc:
31
32 version (CRuntime_Glibc)
33 {
34 import core.sys.posix.termios; // tcflag_t, speed_t, cc_t
35
36 enum _IOC_NRBITS = 8;
37 enum _IOC_TYPEBITS = 8;
38 enum _IOC_SIZEBITS = 14;
39 enum _IOC_DIRBITS = 2;
40
41 enum _IOC_NRMASK = (1 << _IOC_NRBITS) - 1;
42 enum _IOC_TYPEMASK = (1 << _IOC_TYPEBITS) - 1;
43 enum _IOC_SIZEMASK = (1 << _IOC_SIZEBITS) - 1;
44 enum _IOC_DIRMASK = (1 << _IOC_DIRBITS) - 1;
45
46 enum _IOC_NRSHIFT = 0;
47 enum _IOC_TYPESHIFT = _IOC_NRSHIFT + _IOC_NRBITS;
48 enum _IOC_SIZESHIFT = _IOC_TYPESHIFT + _IOC_TYPEBITS;
49 enum _IOC_DIRSHIFT = _IOC_SIZESHIFT + _IOC_SIZEBITS;
50
51 enum _IOC_NONE = 0;
52 enum _IOC_WRITE = 1;
53 enum _IOC_READ = 2;
54
55 extern (D) int _IOC(T = typeof(null))(int dir, int type, int nr)
56 {
57 return (dir << _IOC_DIRSHIFT) |
58 (type << _IOC_TYPESHIFT) |
59 (nr << _IOC_NRSHIFT) |
60 (is(T == typeof(null)) ? 0 : T.sizeof << _IOC_SIZESHIFT);
61 }
62
63 extern (D) int _IO(int type, int nr)
64 {
65 return _IOC(_IOC_NONE, type, nr);
66 }
67
68 extern (D) int _IOR(T)(int type, int nr)
69 {
70 return _IOC!T(_IOC_READ, type, nr);
71 }
72
73 extern (D) int _IOW(T)(int type, int nr)
74 {
75 return _IOC!T(_IOC_WRITE, type, nr);
76 }
77
78 extern (D) int _IOWR(T)(int type, int nr)
79 {
80 return _IOC!T(_IOC_READ | _IOC_WRITE, type, nr);
81 }
82
83 extern (D) int _IOC_DIR(int nr)
84 {
85 return (nr >> _IOC_DIRSHIFT) & _IOC_DIRMASK;
86 }
87
88 extern (D) int _IOC_TYPE(int nr)
89 {
90 return (nr >> _IOC_TYPESHIFT) & _IOC_TYPEMASK;
91 }
92
93 extern (D) int _IOC_NR(int nr)
94 {
95 return (nr >> _IOC_NRSHIFT) & _IOC_NRMASK;
96 }
97
98 extern (D) int _IOC_SIZE(int nr)
99 {
100 return (nr >> _IOC_SIZESHIFT) & _IOC_SIZEMASK;
101 }
102
103 enum IOC_IN = _IOC_WRITE << _IOC_DIRSHIFT;
104 enum IOC_OUT = _IOC_READ << _IOC_DIRSHIFT;
105 enum IOC_INOUT = (_IOC_READ | _IOC_WRITE) << _IOC_DIRSHIFT;
106 enum IOCSIZE_MASK = _IOC_SIZEMASK << _IOC_DIRSHIFT;
107 enum IOCSIZE_SHIFT = _IOC_SIZESHIFT;
108
109 enum NCCS = 19;
110
111 struct termios2
112 {
113 tcflag_t c_iflag;
114 tcflag_t c_oflag;
115 tcflag_t c_cflag;
116 tcflag_t c_lflag;
117 cc_t c_line;
118 cc_t[NCCS] c_cc;
119 speed_t c_ispeed;
120 speed_t c_ospeed;
121 }
122
123 struct winsize
124 {
125 ushort ws_row;
126 ushort ws_col;
127 ushort ws_xpixel;
128 ushort ws_ypixel;
129 }
130
131 enum NCC = 8;
132
133 struct termio
134 {
135 ushort c_iflag;
136 ushort c_oflag;
137 ushort c_cflag;
138 ushort c_lflag;
139 ubyte c_line;
140 ubyte[NCC] c_cc;
141 }
142
143 enum TIOCM_LE = 0x001;
144 enum TIOCM_DTR = 0x002;
145 enum TIOCM_RTS = 0x004;
146 enum TIOCM_ST = 0x008;
147 enum TIOCM_SR = 0x010;
148 enum TIOCM_CTS = 0x020;
149 enum TIOCM_CAR = 0x040;
150 enum TIOCM_RNG = 0x080;
151 enum TIOCM_DSR = 0x100;
152 enum TIOCM_CD = TIOCM_CAR;
153 enum TIOCM_RI = TIOCM_RNG;
154
155 enum N_TTY = 0;
156 enum N_SLIP = 1;
157 enum N_MOUSE = 2;
158 enum N_PPP = 3;
159 enum N_STRIP = 4;
160 enum N_AX25 = 5;
161 enum N_X25 = 6;
162 enum N_6PACK = 7;
163 enum N_MASC = 8;
164 enum N_R3964 = 9;
165 enum N_PROFIBUS_FDL = 10;
166 enum N_IRDA = 11;
167 enum N_SMSBLOCK = 12;
168 enum N_HDLC = 13;
169 enum N_SYNC_PPP = 14;
170 enum N_HCI = 15;
171
172 enum TCGETS = 0x5401;
173 enum TCSETS = 0x5402;
174 enum TCSETSW = 0x5403;
175 enum TCSETSF = 0x5404;
176 enum TCGETA = 0x5405;
177 enum TCSETA = 0x5406;
178 enum TCSETAW = 0x5407;
179 enum TCSETAF = 0x5408;
180 enum TCSBRK = 0x5409;
181 enum TCXONC = 0x540A;
182 enum TCFLSH = 0x540B;
183 enum TIOCEXCL = 0x540C;
184 enum TIOCNXCL = 0x540D;
185 enum TIOCSCTTY = 0x540E;
186 enum TIOCGPGRP = 0x540F;
187 enum TIOCSPGRP = 0x5410;
188 enum TIOCOUTQ = 0x5411;
189 enum TIOCSTI = 0x5412;
190 enum TIOCGWINSZ = 0x5413;
191 enum TIOCSWINSZ = 0x5414;
192 enum TIOCMGET = 0x5415;
193 enum TIOCMBIS = 0x5416;
194 enum TIOCMBIC = 0x5417;
195 enum TIOCMSET = 0x5418;
196 enum TIOCGSOFTCAR = 0x5419;
197 enum TIOCSSOFTCAR = 0x541A;
198 enum FIONREAD = 0x541B;
199 enum TIOCINQ = FIONREAD;
200 enum TIOCLINUX = 0x541C;
201 enum TIOCCONS = 0x541D;
202 enum TIOCGSERIAL = 0x541E;
203 enum TIOCSSERIAL = 0x541F;
204 enum TIOCPKT = 0x5420;
205 enum FIONBIO = 0x5421;
206 enum TIOCNOTTY = 0x5422;
207 enum TIOCSETD = 0x5423;
208 enum TIOCGETD = 0x5424;
209 enum TCSBRKP = 0x5425;
210 enum TIOCSBRK = 0x5427;
211 enum TIOCCBRK = 0x5428;
212 enum TIOCGSID = 0x5429;
213
214 enum TCGETS2 = _IOR!termios2('T', 0x2A);
215 enum TCSETS2 = _IOR!termios2('T', 0x2B);
216 enum TCSETSW2 = _IOW!termios2('T', 0x2C);
217 enum TCSETSF2 = _IOW!termios2('T', 0x2D);
218
219 enum TIOCGRS485 = 0x542E;
220 enum TIOCSRS485 = 0x542F;
221
222 enum TIOCGPTN = _IOR!uint('T', 0x30);
223 enum TIOCSPTLCK = _IOW!int('T', 0x31);
224 enum TIOCGDEV = _IOR!uint('T', 0x32);
225
226 enum TCGETX = 0x5432;
227 enum TCSETX = 0x5433;
228 enum TCSETXF = 0x5434;
229 enum TCSETXW = 0x5435;
230
231 enum TIOCSIG = _IOW!int('T', 0x36);
232
233 enum TIOCVHANGUP = 0x5437;
234
235 enum FIONCLEX = 0x5450;
236 enum FIOCLEX = 0x5451;
237 enum FIOASYNC = 0x5452;
238 enum TIOCSERCONFIG = 0x5453;
239 enum TIOCSERGWILD = 0x5454;
240 enum TIOCSERSWILD = 0x5455;
241 enum TIOCGLCKTRMIOS = 0x5456;
242 enum TIOCSLCKTRMIOS = 0x5457;
243 enum TIOCSERGSTRUCT = 0x5458;
244 enum TIOCSERGETLSR = 0x5459;
245 enum TIOCSERGETMULTI = 0x545A;
246 enum TIOCSERSETMULTI = 0x545B;
247
248 enum TIOCMIWAIT = 0x545C;
249 enum TIOCGICOUNT = 0x545D;
250
251 enum FIOQSIZE = 0x5460;
252
253 enum TIOCPKT_DATA = 0;
254 enum TIOCPKT_FLUSHREAD = 1;
255 enum TIOCPKT_FLUSHWRITE = 2;
256 enum TIOCPKT_STOP = 4;
257 enum TIOCPKT_START = 8;
258 enum TIOCPKT_NOSTOP = 16;
259 enum TIOCPKT_DOSTOP = 32;
260 enum TIOCPKT_IOCTL = 64;
261
262 enum TIOCSER_TEMT = 0x01;
263
264 enum SIOCADDRT = 0x890B;
265 enum SIOCDELRT = 0x890C;
266 enum SIOCRTMSG = 0x890D;
267
268 enum SIOCGIFNAME = 0x8910;
269 enum SIOCSIFLINK = 0x8911;
270 enum SIOCGIFCONF = 0x8912;
271 enum SIOCGIFFLAGS = 0x8913;
272 enum SIOCSIFFLAGS = 0x8914;
273 enum SIOCGIFADDR = 0x8915;
274 enum SIOCSIFADDR = 0x8916;
275 enum SIOCGIFDSTADDR = 0x8917;
276 enum SIOCSIFDSTADDR = 0x8918;
277 enum SIOCGIFBRDADDR = 0x8919;
278 enum SIOCSIFBRDADDR = 0x891a;
279 enum SIOCGIFNETMASK = 0x891b;
280 enum SIOCSIFNETMASK = 0x891c;
281 enum SIOCGIFMETRIC = 0x891d;
282 enum SIOCSIFMETRIC = 0x891e;
283 enum SIOCGIFMEM = 0x891f;
284 enum SIOCSIFMEM = 0x8920;
285 enum SIOCGIFMTU = 0x8921;
286 enum SIOCSIFMTU = 0x8922;
287 enum SIOCSIFNAME = 0x8923;
288 enum SIOCSIFHWADDR = 0x8924;
289 enum SIOCGIFENCAP = 0x8925;
290 enum SIOCSIFENCAP = 0x8926;
291 enum SIOCGIFHWADDR = 0x8927;
292 enum SIOCGIFSLAVE = 0x8929;
293 enum SIOCSIFSLAVE = 0x8930;
294 enum SIOCADDMULTI = 0x8931;
295 enum SIOCDELMULTI = 0x8932;
296 enum SIOCGIFINDEX = 0x8933;
297 enum SIOGIFINDEX = SIOCGIFINDEX;
298 enum SIOCSIFPFLAGS = 0x8934;
299 enum SIOCGIFPFLAGS = 0x8935;
300 enum SIOCDIFADDR = 0x8936;
301 enum SIOCSIFHWBROADCAST = 0x8937;
302 enum SIOCGIFCOUNT = 0x8938;
303
304 enum SIOCGIFBR = 0x8940;
305 enum SIOCSIFBR = 0x8941;
306
307 enum SIOCGIFTXQLEN = 0x8942;
308 enum SIOCSIFTXQLEN = 0x8943;
309
310 enum SIOCDARP = 0x8953;
311 enum SIOCGARP = 0x8954;
312 enum SIOCSARP = 0x8955;
313
314 enum SIOCDRARP = 0x8960;
315 enum SIOCGRARP = 0x8961;
316 enum SIOCSRARP = 0x8962;
317
318 enum SIOCGIFMAP = 0x8970;
319 enum SIOCSIFMAP = 0x8971;
320
321 enum SIOCADDDLCI = 0x8980;
322 enum SIOCDELDLCI = 0x8981;
323
324 enum SIOCDEVPRIVATE = 0x89F0;
325
326 enum SIOCPROTOPRIVATE = 0x89E0;
327
328 int ioctl(int __fd, c_ulong __request, ...);
329 }
330 else version (Darwin)
331 {
332 import core.sys.posix.termios; // termios
333 import core.sys.posix.sys.time; // timeval
334
335 public import core.sys.posix.sys.ttycom; // Terminal related ioctls
336
337 struct ttysize
338 {
339 ushort ts_lines;
340 ushort ts_cols;
341 ushort ts_xxx;
342 ushort ts_yyy;
343 }
344
345 enum uint TIOCGSIZE = TIOCGWINSZ;
346 enum uint TIOCSSIZE = TIOCSWINSZ;
347
348 public import core.sys.posix.sys.filio; // File related ioctls
349
350 int ioctl(int fildes, c_ulong request, ...);
351 }
352 else version (FreeBSD)
353 {
354 struct fiodgname_arg
355 {
356 int len;
357 void* buf;
358 }
359
360 struct winsize
361 {
362 ushort ws_row;
363 ushort ws_col;
364 ushort ws_xpixel;
365 ushort ws_ypixel;
366 }
367
368 int ioctl(int, c_ulong, ...);
369 }
370 else version (NetBSD)
371 {
372 struct winsize
373 {
374 ushort ws_row;
375 ushort ws_col;
376 ushort ws_xpixel;
377 ushort ws_ypixel;
378 }
379
380 int ioctl(int, c_ulong, ...);
381 }
382 else version (OpenBSD)
383 {
384 struct winsize
385 {
386 ushort ws_row;
387 ushort ws_col;
388 ushort ws_xpixel;
389 ushort ws_ypixel;
390 }
391
392 int ioctl(int, c_ulong, ...);
393 }
394 else version (DragonFlyBSD)
395 {
396 struct fiodgname_arg
397 {
398 int len;
399 void* buf;
400 }
401
402 struct winsize
403 {
404 ushort ws_row;
405 ushort ws_col;
406 ushort ws_xpixel;
407 ushort ws_ypixel;
408 }
409
410 int ioctl(int, c_ulong, ...);
411 }
412 else version (Solaris)
413 {
414 int ioctl(int fildes, int request, ...);
415 }
416 else version (CRuntime_Bionic)
417 {
418 int ioctl(int, int, ...);
419 }
420 else version (CRuntime_Musl)
421 {
422
423 }
424 else version (CRuntime_UClibc)
425 {
426 import core.sys.posix.termios;
427
428 enum _IOC_NRBITS = 8;
429 enum _IOC_TYPEBITS = 8;
430 enum _IOC_SIZEBITS = 14;
431 enum _IOC_DIRBITS = 2;
432
433 enum _IOC_NRMASK = (1 << _IOC_NRBITS) - 1;
434 enum _IOC_TYPEMASK = (1 << _IOC_TYPEBITS) - 1;
435 enum _IOC_SIZEMASK = (1 << _IOC_SIZEBITS) - 1;
436 enum _IOC_DIRMASK = (1 << _IOC_DIRBITS) - 1;
437
438 enum _IOC_NRSHIFT = 0;
439 enum _IOC_TYPESHIFT = _IOC_NRSHIFT + _IOC_NRBITS;
440 enum _IOC_SIZESHIFT = _IOC_TYPESHIFT + _IOC_TYPEBITS;
441 enum _IOC_DIRSHIFT = _IOC_SIZESHIFT + _IOC_SIZEBITS;
442
443 enum _IOC_NONE = 0;
444 enum _IOC_WRITE = 1;
445 enum _IOC_READ = 2;
446
447 extern (D) int _IOC(T = typeof(null))(int dir, int type, int nr)
448 {
449 return (dir << _IOC_DIRSHIFT) |
450 (type << _IOC_TYPESHIFT) |
451 (nr << _IOC_NRSHIFT) |
452 (is(T == typeof(null)) ? 0 : T.sizeof << _IOC_SIZESHIFT);
453 }
454
455 extern (D) int _IO(int type, int nr)
456 {
457 return _IOC(_IOC_NONE, type, nr);
458 }
459
460 extern (D) int _IOR(T)(int type, int nr)
461 {
462 return _IOC!T(_IOC_READ, type, nr);
463 }
464
465 extern (D) int _IOW(T)(int type, int nr)
466 {
467 return _IOC!T(_IOC_WRITE, type, nr);
468 }
469
470 extern (D) int _IOWR(T)(int type, int nr)
471 {
472 return _IOC!T(_IOC_READ | _IOC_WRITE, type, nr);
473 }
474
475 extern (D) int _IOR_BAD(T)(int type, int nr)
476 {
477 return _IOC!T(_IOC_READ, type, nr);
478 }
479
480 extern (D) int _IOW_BAD(T)(int type, int nr)
481 {
482 return _IOC!T(_IOC_WRITE, type, nr);
483 }
484
485 extern (D) int _IORW_BAD(T)(int type, int nr)
486 {
487 return _IOC!T(_IOC_READ | _IOC_WRITE, type, nr);
488 }
489
490 extern (D) int _IOC_DIR(int nr)
491 {
492 return (nr >> _IOC_DIRSHIFT) & _IOC_DIRMASK;
493 }
494
495 extern (D) int _IOC_TYPE(int nr)
496 {
497 return (nr >> _IOC_TYPESHIFT) & _IOC_TYPEMASK;
498 }
499
500 extern (D) int _IOC_NR(int nr)
501 {
502 return (nr >> _IOC_NRSHIFT) & _IOC_NRMASK;
503 }
504
505 extern (D) int _IOC_SIZE(int nr)
506 {
507 return (nr >> _IOC_SIZESHIFT) & _IOC_SIZEMASK;
508 }
509
510 enum IOC_IN = _IOC_WRITE << _IOC_DIRSHIFT;
511 enum IOC_OUT = _IOC_READ << _IOC_DIRSHIFT;
512 enum IOC_INOUT = (_IOC_READ | _IOC_WRITE) << _IOC_DIRSHIFT;
513 enum IOCSIZE_MASK = _IOC_SIZEMASK << _IOC_DIRSHIFT;
514 enum IOCSIZE_SHIFT = _IOC_SIZESHIFT;
515
516 enum NCCS = 19;
517
518 struct termios
519 {
520 tcflag_t c_iflag;
521 tcflag_t c_oflag;
522 tcflag_t c_cflag;
523 tcflag_t c_lflag;
524 cc_t c_line;
525 cc_t[NCCS] c_cc;
526 }
527
528 struct termios2
529 {
530 tcflag_t c_iflag;
531 tcflag_t c_oflag;
532 tcflag_t c_cflag;
533 tcflag_t c_lflag;
534 cc_t c_line;
535 cc_t[NCCS] c_cc;
536 speed_t c_ispeed;
537 speed_t c_ospeed;
538 }
539
540 alias termios2 ktermios;
541
542 struct winsize
543 {
544 ushort ws_row;
545 ushort ws_col;
546 ushort ws_xpixel;
547 ushort ws_ypixel;
548 }
549
550 enum NCC = 8;
551
552 struct termio
553 {
554 ushort c_iflag;
555 ushort c_oflag;
556 ushort c_cflag;
557 ushort c_lflag;
558 ubyte c_line;
559 ubyte[NCC] c_cc;
560 }
561
562 enum TIOCM_LE = 0x001;
563 enum TIOCM_DTR = 0x002;
564 enum TIOCM_RTS = 0x004;
565 enum TIOCM_ST = 0x008;
566 enum TIOCM_SR = 0x010;
567 enum TIOCM_CTS = 0x020;
568 enum TIOCM_CAR = 0x040;
569 enum TIOCM_RNG = 0x080;
570 enum TIOCM_DSR = 0x100;
571 enum TIOCM_CD = TIOCM_CAR;
572 enum TIOCM_RI = TIOCM_RNG;
573
574 enum N_TTY = 0;
575 enum N_SLIP = 1;
576 enum N_MOUSE = 2;
577 enum N_PPP = 3;
578 enum N_STRIP = 4;
579 enum N_AX25 = 5;
580 enum N_X25 = 6;
581 enum N_6PACK = 7;
582 enum N_MASC = 8;
583 enum N_R3964 = 9;
584 enum N_PROFIBUS_FDL = 10;
585 enum N_IRDA = 11;
586 enum N_SMSBLOCK = 12;
587 enum N_HDLC = 13;
588 enum N_SYNC_PPP = 14;
589 enum N_HCI = 15;
590
591 enum TCGETS = 0x5401;
592 enum TCSETS = 0x5402;
593 enum TCSETSW = 0x5403;
594 enum TCSETSF = 0x5404;
595 enum TCGETA = 0x5405;
596 enum TCSETA = 0x5406;
597 enum TCSETAW = 0x5407;
598 enum TCSETAF = 0x5408;
599 enum TCSBRK = 0x5409;
600 enum TCXONC = 0x540A;
601 enum TCFLSH = 0x540B;
602 enum TIOCEXCL = 0x540C;
603 enum TIOCNXCL = 0x540D;
604 enum TIOCSCTTY = 0x540E;
605 enum TIOCGPGRP = 0x540F;
606 enum TIOCSPGRP = 0x5410;
607 enum TIOCOUTQ = 0x5411;
608 enum TIOCSTI = 0x5412;
609 enum TIOCGWINSZ = 0x5413;
610 enum TIOCSWINSZ = 0x5414;
611 enum TIOCMGET = 0x5415;
612 enum TIOCMBIS = 0x5416;
613 enum TIOCMBIC = 0x5417;
614 enum TIOCMSET = 0x5418;
615 enum TIOCGSOFTCAR = 0x5419;
616 enum TIOCSSOFTCAR = 0x541A;
617 enum FIONREAD = 0x541B;
618 enum TIOCINQ = FIONREAD;
619 enum TIOCLINUX = 0x541C;
620 enum TIOCCONS = 0x541D;
621 enum TIOCGSERIAL = 0x541E;
622 enum TIOCSSERIAL = 0x541F;
623 enum TIOCPKT = 0x5420;
624 enum FIONBIO = 0x5421;
625 enum TIOCNOTTY = 0x5422;
626 enum TIOCSETD = 0x5423;
627 enum TIOCGETD = 0x5424;
628 enum TCSBRKP = 0x5425;
629 enum TIOCSBRK = 0x5427;
630 enum TIOCCBRK = 0x5428;
631 enum TIOCGSID = 0x5429;
632
633 enum TCGETS2 = _IOR!termios2('T', 0x2A);
634 enum TCSETS2 = _IOR!termios2('T', 0x2B);
635 enum TCSETSW2 = _IOW!termios2('T', 0x2C);
636 enum TCSETSF2 = _IOW!termios2('T', 0x2D);
637
638 enum TIOCGRS485 = 0x542E;
639 enum TIOCSRS485 = 0x542F;
640
641 enum TIOCGPTN = _IOR!uint('T', 0x30);
642 enum TIOCSPTLCK = _IOW!int('T', 0x31);
643 enum TIOCGDEV = _IOR!uint('T', 0x32);
644
645 enum TCGETX = 0x5432;
646 enum TCSETX = 0x5433;
647 enum TCSETXF = 0x5434;
648 enum TCSETXW = 0x5435;
649
650 enum TIOCSIG = _IOW!int('T', 0x36);
651
652 enum TIOCVHANGUP = 0x5437;
653
654 enum FIONCLEX = 0x5450;
655 enum FIOCLEX = 0x5451;
656 enum FIOASYNC = 0x5452;
657 enum TIOCSERCONFIG = 0x5453;
658 enum TIOCSERGWILD = 0x5454;
659 enum TIOCSERSWILD = 0x5455;
660 enum TIOCGLCKTRMIOS = 0x5456;
661 enum TIOCSLCKTRMIOS = 0x5457;
662 enum TIOCSERGSTRUCT = 0x5458;
663 enum TIOCSERGETLSR = 0x5459;
664 enum TIOCSERGETMULTI = 0x545A;
665 enum TIOCSERSETMULTI = 0x545B;
666
667 enum TIOCMIWAIT = 0x545C;
668 enum TIOCGICOUNT = 0x545D;
669
670 enum FIOQSIZE = 0x5460;
671
672 enum TIOCPKT_DATA = 0;
673 enum TIOCPKT_FLUSHREAD = 1;
674 enum TIOCPKT_FLUSHWRITE = 2;
675 enum TIOCPKT_STOP = 4;
676 enum TIOCPKT_START = 8;
677 enum TIOCPKT_NOSTOP = 16;
678 enum TIOCPKT_DOSTOP = 32;
679 enum TIOCPKT_IOCTL = 64;
680
681 enum TIOCSER_TEMT = 0x01;
682
683 enum SIOCADDRT = 0x890B;
684 enum SIOCDELRT = 0x890C;
685 enum SIOCRTMSG = 0x890D;
686
687 enum SIOCGIFNAME = 0x8910;
688 enum SIOCSIFLINK = 0x8911;
689 enum SIOCGIFCONF = 0x8912;
690 enum SIOCGIFFLAGS = 0x8913;
691 enum SIOCSIFFLAGS = 0x8914;
692 enum SIOCGIFADDR = 0x8915;
693 enum SIOCSIFADDR = 0x8916;
694 enum SIOCGIFDSTADDR = 0x8917;
695 enum SIOCSIFDSTADDR = 0x8918;
696 enum SIOCGIFBRDADDR = 0x8919;
697 enum SIOCSIFBRDADDR = 0x891a;
698 enum SIOCGIFNETMASK = 0x891b;
699 enum SIOCSIFNETMASK = 0x891c;
700 enum SIOCGIFMETRIC = 0x891d;
701 enum SIOCSIFMETRIC = 0x891e;
702 enum SIOCGIFMEM = 0x891f;
703 enum SIOCSIFMEM = 0x8920;
704 enum SIOCGIFMTU = 0x8921;
705 enum SIOCSIFMTU = 0x8922;
706 enum SIOCSIFNAME = 0x8923;
707 enum SIOCSIFHWADDR = 0x8924;
708 enum SIOCGIFENCAP = 0x8925;
709 enum SIOCSIFENCAP = 0x8926;
710 enum SIOCGIFHWADDR = 0x8927;
711 enum SIOCGIFSLAVE = 0x8929;
712 enum SIOCSIFSLAVE = 0x8930;
713 enum SIOCADDMULTI = 0x8931;
714 enum SIOCDELMULTI = 0x8932;
715 enum SIOCGIFINDEX = 0x8933;
716 enum SIOGIFINDEX = SIOCGIFINDEX;
717 enum SIOCSIFPFLAGS = 0x8934;
718 enum SIOCGIFPFLAGS = 0x8935;
719 enum SIOCDIFADDR = 0x8936;
720 enum SIOCSIFHWBROADCAST = 0x8937;
721 enum SIOCGIFCOUNT = 0x8938;
722
723 enum SIOCGIFBR = 0x8940;
724 enum SIOCSIFBR = 0x8941;
725
726 enum SIOCGIFTXQLEN = 0x8942;
727 enum SIOCSIFTXQLEN = 0x8943;
728
729 enum SIOCDARP = 0x8953;
730 enum SIOCGARP = 0x8954;
731 enum SIOCSARP = 0x8955;
732
733 enum SIOCDRARP = 0x8960;
734 enum SIOCGRARP = 0x8961;
735 enum SIOCSRARP = 0x8962;
736
737 enum SIOCGIFMAP = 0x8970;
738 enum SIOCSIFMAP = 0x8971;
739
740 enum SIOCADDDLCI = 0x8980;
741 enum SIOCDELDLCI = 0x8981;
742
743 enum SIOCDEVPRIVATE = 0x89F0;
744
745 enum SIOCPROTOPRIVATE = 0x89E0;
746
747 int ioctl(int __fd, c_ulong __request, ...);
748 }
749 else
750 {
751 static assert(false, "Unsupported platform");
752 }