|
From: <sv...@va...> - 2015-08-14 08:17:44
|
Author: sewardj
Date: Fri Aug 14 09:17:37 2015
New Revision: 15542
Log:
345338 - TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux
Patch from Martin Ling (mar...@ea...)
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/include/vki/vki-amd64-linux.h
trunk/include/vki/vki-arm-linux.h
trunk/include/vki/vki-arm64-linux.h
trunk/include/vki/vki-linux.h
trunk/include/vki/vki-ppc32-linux.h
trunk/include/vki/vki-ppc64-linux.h
trunk/include/vki/vki-s390x-linux.h
trunk/include/vki/vki-x86-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Fri Aug 14 09:17:37 2015
@@ -8354,6 +8354,18 @@
break;
}
+ /* Serial */
+ case VKI_TIOCGSERIAL: {
+ struct vki_serial_struct *data = (struct vki_serial_struct *)ARG3;
+ PRE_MEM_WRITE("ioctl(VKI_TIOCGSERIAL)", (Addr)data, sizeof(*data));
+ break;
+ }
+ case VKI_TIOCSSERIAL: {
+ struct vki_serial_struct *data = (struct vki_serial_struct *)ARG3;
+ PRE_MEM_READ("ioctl(VKI_TIOCSSERIAL)", (Addr)data, sizeof(*data));
+ break;
+ }
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
@@ -10239,6 +10251,15 @@
case VKI_MEDIA_IOC_SETUP_LINK:
break;
+ /* Serial */
+ case VKI_TIOCGSERIAL: {
+ struct vki_serial_struct *data = (struct vki_serial_struct *)ARG3;
+ POST_MEM_WRITE((Addr)data, sizeof(*data));
+ break;
+ }
+ case VKI_TIOCSSERIAL:
+ break;
+
default:
/* EVIOC* are variable length and return size written on success */
switch (ARG2 & ~(_VKI_IOC_SIZEMASK << _VKI_IOC_SIZESHIFT)) {
Modified: trunk/include/vki/vki-amd64-linux.h
==============================================================================
--- trunk/include/vki/vki-amd64-linux.h (original)
+++ trunk/include/vki/vki-amd64-linux.h Fri Aug 14 09:17:37 2015
@@ -691,6 +691,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-arm-linux.h
==============================================================================
--- trunk/include/vki/vki-arm-linux.h (original)
+++ trunk/include/vki/vki-arm-linux.h Fri Aug 14 09:17:37 2015
@@ -901,6 +901,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-arm64-linux.h
==============================================================================
--- trunk/include/vki/vki-arm64-linux.h (original)
+++ trunk/include/vki/vki-arm64-linux.h Fri Aug 14 09:17:37 2015
@@ -684,6 +684,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-linux.h
==============================================================================
--- trunk/include/vki/vki-linux.h (original)
+++ trunk/include/vki/vki-linux.h Fri Aug 14 09:17:37 2015
@@ -4666,6 +4666,31 @@
//----------------------------------------------------------------------
#define VKI_BINPRM_BUF_SIZE 128
+//----------------------------------------------------------------------
+// From linux-3.19.0/include/linux/serial.h
+//----------------------------------------------------------------------
+
+struct vki_serial_struct {
+ int type;
+ int line;
+ unsigned int port;
+ int irq;
+ int flags;
+ int xmit_fifo_size;
+ int custom_divisor;
+ int baud_base;
+ unsigned short close_delay;
+ char io_type;
+ char reserved_char[1];
+ int hub6;
+ unsigned short closing_wait; /* time to wait before closing */
+ unsigned short closing_wait2; /* no longer used... */
+ unsigned char *iomem_base;
+ unsigned short iomem_reg_shift;
+ unsigned int port_high;
+ unsigned long iomap_base; /* cookie passed into ioremap */
+};
+
#endif // __VKI_LINUX_H
/*--------------------------------------------------------------------*/
Modified: trunk/include/vki/vki-ppc32-linux.h
==============================================================================
--- trunk/include/vki/vki-ppc32-linux.h (original)
+++ trunk/include/vki/vki-ppc32-linux.h Fri Aug 14 09:17:37 2015
@@ -626,8 +626,8 @@
//#define VKI_TIOCSSOFTCAR 0x541A
#define VKI_TIOCLINUX 0x541C
//#define VKI_TIOCCONS 0x541D
-//#define VKI_TIOCGSERIAL 0x541E
-//#define VKI_TIOCSSERIAL 0x541F
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
//#define VKI_TIOCPKT 0x5420
//# define VKI_TIOCPKT_DATA 0
//# define VKI_TIOCPKT_FLUSHREAD 1
Modified: trunk/include/vki/vki-ppc64-linux.h
==============================================================================
--- trunk/include/vki/vki-ppc64-linux.h (original)
+++ trunk/include/vki/vki-ppc64-linux.h Fri Aug 14 09:17:37 2015
@@ -795,6 +795,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/arch/powerpc/include/uapi/asm/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// end
//----------------------------------------------------------------------
Modified: trunk/include/vki/vki-s390x-linux.h
==============================================================================
--- trunk/include/vki/vki-s390x-linux.h (original)
+++ trunk/include/vki/vki-s390x-linux.h Fri Aug 14 09:17:37 2015
@@ -976,6 +976,13 @@
#define VKI_ENOSYS 38 /* Function not implemented */
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
+//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
#endif // __VKI_S390X_LINUX_H
/*--------------------------------------------------------------------*/
Modified: trunk/include/vki/vki-x86-linux.h
==============================================================================
--- trunk/include/vki/vki-x86-linux.h (original)
+++ trunk/include/vki/vki-x86-linux.h Fri Aug 14 09:17:37 2015
@@ -907,6 +907,13 @@
#define VKI_EOVERFLOW 75 /* Value too large for defined data type */
//----------------------------------------------------------------------
+// From linux-3.19.0/include/uapi/asm-generic/ioctls.h
+//----------------------------------------------------------------------
+
+#define VKI_TIOCGSERIAL 0x541E
+#define VKI_TIOCSSERIAL 0x541F
+
+//----------------------------------------------------------------------
// And that's it!
//----------------------------------------------------------------------
|