]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
CDROM ioctls. (Lionel Ulmer)
authorJulian Seward <jseward@acm.org>
Sat, 27 Apr 2002 02:28:19 +0000 (02:28 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 27 Apr 2002 02:28:19 +0000 (02:28 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@163

coregrind/vg_unsafe.h
vg_syscall_mem.c
vg_unsafe.h

index 6e362ad2304a0d84173f6ab709cdfc7f071ce56a..bbc417d98f8c13f55a180e227096b4f077820153 100644 (file)
@@ -54,7 +54,7 @@
 #include <scsi/sg.h>      /* for the SG_* ioctls */
 #include <sched.h>        /* for struct sched_param */
 #include <linux/sysctl.h> /* for struct __sysctl_args */
-
+#include <linux/cdrom.h>  /* for cd-rom ioctls */
 
 #define __USE_LARGEFILE64
 #include <sys/stat.h>     /* for struct stat */
index 931dec5addcc569cc7976181623b8bab5727a0c0..f3b7052f8aee38101d04fffd992afd11e26a6426 100644 (file)
@@ -1718,7 +1718,44 @@ void VG_(perform_assumed_nonblocking_syscall) ( ThreadId tid )
                if(!VG_(is_kerror) && res == 0)
                    make_readable(arg3, sizeof(unsigned long));
                break;
-          
+
+            /* CD ROM stuff (??)  */
+            case CDROMSUBCHNL:
+                must_be_readable(tst, "ioctl(CDROMSUBCHNL (cdsc_format, char))",
+                   (int) &(((struct cdrom_subchnl *) arg3)->cdsc_format), 
+                   sizeof(((struct cdrom_subchnl *) arg3)->cdsc_format));
+                must_be_writable(tst, "ioctl(CDROMSUBCHNL)", arg3, 
+                   sizeof(struct cdrom_subchnl));
+                KERNEL_DO_SYSCALL(tid,res);
+                if (!VG_(is_kerror)(res) && res == 0)
+                   make_readable (arg3, sizeof(struct cdrom_subchnl));
+                break;
+            case CDROMREADTOCHDR:
+                must_be_writable(tst, "ioctl(CDROMREADTOCHDR)", arg3, 
+                   sizeof(struct cdrom_tochdr));
+                KERNEL_DO_SYSCALL(tid,res);
+                if (!VG_(is_kerror)(res) && res == 0)
+                   make_readable (arg3, sizeof(struct cdrom_tochdr));
+                break;
+            case CDROMREADTOCENTRY:
+                 must_be_readable(tst, "ioctl(CDROMREADTOCENTRY (cdte_format, char))",
+                    (int) &(((struct cdrom_tocentry *) arg3)->cdte_format), 
+                    sizeof(((struct cdrom_tocentry *) arg3)->cdte_format));
+                 must_be_readable(tst, "ioctl(CDROMREADTOCENTRY (cdte_track, char))",
+                    (int) &(((struct cdrom_tocentry *) arg3)->cdte_track), 
+                    sizeof(((struct cdrom_tocentry *) arg3)->cdte_track));
+                 must_be_writable(tst, "ioctl(CDROMREADTOCENTRY)", arg3, 
+                    sizeof(struct cdrom_tocentry));
+                 KERNEL_DO_SYSCALL(tid,res);
+                 if (!VG_(is_kerror)(res) && res == 0)
+                    make_readable (arg3, sizeof(struct cdrom_tochdr));
+                 break;
+            case CDROMPLAYMSF:
+                 must_be_readable(tst, "ioctl(CDROMPLAYMSF)", arg3, 
+                    sizeof(struct cdrom_msf));
+                 KERNEL_DO_SYSCALL(tid,res);
+                 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 6e362ad2304a0d84173f6ab709cdfc7f071ce56a..bbc417d98f8c13f55a180e227096b4f077820153 100644 (file)
@@ -54,7 +54,7 @@
 #include <scsi/sg.h>      /* for the SG_* ioctls */
 #include <sched.h>        /* for struct sched_param */
 #include <linux/sysctl.h> /* for struct __sysctl_args */
-
+#include <linux/cdrom.h>  /* for cd-rom ioctls */
 
 #define __USE_LARGEFILE64
 #include <sys/stat.h>     /* for struct stat */