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 <stdarg.h>
18#include <sys/ioctl.h>
19#include <ioctls_portable.h>
20
21#if FIOQSIZE_PORTABLE == FIOQSIZE
22#error Bad build environment
23#endif
24
25static inline int x86_change_request(int request)
26{
27    if (request == FIOQSIZE_PORTABLE)
28        return FIOQSIZE;
29
30    return request;
31}
32
33extern int __ioctl(int, int, void *);
34int ioctl_portable(int fd, int request, ...)
35{
36    va_list ap;
37    void * arg;
38
39    va_start(ap, request);
40    arg = va_arg(ap, void *);
41    va_end(ap);
42
43    return __ioctl(fd, x86_change_request(request), arg);
44}
45