blob: cbd517f7abbf76e5b8304f24fef9f08a380b40c7 [file] [log] [blame]
/*
* Copyright 2012, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdarg.h>
#include <sys/ioctl.h>
#include <ioctls_portable.h>
#include <termios.h>
#include <linux/sockios.h>
#if FIONREAD_PORTABLE==FIONREAD
#error Bad build environment
#endif
static inline int mips_change_request(int request)
{
switch(request) {
case TCGETS_PORTABLE:
return TCGETS;
case TCSETS_PORTABLE:
return TCSETS;
case TCSETSW_PORTABLE:
return TCSETSW;
case TCSETSF_PORTABLE:
return TCSETSF;
case TCGETA_PORTABLE:
return TCGETA;
case TCSETA_PORTABLE:
return TCSETA;
case TCSETAW_PORTABLE:
return TCSETAW;
case TCSETAF_PORTABLE:
return TCSETAF;
case TCSBRK_PORTABLE:
return TCSBRK;
case TCXONC_PORTABLE:
return TCXONC;
case TCFLSH_PORTABLE:
return TCFLSH;
case TIOCEXCL_PORTABLE:
return TIOCEXCL;
case TIOCNXCL_PORTABLE:
return TIOCNXCL;
case TIOCSCTTY_PORTABLE:
return TIOCSCTTY;
case TIOCGPGRP_PORTABLE:
return TIOCGPGRP;
case TIOCSPGRP_PORTABLE:
return TIOCSPGRP;
case TIOCOUTQ_PORTABLE:
return TIOCOUTQ;
case TIOCSTI_PORTABLE:
return TIOCSTI;
case TIOCGWINSZ_PORTABLE:
return TIOCGWINSZ;
case TIOCSWINSZ_PORTABLE:
return TIOCSWINSZ;
case TIOCMGET_PORTABLE:
return TIOCMGET;
case TIOCMBIS_PORTABLE:
return TIOCMBIS;
case TIOCMBIC_PORTABLE:
return TIOCMBIC;
case TIOCMSET_PORTABLE:
return TIOCMSET;
case TIOCGSOFTCAR_PORTABLE:
return TIOCGSOFTCAR;
case TIOCSSOFTCAR_PORTABLE:
return TIOCSSOFTCAR;
case FIONREAD_PORTABLE:
return FIONREAD;
/* case TIOCINQ_PORTABLE: // same as FIONREAD_PORTABLE
return TIOCINQ; */
case TIOCLINUX_PORTABLE:
return TIOCLINUX;
case TIOCCONS_PORTABLE:
return TIOCCONS;
case TIOCGSERIAL_PORTABLE:
return TIOCGSERIAL;
case TIOCSSERIAL_PORTABLE:
return TIOCSSERIAL;
case TIOCPKT_PORTABLE:
return TIOCPKT;
case FIONBIO_PORTABLE:
return FIONBIO;
case TIOCNOTTY_PORTABLE:
return TIOCNOTTY;
case TIOCSETD_PORTABLE:
return TIOCSETD;
case TIOCGETD_PORTABLE:
return TIOCGETD;
case TCSBRKP_PORTABLE:
return TCSBRKP;
case TIOCSBRK_PORTABLE:
return TIOCSBRK;
case TIOCCBRK_PORTABLE:
return TIOCCBRK;
case TIOCGSID_PORTABLE:
return TIOCGSID;
case FIONCLEX_PORTABLE:
return FIONCLEX;
case FIOCLEX_PORTABLE:
return FIOCLEX;
case FIOASYNC_PORTABLE:
return FIOASYNC;
case TIOCSERCONFIG_PORTABLE:
return TIOCSERCONFIG;
case TIOCSERGWILD_PORTABLE:
return TIOCSERGWILD;
case TIOCSERSWILD_PORTABLE:
return TIOCSERSWILD;
case TIOCGLCKTRMIOS_PORTABLE:
return TIOCGLCKTRMIOS;
case TIOCSLCKTRMIOS_PORTABLE:
return TIOCSLCKTRMIOS;
case TIOCSERGSTRUCT_PORTABLE:
return TIOCSERGSTRUCT;
case TIOCSERGETLSR_PORTABLE:
return TIOCSERGETLSR;
case TIOCSERGETMULTI_PORTABLE:
return TIOCSERGETMULTI;
case TIOCSERSETMULTI_PORTABLE:
return TIOCSERSETMULTI;
case TIOCMIWAIT_PORTABLE:
return TIOCMIWAIT;
case TIOCGICOUNT_PORTABLE:
return TIOCGICOUNT;
case FIOQSIZE_PORTABLE:
return FIOQSIZE;
case TIOCPKT_DATA_PORTABLE:
return TIOCPKT_DATA;
case TIOCPKT_FLUSHREAD_PORTABLE:
return TIOCPKT_FLUSHREAD;
case TIOCPKT_FLUSHWRITE_PORTABLE:
return TIOCPKT_FLUSHWRITE;
case TIOCPKT_STOP_PORTABLE:
return TIOCPKT_STOP;
case TIOCPKT_START_PORTABLE:
return TIOCPKT_START;
case TIOCPKT_NOSTOP_PORTABLE:
return TIOCPKT_NOSTOP;
case TIOCPKT_DOSTOP_PORTABLE:
return TIOCPKT_DOSTOP;
/* case TIOCSER_TEMT_PORTABLE: // = 1 same as TIOCPKT_FLUSHREAD_PORTABLE
return TIOCSER_TEMT; */
case TIOCGPTN_PORTABLE:
return TIOCGPTN;
case TIOCSPTLCK_PORTABLE:
return TIOCSPTLCK;
#ifdef USE_OLD_TTY
case TIOCGETD_PORTABLE:
return TIOCGETD;
case TIOCSETD_PORTABLE:
return TIOCSETD;
#else
case OTIOCGETD_PORTABLE:
return OTIOCGETD;
case OTIOCSETD_PORTABLE:
return OTIOCSETD;
#endif
case TIOCHPCL_PORTABLE:
return TIOCHPCL;
case TIOCGETP_PORTABLE:
return TIOCGETP;
case TIOCSETP_PORTABLE:
return TIOCSETP;
case TIOCSETN_PORTABLE:
return TIOCSETN;
case TIOCSETC_PORTABLE:
return TIOCSETC;
case TIOCGETC_PORTABLE:
return TIOCGETC;
case TIOCLBIS_PORTABLE:
return TIOCLBIS;
case TIOCLBIC_PORTABLE:
return TIOCLBIC;
case TIOCLSET_PORTABLE:
return TIOCLSET;
case TIOCLGET_PORTABLE:
return TIOCLGET;
case TIOCSLTC_PORTABLE:
return TIOCSLTC;
case TIOCGLTC_PORTABLE:
return TIOCGLTC;
case OTIOCCONS_PORTABLE:
return OTIOCCONS;
case FIOSETOWN_PORTABLE:
return FIOSETOWN;
case SIOCSPGRP_PORTABLE:
return SIOCSPGRP;
case FIOGETOWN_PORTABLE:
return FIOGETOWN;
case SIOCGPGRP_PORTABLE:
return SIOCGPGRP;
case SIOCATMARK_PORTABLE:
return SIOCATMARK;
case SIOCGSTAMP_PORTABLE:
return SIOCGSTAMP;
}
return request;
}
extern int __ioctl(int, int, void *);
int ioctl_portable(int fd, int request, ...)
{
va_list ap;
void * arg;
va_start(ap, request);
arg = va_arg(ap, void *);
va_end(ap);
return __ioctl(fd, mips_change_request(request), arg);
}