]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for the parallel port ioctls.
authorTom Hughes <tom@compton.nu>
Mon, 16 Aug 2004 19:46:55 +0000 (19:46 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 16 Aug 2004 19:46:55 +0000 (19:46 +0000)
CCMAIL: 86407-done@bugs.kde.org

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2588

coregrind/vg_syscalls.c
coregrind/vg_unsafe.h

index 15246e3b746ffcecafbcd48638ad3994874f9bea..016d99e3e13347eb1d19409d43123240c89639ba 100644 (file)
@@ -3423,6 +3423,88 @@ PRE(ioctl)
       break;
 #endif
 
+   case PPCLAIM:
+   case PPEXCL:
+   case PPYIELD:
+   case PPRELEASE:
+      break;
+   case PPSETMODE:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETMODE)", arg3,
+                     sizeof(int) );
+      break;
+   case PPGETMODE:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETMODE)", arg3,
+                     sizeof(int) );
+      break;
+   case PPSETPHASE:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETPHASE)", arg3,
+                     sizeof(int) );
+      break;
+   case PPGETPHASE:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETPHASE)", arg3,
+                     sizeof(int) );
+      break;
+   case PPGETMODES:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETMODES)", arg3,
+                     sizeof(unsigned int) );
+      break;
+   case PPSETFLAGS:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETFLAGS)", arg3,
+                     sizeof(int) );
+      break;
+   case PPGETFLAGS:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETFLAGS)", arg3,
+                     sizeof(int) );
+      break;
+   case PPRSTATUS:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPRSTATUS)", arg3,
+                     sizeof(unsigned char) );
+      break;
+   case PPRDATA:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPRDATA)", arg3,
+                     sizeof(unsigned char) );
+      break;
+   case PPRCONTROL:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPRCONTROL)", arg3,
+                     sizeof(unsigned char) );
+      break;
+   case PPWDATA:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPWDATA)", arg3,
+                     sizeof(unsigned char) );
+      break;
+   case PPWCONTROL:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPWCONTROL)", arg3,
+                     sizeof(unsigned char) );
+      break;
+   case PPFCONTROL:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPFCONTROL)", arg3,
+                     2 * sizeof(unsigned char) );
+      break;
+   case PPDATADIR:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPDATADIR)", arg3,
+                     sizeof(int) );
+      break;
+   case PPNEGOT:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPNEGOT)", arg3,
+                     sizeof(int) );
+      break;
+   case PPWCTLONIRQ:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPWCTLONIRQ)", arg3,
+                     sizeof(unsigned char) );
+      break;
+   case PPCLRIRQ:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPCLRIRQ)", arg3,
+                     sizeof(int) );
+      break;
+   case PPSETTIME:
+      SYSCALL_TRACK( pre_mem_read, tid, "ioctl(PPSETTIME)", arg3,
+                     sizeof(struct timeval) );
+      break;
+   case PPGETTIME:
+      SYSCALL_TRACK( pre_mem_write, tid, "ioctl(PPGETTIME)", arg3,
+                     sizeof(struct timeval) );
+      break;
+
       /* We don't have any specific information on it, so
         try to do something reasonable based on direction and
         size bits.  The encoding scheme is described in
@@ -3862,6 +3944,49 @@ POST(ioctl)
       break;
 #endif
 
+   case PPCLAIM:
+   case PPEXCL:
+   case PPYIELD:
+   case PPRELEASE:
+   case PPSETMODE:
+   case PPSETPHASE:
+   case PPSETFLAGS:
+   case PPWDATA:
+   case PPWCONTROL:
+   case PPFCONTROL:
+   case PPDATADIR:
+   case PPNEGOT:
+   case PPWCTLONIRQ:
+   case PPSETTIME:
+      break;
+   case PPGETMODE:
+      VG_TRACK( post_mem_write, arg3, sizeof(int) );
+      break;
+   case PPGETPHASE:
+      VG_TRACK( post_mem_write, arg3, sizeof(int) );
+      break;
+   case PPGETMODES:
+      VG_TRACK( post_mem_write, arg3, sizeof(unsigned int) );
+      break;
+   case PPGETFLAGS:
+      VG_TRACK( post_mem_write, arg3, sizeof(int) );
+      break;
+   case PPRSTATUS:
+      VG_TRACK( post_mem_write, arg3, sizeof(unsigned char) );
+      break;
+   case PPRDATA:
+      VG_TRACK( post_mem_write, arg3, sizeof(unsigned char) );
+      break;
+   case PPRCONTROL:
+      VG_TRACK( post_mem_write, arg3, sizeof(unsigned char) );
+      break;
+   case PPCLRIRQ:
+      VG_TRACK( post_mem_write, arg3, sizeof(int) );
+      break;
+   case PPGETTIME:
+      VG_TRACK( post_mem_write, arg3, sizeof(struct timeval) );
+      break;
+
       /* We don't have any specific information on it, so
         try to do something reasonable based on direction and
         size bits.  The encoding scheme is described in
index b9d65d99da4efea9cba3895be7d661371680634e..263e7fa0c6a092ba15f15968132ef3fab95cb217 100644 (file)
@@ -75,6 +75,7 @@ typedef unsigned short u16;
 #endif
 #include <linux/mii.h>    /* for mii_* structs */
 #endif
+#include <linux/ppdev.h>  /* for PP* ioctls */
 
 #define __USE_LARGEFILE64
 #include <sys/stat.h>     /* for struct stat */