1 #include <stdarg.h>
2 #include <sys/ioctl.h>
3
4 /* Derived from development/ndk/platforms/android-3/arch-arm/include/asm/ioctls.h */
5
6 #define TCGETS_PORTABLE 0x5401
7 #define TCSETS_PORTABLE 0x5402
8 #define TCSETSW_PORTABLE 0x5403
9 #define TCSETSF_PORTABLE 0x5404
10 #define TCGETA_PORTABLE 0x5405
11 #define TCSETA_PORTABLE 0x5406
12 #define TCSETAW_PORTABLE 0x5407
13 #define TCSETAF_PORTABLE 0x5408
14 #define TCSBRK_PORTABLE 0x5409
15 #define TCXONC_PORTABLE 0x540A
16 #define TCFLSH_PORTABLE 0x540B
17 #define TIOCEXCL_PORTABLE 0x540C
18 #define TIOCNXCL_PORTABLE 0x540D
19 #define TIOCSCTTY_PORTABLE 0x540E
20 #define TIOCGPGRP_PORTABLE 0x540F
21 #define TIOCSPGRP_PORTABLE 0x5410
22 #define TIOCOUTQ_PORTABLE 0x5411
23 #define TIOCSTI_PORTABLE 0x5412
24 #define TIOCGWINSZ_PORTABLE 0x5413
25 #define TIOCSWINSZ_PORTABLE 0x5414
26 #define TIOCMGET_PORTABLE 0x5415
27 #define TIOCMBIS_PORTABLE 0x5416
28 #define TIOCMBIC_PORTABLE 0x5417
29 #define TIOCMSET_PORTABLE 0x5418
30 #define TIOCGSOFTCAR_PORTABLE 0x5419
31 #define TIOCSSOFTCAR_PORTABLE 0x541A
32 #define FIONREAD_PORTABLE 0x541B
33 #define TIOCINQ_PORTABLE FIONREAD_PORTABLE
34 #define TIOCLINUX_PORTABLE 0x541C
35 #define TIOCCONS_PORTABLE 0x541D
36 #define TIOCGSERIAL_PORTABLE 0x541E
37 #define TIOCSSERIAL_PORTABLE 0x541F
38 #define TIOCPKT_PORTABLE 0x5420
39 #define FIONBIO_PORTABLE 0x5421
40 #define TIOCNOTTY_PORTABLE 0x5422
41 #define TIOCSETD_PORTABLE 0x5423
42 #define TIOCGETD_PORTABLE 0x5424
43 #define TCSBRKP_PORTABLE 0x5425
44 #define TIOCSBRK_PORTABLE 0x5427
45 #define TIOCCBRK_PORTABLE 0x5428
46 #define TIOCGSID_PORTABLE 0x5429
47 //#define TIOCGPTN _IOR('T',0x30, unsigned int)
48 //#define TIOCSPTLCK _IOW('T',0x31, int)
49
50 #define FIONCLEX_PORTABLE 0x5450
51 #define FIOCLEX_PORTABLE 0x5451
52 #define FIOASYNC_PORTABLE 0x5452
53 #define TIOCSERCONFIG_PORTABLE 0x5453
54 #define TIOCSERGWILD_PORTABLE 0x5454
55 #define TIOCSERSWILD_PORTABLE 0x5455
56 #define TIOCGLCKTRMIOS_PORTABLE 0x5456
57 #define TIOCSLCKTRMIOS_PORTABLE 0x5457
58 #define TIOCSERGSTRUCT_PORTABLE 0x5458
59 #define TIOCSERGETLSR_PORTABLE 0x5459
60 #define TIOCSERGETMULTI_PORTABLE 0x545A
61 #define TIOCSERSETMULTI_PORTABLE 0x545B
62
63 #define TIOCMIWAIT_PORTABLE 0x545C
64 #define TIOCGICOUNT_PORTABLE 0x545D
65 #define FIOQSIZE_PORTABLE 0x545E /* x86 differs here */
66
67 #define TIOCPKT_DATA_PORTABLE 0
68 #define TIOCPKT_FLUSHREAD_PORTABLE 1
69 #define TIOCPKT_FLUSHWRITE_PORTABLE 2
70 #define TIOCPKT_STOP_PORTABLE 4
71 #define TIOCPKT_START_PORTABLE 8
72 #define TIOCPKT_NOSTOP_PORTABLE 16
73 #define TIOCPKT_DOSTOP_PORTABLE 32
74
75 #define TIOCSER_TEMT_PORTABLE 0x01
76
77 #if FIONREAD_PORTABLE==FIONREAD
78 #error Build environment
79 #endif
80
mips_change_request(int request)81 static inline int mips_change_request(int request)
82 {
83 /* Only handles FIO* for now */
84 switch(request) {
85 case FIONREAD_PORTABLE:
86 return FIONREAD;
87 case FIONBIO_PORTABLE:
88 return FIONBIO;
89 case FIONCLEX_PORTABLE:
90 return FIONCLEX;
91 case FIOCLEX_PORTABLE:
92 return FIOCLEX;
93 case FIOASYNC_PORTABLE:
94 return FIOASYNC;
95 case FIOQSIZE_PORTABLE:
96 return FIOQSIZE;
97 }
98 return request;
99 }
100
101 extern int __ioctl(int, int, void *);
ioctl(int fd,int request,...)102 int ioctl(int fd, int request, ...)
103 {
104 va_list ap;
105 void * arg;
106
107 va_start(ap, request);
108 arg = va_arg(ap, void *);
109 va_end(ap);
110
111 return __ioctl(fd, mips_change_request(request), arg);
112 }
113