• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
mips_change_request(int request)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 *);
WRAP(ioctl)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