|
From: Tom H. <th...@cy...> - 2004-09-11 15:07:21
|
CVS commit by thughes:
Add system call wrappers for some CD related ioctls. Based on a
patch from Peter Jones <pj...@re...>.
CCMAIL: 892...@bu...
M +47 -0 vg_syscalls.c 1.140
--- valgrind/coregrind/vg_syscalls.c #1.139:1.140
@@ -2997,4 +2997,12 @@ PRE(ioctl)
arg3, sizeof(int) );
break;
+ case SG_EMULATED_HOST: /* 0x2203 */
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SG_EMULATED_HOST)",
+ arg3, sizeof(int) );
+ break;
+ case SG_GET_SG_TABLESIZE: /* 0x227f */
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(SG_GET_SG_TABLESIZE)",
+ arg3, sizeof(int) );
+ break;
# endif
@@ -3386,4 +3394,23 @@ PRE(ioctl)
sizeof(struct cdrom_tocentry));
break;
+ case CDROMMULTISESSION: /* 0x5310 */
+ SYSCALL_TRACK( pre_mem_write,tid, "ioctl(CDROMMULTISESSION)", arg3,
+ sizeof(struct cdrom_multisession));
+ break;
+ case CDROMVOLREAD: /* 0x5313 */
+ SYSCALL_TRACK( pre_mem_write,tid, "ioctl(CDROMVOLREAD)", arg3,
+ sizeof(struct cdrom_volctrl));
+ break;
+ case CDROMREADAUDIO: /* 0x530e */
+ SYSCALL_TRACK( pre_mem_read,tid, "ioctl(CDROMREADAUDIO)", arg3,
+ sizeof (struct cdrom_read_audio));
+ if ( arg3 ) {
+ /* ToDo: don't do any of the following if the structure is invalid */
+ struct cdrom_read_audio *cra = (struct cdrom_read_audio *) arg3;
+ SYSCALL_TRACK( pre_mem_write, tid, "ioctl(CDROMREADAUDIO).buf",
+ (Addr)(cra->buf),
+ (UInt)(cra->nframes * CD_FRAMESIZE_RAW));
+ }
+ break;
case CDROMPLAYMSF:
SYSCALL_TRACK( pre_mem_read,tid, "ioctl(CDROMPLAYMSF)", arg3,
@@ -3663,4 +3690,10 @@ POST(ioctl)
case SG_GET_VERSION_NUM:
break;
+ case SG_EMULATED_HOST:
+ VG_TRACK( post_mem_write,arg3, sizeof(int));
+ break;
+ case SG_GET_SG_TABLESIZE:
+ VG_TRACK( post_mem_write,arg3, sizeof(int));
+ break;
# endif
@@ -3924,4 +3957,18 @@ POST(ioctl)
VG_TRACK( post_mem_write,arg3, sizeof(struct cdrom_tochdr));
break;
+ case CDROMMULTISESSION:
+ VG_TRACK( post_mem_write,arg3, sizeof(struct cdrom_multisession));
+ break;
+ case CDROMVOLREAD:
+ VG_TRACK( post_mem_write,arg3, sizeof(struct cdrom_volctrl));
+ break;
+ case CDROMREADAUDIO:
+ {
+ struct cdrom_read_audio *cra = (struct cdrom_read_audio *) arg3;
+ VG_TRACK( post_mem_write, (Addr)(cra->buf),
+ (UInt)(cra->nframes * CD_FRAMESIZE_RAW));
+ break;
+ }
+
case CDROMPLAYMSF:
break;
|