From: Tom Hughes Date: Sat, 19 Jun 2004 12:41:05 +0000 (+0000) Subject: Add support for the FIGETBSZ and FIBMAP ioctls based on a patch X-Git-Tag: svn/VALGRIND_2_1_2~81 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=96d29fe8ac5a3e771e1ca3e74f6367b8b1fe2cd5;p=thirdparty%2Fvalgrind.git Add support for the FIGETBSZ and FIBMAP ioctls based on a patch from Joseph D Wagner . CCMAIL: 83025-done@bugs.kde.org git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2426 --- diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c index d6037bff76..d9d07beb0e 100644 --- a/coregrind/vg_syscalls.c +++ b/coregrind/vg_syscalls.c @@ -1734,12 +1734,12 @@ PRE(fstatfs) /* int fstatfs(int fd, struct statfs *buf); */ MAYBE_PRINTF("fstatfs ( %d, %p )\n",arg1,arg2); SYSCALL_TRACK( pre_mem_write, tid, "stat(buf)", - arg2, sizeof(struct statfs) ); + arg2, sizeof(struct vki_statfs) ); } POST(fstatfs) { - VG_TRACK( post_mem_write, arg2, sizeof(struct statfs) ); + VG_TRACK( post_mem_write, arg2, sizeof(struct vki_statfs) ); } PRE(getsid) @@ -3380,7 +3380,16 @@ PRE(ioctl) case CDROM_DRIVE_STATUS: /* 0x5326 */ case CDROM_CLEAR_OPTIONS: /* 0x5321 */ break; - + + case FIGETBSZ: + SYSCALL_TRACK( pre_mem_write,tid, "ioctl(FIGETBSZ)", arg3, + sizeof(unsigned long)); + break; + case FIBMAP: + SYSCALL_TRACK( pre_mem_read,tid, "ioctl(FIBMAP)", arg3, + sizeof(unsigned long)); + break; + #ifdef HAVE_LINUX_FB_H case FBIOGET_VSCREENINFO: /* 0x4600 */ SYSCALL_TRACK( pre_mem_write,tid, @@ -3813,6 +3822,15 @@ POST(ioctl) case CDROM_CLEAR_OPTIONS: /* 0x5321 */ break; + case FIGETBSZ: + if (res == 0) + VG_TRACK( post_mem_write,arg3, sizeof(unsigned long)); + break; + case FIBMAP: + if (res == 0) + VG_TRACK( post_mem_write,arg3, sizeof(unsigned long)); + break; + #ifdef HAVE_LINUX_FB_H case FBIOGET_VSCREENINFO: //0x4600 if (res == 0) @@ -4914,12 +4932,12 @@ PRE(statfs) MAYBE_PRINTF("statfs ( %p, %p )\n",arg1,arg2); SYSCALL_TRACK( pre_mem_read_asciiz, tid, "statfs(path)", arg1 ); SYSCALL_TRACK( pre_mem_write, tid, "statfs(buf)", - arg2, sizeof(struct statfs) ); + arg2, sizeof(struct vki_statfs) ); } POST(statfs) { - VG_TRACK( post_mem_write, arg2, sizeof(struct statfs) ); + VG_TRACK( post_mem_write, arg2, sizeof(struct vki_statfs) ); } PRE(statfs64) @@ -4928,12 +4946,12 @@ PRE(statfs64) MAYBE_PRINTF("statfs64 ( %p, %p )\n",arg1,arg2); SYSCALL_TRACK( pre_mem_read_asciiz, tid, "statfs64(path)", arg1 ); SYSCALL_TRACK( pre_mem_write, tid, "statfs64(buf)", - arg2, sizeof(struct statfs64) ); + arg2, sizeof(struct vki_statfs64) ); } POST(statfs64) { - VG_TRACK( post_mem_write, arg2, sizeof(struct statfs64) ); + VG_TRACK( post_mem_write, arg2, sizeof(struct vki_statfs64) ); } PRE(symlink) diff --git a/coregrind/vg_unsafe.h b/coregrind/vg_unsafe.h index 6bcc8ab687..f3ce02bf0a 100644 --- a/coregrind/vg_unsafe.h +++ b/coregrind/vg_unsafe.h @@ -64,6 +64,7 @@ #include /* for siginfo_t */ #include /* for adjtimex */ #include /* for hard drive ioctls */ +#include /* for filing system ioctls */ #ifdef HAVE_LINUX_FB_H #include /* for fb_* structs */ #endif diff --git a/include/vg_kerneliface.h b/include/vg_kerneliface.h index 186355cbdc..7ba9b3dcc2 100644 --- a/include/vg_kerneliface.h +++ b/include/vg_kerneliface.h @@ -726,7 +726,7 @@ struct vki_sockaddr { * bits/statfs.h */ -struct statfs { +struct vki_statfs { unsigned int f_type; unsigned int f_bsize; unsigned int f_blocks; @@ -740,7 +740,7 @@ struct statfs { unsigned int f_spare[5]; }; -struct statfs64 { +struct vki_statfs64 { unsigned int f_type; unsigned int f_bsize; unsigned long long f_blocks;