Make sys/ioctl_compat.h portable.
Change-Id: Id9c4c68c8422d46d463b9c987be180ea50c05099
diff --git a/ndk/sources/android/libportable/arch-mips/ioctl.c b/ndk/sources/android/libportable/arch-mips/ioctl.c
index 80a3bb7..0e4fa07 100644
--- a/ndk/sources/android/libportable/arch-mips/ioctl.c
+++ b/ndk/sources/android/libportable/arch-mips/ioctl.c
@@ -154,6 +154,47 @@
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;
}
return request;
}
diff --git a/ndk/sources/android/libportable/common/include/ioctls_portable.h b/ndk/sources/android/libportable/common/include/ioctls_portable.h
index 16fef80..43bb375 100644
--- a/ndk/sources/android/libportable/common/include/ioctls_portable.h
+++ b/ndk/sources/android/libportable/common/include/ioctls_portable.h
@@ -17,6 +17,37 @@
#ifndef _IOCTLS_PORTABLE_H_
#define _IOCTLS_PORTABLE_H_
+/* Derived from development/ndk/platforms/android-3/include/asm-generic/ioctl.h */
+
+#define _IOC_NRBITS_PORTABLE 8
+#define _IOC_TYPEBITS_PORTABLE 8
+#define _IOC_SIZEBITS_PORTABLE 14
+#define _IOC_DIRBITS_PORTABLE 2
+
+#define _IOC_NRMASK_PORTABLE ((1 << _IOC_NRBITS_PORTABLE)-1)
+#define _IOC_TYPEMASK_PORTABLE ((1 << _IOC_TYPEBITS_PORTABLE)-1)
+#define _IOC_SIZEMASK_PORTABLE ((1 << _IOC_SIZEBITS_PORTABLE)-1)
+#define _IOC_DIRMASK_PORTABLE ((1 << _IOC_DIRBITS_PORTABLE)-1)
+
+#define _IOC_NRSHIFT_PORTABLE 0
+#define _IOC_TYPESHIFT_PORTABLE (_IOC_NRSHIFT_PORTABLE+_IOC_NRBITS_PORTABLE)
+#define _IOC_SIZESHIFT_PORTABLE (_IOC_TYPESHIFT_PORTABLE+_IOC_TYPEBITS_PORTABLE)
+#define _IOC_DIRSHIFT_PORTABLE (_IOC_SIZESHIFT_PORTABLE+_IOC_SIZEBITS_PORTABLE)
+
+#define _IOC_NONE_PORTABLE 0U
+#define _IOC_WRITE_PORTABLE 1U
+#define _IOC_READ_PORTABLE 2U
+
+#define _IOC_PORTABLE(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT_PORTABLE) | ((type) << _IOC_TYPESHIFT_PORTABLE) | ((nr) << _IOC_NRSHIFT_PORTABLE) | ((size) << _IOC_SIZESHIFT_PORTABLE))
+
+extern unsigned int __invalid_size_argument_for_IOC;
+#define _IOC_TYPECHECK_PORTABLE(t) ((sizeof(t) == sizeof(t[1]) && sizeof(t) < (1 << _IOC_SIZEBITS_PORTABLE)) ? sizeof(t) : __invalid_size_argument_for_IOC)
+
+#define _IO_PORTABLE(type,nr) _IOC_PORTABLE(_IOC_NONE_PORTABLE,(type),(nr),0)
+#define _IOR_PORTABLE(type,nr,size) _IOC_PORTABLE(_IOC_READ_PORTABLE,(type),(nr),(_IOC_TYPECHECK_PORTABLE(size)))
+#define _IOW_PORTABLE(type,nr,size) _IOC_PORTABLE(_IOC_WRITE_PORTABLE,(type),(nr),(_IOC_TYPECHECK_PORTABLE(size)))
+#define _IOWR_PORTABLE(type,nr,size) _IOC_PORTABLE(_IOC_READ_PORTABLE|_IOC_WRITE_PORTABLE,(type),(nr),(_IOC_TYPECHECK_PORTABLE(size)))
+
/* Derived from development/ndk/platforms/android-3/arch-arm/include/asm/ioctls.h */
#define TCGETS_PORTABLE 0x5401
@@ -60,8 +91,8 @@
#define TIOCSBRK_PORTABLE 0x5427
#define TIOCCBRK_PORTABLE 0x5428
#define TIOCGSID_PORTABLE 0x5429
-//#define TIOCGPTN _IOR('T',0x30, unsigned int)
-//#define TIOCSPTLCK _IOW('T',0x31, int)
+#define TIOCGPTN_PORTABLE _IOR_PORTABLE('T',0x30, unsigned int)
+#define TIOCSPTLCK_PORTABLE _IOW_PORTABLE('T',0x31, int)
#define FIONCLEX_PORTABLE 0x5450
#define FIOCLEX_PORTABLE 0x5451
@@ -90,4 +121,54 @@
#define TIOCSER_TEMT_PORTABLE 0x01
+/* Derived from development/ndk/platforms/android-3/include/sys/ioctl_compat.h */
+
+struct tchars_portable {
+ char t_intrc; /* interrupt */
+ char t_quitc; /* quit */
+ char t_startc; /* start output */
+ char t_stopc; /* stop output */
+ char t_eofc; /* end-of-file */
+ char t_brkc; /* input delimiter (like nl) */
+};
+
+struct ltchars_portable {
+ char t_suspc; /* stop process signal */
+ char t_dsuspc; /* delayed stop process signal */
+ char t_rprntc; /* reprint line */
+ char t_flushc; /* flush output (toggles) */
+ char t_werasc; /* word erase */
+ char t_lnextc; /* literal next character */
+};
+
+struct sgttyb_portable {
+ char sg_ispeed; /* input speed */
+ char sg_ospeed; /* output speed */
+ char sg_erase; /* erase character */
+ char sg_kill; /* kill character */
+ short sg_flags; /* mode flags */
+};
+
+#ifdef USE_OLD_TTY
+# define TIOCGETD_PORTABLE _IOR_PORTABLE('t', 0, int) /* get line discipline */
+# define TIOCSETD_PORTABLE _IOW_PORTABLE('t', 1, int) /* set line discipline */
+#else
+# define OTIOCGETD_PORTABLE _IOR_PORTABLE('t', 0, int) /* get line discipline */
+# define OTIOCSETD_PORTABLE _IOW_PORTABLE('t', 1, int) /* set line discipline */
+#endif
+#define TIOCHPCL_PORTABLE _IO_PORTABLE('t', 2) /* hang up on last close */
+#define TIOCGETP_PORTABLE _IOR_PORTABLE('t', 8,struct sgttyb_portable)/* get parameters -- gtty */
+#define TIOCSETP_PORTABLE _IOW_PORTABLE('t', 9,struct sgttyb_portable)/* set parameters -- stty */
+#define TIOCSETN_PORTABLE _IOW_PORTABLE('t',10,struct sgttyb_portable)/* as above, but no flushtty*/
+#define TIOCSETC_PORTABLE _IOW_PORTABLE('t',17,struct tchars_portable)/* set special characters */
+#define TIOCGETC_PORTABLE _IOR_PORTABLE('t',18,struct tchars_portable)/* get special characters */
+
+#define TIOCLBIS_PORTABLE _IOW_PORTABLE('t', 127, int) /* bis local mode bits */
+#define TIOCLBIC_PORTABLE _IOW_PORTABLE('t', 126, int) /* bic local mode bits */
+#define TIOCLSET_PORTABLE _IOW_PORTABLE('t', 125, int) /* set entire local mode word */
+#define TIOCLGET_PORTABLE _IOR_PORTABLE('t', 124, int) /* get local modes */
+#define TIOCSLTC_PORTABLE _IOW_PORTABLE('t',117,struct ltchars_portable)/* set local special chars*/
+#define TIOCGLTC_PORTABLE _IOR_PORTABLE('t',116,struct ltchars_portable)/* get local special chars*/
+#define OTIOCCONS_PORTABLE _IO_PORTABLE('t', 98) /* for hp300 -- sans int arg */
+
#endif /* _IOCTLS_PORTABLE_H */