]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Implement a few extra ioctls based on patch from Eric Pouech in bug #120728.
authorTom Hughes <tom@compton.nu>
Sat, 11 Feb 2006 13:29:09 +0000 (13:29 +0000)
committerTom Hughes <tom@compton.nu>
Sat, 11 Feb 2006 13:29:09 +0000 (13:29 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5633

coregrind/m_syswrap/syswrap-generic.c
include/vki-amd64-linux.h
include/vki-linux.h
include/vki-ppc32-linux.h
include/vki-ppc64-linux.h
include/vki-x86-linux.h

index 9dc9ed6546a885d5c6a7163f70208d284e461889..c687eb4bd440dc8dbde66036cd64ca9126305e3d 100644 (file)
@@ -3163,6 +3163,14 @@ PRE(sys_ioctl)
       PRE_MEM_WRITE( "ioctl(FIONREAD)",  ARG3, sizeof(int) );
       break;
 
+   case VKI_TIOCSERGETLSR:
+      PRE_MEM_WRITE( "ioctl(TIOCSERGETLSR)", ARG3, sizeof(int) );
+      break;
+   case VKI_TIOCGICOUNT:
+      PRE_MEM_WRITE( "ioctl(TIOCGICOUNT)", ARG3,
+                     sizeof(struct vki_serial_icounter_struct) );
+      break;
+
    case VKI_SG_SET_COMMAND_Q:
       PRE_MEM_READ( "ioctl(SG_SET_COMMAND_Q)", ARG3, sizeof(int) );
       break;
@@ -3549,6 +3557,9 @@ PRE(sys_ioctl)
    case VKI_HDIO_GETGEO: /* 0x0301 */
       PRE_MEM_WRITE( "ioctl(HDIO_GETGEO)", ARG3, sizeof(struct vki_hd_geometry));
       break;
+   case VKI_HDIO_GET_DMA: /* 0x030b */
+      PRE_MEM_WRITE( "ioctl(HDIO_GET_DMA)", ARG3, sizeof(long));
+      break;
    case VKI_HDIO_GET_IDENTITY: /* 0x030d */
       PRE_MEM_WRITE( "ioctl(HDIO_GET_IDENTITY)", ARG3,
                      VKI_SIZEOF_STRUCT_HD_DRIVEID );
@@ -3968,6 +3979,13 @@ POST(sys_ioctl)
       POST_MEM_WRITE( ARG3, sizeof(int) );
       break;
 
+   case VKI_TIOCSERGETLSR:
+      POST_MEM_WRITE( ARG3, sizeof(int) );
+      break;
+   case VKI_TIOCGICOUNT:
+      POST_MEM_WRITE( ARG3, sizeof(struct vki_serial_icounter_struct) );
+      break;
+
    case VKI_SG_SET_COMMAND_Q:
       break;
    case VKI_SG_IO:
@@ -4244,6 +4262,9 @@ POST(sys_ioctl)
    case VKI_HDIO_GETGEO: /* 0x0301 */
       POST_MEM_WRITE(ARG3, sizeof(struct vki_hd_geometry));
       break;
+   case VKI_HDIO_GET_DMA: /* 0x030b */
+      POST_MEM_WRITE(ARG3, sizeof(long));
+      break;
    case VKI_HDIO_GET_IDENTITY: /* 0x030d */
       POST_MEM_WRITE(ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID );
       break;
index 3911b34c00138fffc3f38c529e65286fa407b388..dec58e758a542e791dd80ce872f0eddf2aebd2a0 100644 (file)
@@ -432,6 +432,9 @@ struct vki_termios {
 #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
 
 #define VKI_FIOASYNC   0x5452
+#define TIOCSERGETLSR   0x5459 /* Get line status register */
+
+#define TIOCGICOUNT    0x545D  /* read serial port inline interrupt counts */
 
 //----------------------------------------------------------------------
 // From linux-2.6.9/include/asm-x86_64/poll.h
index 2108e14a5f35a83c54a324254d84492c94d3ae38..3dc701b050a03dc0ce7a733d2b7a264307c8f60f 100644 (file)
@@ -1826,6 +1826,7 @@ struct vki_hd_geometry {
 };
 
 #define VKI_HDIO_GETGEO                0x0301  /* get device geometry */
+#define VKI_HDIO_GET_DMA       0x030b  /* get use-dma flag */
 #define VKI_HDIO_GET_IDENTITY  0x030d  /* get IDE identification info */
 
 // [[Nb: done like this because the original type is a huge struct that will
@@ -2048,6 +2049,18 @@ enum {
        VKI_SNDRV_TIMER_IOCTL_PAUSE = _VKI_IO('T', 0xa3),
 };
 
+//----------------------------------------------------------------------
+// From linux-2.6.15.4/include/linux/serial.h
+//----------------------------------------------------------------------
+
+struct vki_serial_icounter_struct {
+       int cts, dsr, rng, dcd;
+       int rx, tx;
+       int frame, overrun, parity, brk;
+       int buf_overrun;
+       int reserved[9];
+};
+
 #endif // __VKI_LINUX_H
 
 /*--------------------------------------------------------------------*/
index 7cd2aa49e0ecece78674d40d78029aad5eedd5d1..65425fe3f1ddb20cd2efd24f37993f53196073f8 100644 (file)
@@ -605,14 +605,14 @@ extern unsigned int __VKI_invalid_size_argument_for_IOC;
 //#define VKI_TIOCGLCKTRMIOS   0x5456
 //#define VKI_TIOCSLCKTRMIOS   0x5457
 //#define VKI_TIOCSERGSTRUCT   0x5458 /* For debugging only */
-//#define VKI_TIOCSERGETLSR    0x5459 /* Get line status register */
-//  /* ioctl (fd, VKI_TIOCSERGETLSR, &result) where result may be as below */
+#define VKI_TIOCSERGETLSR      0x5459 /* Get line status register */
+  /* ioctl (fd, VKI_TIOCSERGETLSR, &result) where result may be as below */
 //# define VKI_TIOCSER_TEMT    0x01   /* Transmitter physically empty */
 //#define VKI_TIOCSERGETMULTI  0x545A /* Get multiport config  */
 //#define VKI_TIOCSERSETMULTI  0x545B /* Set multiport config */
 
 //#define VKI_TIOCMIWAIT       0x545C  /* wait for a change on serial input line(s) */
-//#define VKI_TIOCGICOUNT      0x545D  /* read serial port inline interrupt counts */
+#define VKI_TIOCGICOUNT                0x545D  /* read serial port inline interrupt counts */
 
 //----------------------------------------------------------------------
 // From linux-2.6.9/include/asm-ppc/poll.h
index e31f1d4a69c3ace8cbaaffc8e4f36f8b126c3ef9..34a2886639aa7bbbe342b07f520291f5a91341f7 100644 (file)
@@ -598,6 +598,8 @@ extern unsigned int __invalid_size_argument_for_IOC;
                             /* Get Pty Number (of pty-mux device) */
 #define VKI_TIOCSPTLCK      _VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
 #define VKI_FIOASYNC        _VKI_IOW('f', 125, int)
+#define VKI_TIOCSERGETLSR   0x5459 /* Get line status register */
+#define VKI_TIOCGICOUNT            0x545D /* read serial port inline interrupt counts */
 
 //----------------------------------------------------------------------
 // From linux-2.6.13/include/asm-ppc64/poll.h
index 5d8d3296cc1fab36de10a83c420ea15ea7da304f..3efc9649cf71802c9caa0fded3afa8e6a39ce080 100644 (file)
@@ -515,6 +515,9 @@ extern unsigned int __vki_invalid_size_argument_for_IOC;
 #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
 
 #define VKI_FIOASYNC   0x5452
+#define VKI_TIOCSERGETLSR   0x5459 /* Get line status register */
+
+#define VKI_TIOCGICOUNT        0x545D  /* read serial port inline interrupt counts */
 
 //----------------------------------------------------------------------
 // From linux-2.6.8.1/include/asm-i386/poll.h