1 /* 2 * Copyright 2012, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <portability.h> 18 #include <stdarg.h> 19 #include <sys/ioctl.h> 20 #include <ioctls_portable.h> 21 #include <termios.h> 22 #include <linux/sockios.h> 23 24 #if FIONREAD_PORTABLE==FIONREAD 25 #error Bad build environment 26 #endif 27 28 static inline int mips_change_request(int request) 29 { 30 switch(request) { 31 case TCGETS_PORTABLE: 32 return TCGETS; 33 case TCSETS_PORTABLE: 34 return TCSETS; 35 case TCSETSW_PORTABLE: 36 return TCSETSW; 37 case TCSETSF_PORTABLE: 38 return TCSETSF; 39 case TCGETA_PORTABLE: 40 return TCGETA; 41 case TCSETA_PORTABLE: 42 return TCSETA; 43 case TCSETAW_PORTABLE: 44 return TCSETAW; 45 case TCSETAF_PORTABLE: 46 return TCSETAF; 47 case TCSBRK_PORTABLE: 48 return TCSBRK; 49 case TCXONC_PORTABLE: 50 return TCXONC; 51 case TCFLSH_PORTABLE: 52 return TCFLSH; 53 case TIOCEXCL_PORTABLE: 54 return TIOCEXCL; 55 case TIOCNXCL_PORTABLE: 56 return TIOCNXCL; 57 case TIOCSCTTY_PORTABLE: 58 return TIOCSCTTY; 59 case TIOCGPGRP_PORTABLE: 60 return TIOCGPGRP; 61 case TIOCSPGRP_PORTABLE: 62 return TIOCSPGRP; 63 case TIOCOUTQ_PORTABLE: 64 return TIOCOUTQ; 65 case TIOCSTI_PORTABLE: 66 return TIOCSTI; 67 case TIOCGWINSZ_PORTABLE: 68 return TIOCGWINSZ; 69 case TIOCSWINSZ_PORTABLE: 70 return TIOCSWINSZ; 71 case TIOCMGET_PORTABLE: 72 return TIOCMGET; 73 case TIOCMBIS_PORTABLE: 74 return TIOCMBIS; 75 case TIOCMBIC_PORTABLE: 76 return TIOCMBIC; 77 case TIOCMSET_PORTABLE: 78 return TIOCMSET; 79 case TIOCGSOFTCAR_PORTABLE: 80 return TIOCGSOFTCAR; 81 case TIOCSSOFTCAR_PORTABLE: 82 return TIOCSSOFTCAR; 83 case FIONREAD_PORTABLE: 84 return FIONREAD; 85 /* case TIOCINQ_PORTABLE: // same as FIONREAD_PORTABLE 86 return TIOCINQ; */ 87 case TIOCLINUX_PORTABLE: 88 return TIOCLINUX; 89 case TIOCCONS_PORTABLE: 90 return TIOCCONS; 91 case TIOCGSERIAL_PORTABLE: 92 return TIOCGSERIAL; 93 case TIOCSSERIAL_PORTABLE: 94 return TIOCSSERIAL; 95 case TIOCPKT_PORTABLE: 96 return TIOCPKT; 97 case FIONBIO_PORTABLE: 98 return FIONBIO; 99 case TIOCNOTTY_PORTABLE: 100 return TIOCNOTTY; 101 case TIOCSETD_PORTABLE: 102 return TIOCSETD; 103 case TIOCGETD_PORTABLE: 104 return TIOCGETD; 105 case TCSBRKP_PORTABLE: 106 return TCSBRKP; 107 case TIOCSBRK_PORTABLE: 108 return TIOCSBRK; 109 case TIOCCBRK_PORTABLE: 110 return TIOCCBRK; 111 case TIOCGSID_PORTABLE: 112 return TIOCGSID; 113 case FIONCLEX_PORTABLE: 114 return FIONCLEX; 115 case FIOCLEX_PORTABLE: 116 return FIOCLEX; 117 case FIOASYNC_PORTABLE: 118 return FIOASYNC; 119 case TIOCSERCONFIG_PORTABLE: 120 return TIOCSERCONFIG; 121 case TIOCSERGWILD_PORTABLE: 122 return TIOCSERGWILD; 123 case TIOCSERSWILD_PORTABLE: 124 return TIOCSERSWILD; 125 case TIOCGLCKTRMIOS_PORTABLE: 126 return TIOCGLCKTRMIOS; 127 case TIOCSLCKTRMIOS_PORTABLE: 128 return TIOCSLCKTRMIOS; 129 case TIOCSERGSTRUCT_PORTABLE: 130 return TIOCSERGSTRUCT; 131 case TIOCSERGETLSR_PORTABLE: 132 return TIOCSERGETLSR; 133 case TIOCSERGETMULTI_PORTABLE: 134 return TIOCSERGETMULTI; 135 case TIOCSERSETMULTI_PORTABLE: 136 return TIOCSERSETMULTI; 137 case TIOCMIWAIT_PORTABLE: 138 return TIOCMIWAIT; 139 case TIOCGICOUNT_PORTABLE: 140 return TIOCGICOUNT; 141 case FIOQSIZE_PORTABLE: 142 return FIOQSIZE; 143 case TIOCPKT_DATA_PORTABLE: 144 return TIOCPKT_DATA; 145 case TIOCPKT_FLUSHREAD_PORTABLE: 146 return TIOCPKT_FLUSHREAD; 147 case TIOCPKT_FLUSHWRITE_PORTABLE: 148 return TIOCPKT_FLUSHWRITE; 149 case TIOCPKT_STOP_PORTABLE: 150 return TIOCPKT_STOP; 151 case TIOCPKT_START_PORTABLE: 152 return TIOCPKT_START; 153 case TIOCPKT_NOSTOP_PORTABLE: 154 return TIOCPKT_NOSTOP; 155 case TIOCPKT_DOSTOP_PORTABLE: 156 return TIOCPKT_DOSTOP; 157 /* case TIOCSER_TEMT_PORTABLE: // = 1 same as TIOCPKT_FLUSHREAD_PORTABLE 158 return TIOCSER_TEMT; */ 159 case TIOCGPTN_PORTABLE: 160 return TIOCGPTN; 161 case TIOCSPTLCK_PORTABLE: 162 return TIOCSPTLCK; 163 #ifdef USE_OLD_TTY 164 case TIOCGETD_PORTABLE: 165 return TIOCGETD; 166 case TIOCSETD_PORTABLE: 167 return TIOCSETD; 168 #else 169 case OTIOCGETD_PORTABLE: 170 return OTIOCGETD; 171 case OTIOCSETD_PORTABLE: 172 return OTIOCSETD; 173 #endif 174 case TIOCHPCL_PORTABLE: 175 return TIOCHPCL; 176 case TIOCGETP_PORTABLE: 177 return TIOCGETP; 178 case TIOCSETP_PORTABLE: 179 return TIOCSETP; 180 case TIOCSETN_PORTABLE: 181 return TIOCSETN; 182 case TIOCSETC_PORTABLE: 183 return TIOCSETC; 184 case TIOCGETC_PORTABLE: 185 return TIOCGETC; 186 case TIOCLBIS_PORTABLE: 187 return TIOCLBIS; 188 case TIOCLBIC_PORTABLE: 189 return TIOCLBIC; 190 case TIOCLSET_PORTABLE: 191 return TIOCLSET; 192 case TIOCLGET_PORTABLE: 193 return TIOCLGET; 194 case TIOCSLTC_PORTABLE: 195 return TIOCSLTC; 196 case TIOCGLTC_PORTABLE: 197 return TIOCGLTC; 198 case OTIOCCONS_PORTABLE: 199 return OTIOCCONS; 200 case FIOSETOWN_PORTABLE: 201 return FIOSETOWN; 202 case SIOCSPGRP_PORTABLE: 203 return SIOCSPGRP; 204 case FIOGETOWN_PORTABLE: 205 return FIOGETOWN; 206 case SIOCGPGRP_PORTABLE: 207 return SIOCGPGRP; 208 case SIOCATMARK_PORTABLE: 209 return SIOCATMARK; 210 case SIOCGSTAMP_PORTABLE: 211 return SIOCGSTAMP; 212 } 213 return request; 214 } 215 216 extern int __ioctl(int, int, void *); 217 int WRAP(ioctl)(int fd, int request, ...) 218 { 219 va_list ap; 220 void * arg; 221 222 va_start(ap, request); 223 arg = va_arg(ap, void *); 224 va_end(ap); 225 226 return __ioctl(fd, mips_change_request(request), arg); 227 } 228