From: Nicholas Nethercote Date: Tue, 3 Jun 2003 12:55:40 +0000 (+0000) Subject: Added two syscalls: sendfile64 and rt_sigtimedwait. Had to #include X-Git-Tag: svn/VALGRIND_2_0_0~117 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=03527720dc35fd9a116a42b5896d8a51d1d1d626;p=thirdparty%2Fvalgrind.git Added two syscalls: sendfile64 and rt_sigtimedwait. Had to #include signal.h in vg_unsafe.h for the latter. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1667 --- diff --git a/coregrind/vg_syscalls.c b/coregrind/vg_syscalls.c index 6e6dcac9df..287e7b268a 100644 --- a/coregrind/vg_syscalls.c +++ b/coregrind/vg_syscalls.c @@ -1121,6 +1121,22 @@ void VG_(perform_assumed_nonblocking_syscall) ( ThreadId tid ) break; # endif + /* !!!!!!!!!! New, untested syscall, 3 Jun 03 !!!!!!!!!!! */ +# if defined(__NR_sendfile64) + case __NR_sendfile64: /* syscall 239 */ + /* ssize_t sendfile64(int out_df, int in_fd, loff_t *offset, + size_t count); */ + MAYBE_PRINTF("sendfile64 ( %d, %d, %p, %d )\n",arg1,arg2,arg3,arg4); + if (arg3 != (UInt)NULL) + SYSCALL_TRACK( pre_mem_write, tst, "sendfile64(offset)", + arg3, sizeof(loff_t) ); + KERNEL_DO_SYSCALL(tid,res); + if (!VG_(is_kerror)(res) && arg3 != (UInt)NULL ) { + VG_TRACK( post_mem_write, arg3, sizeof(loff_t) ); + } + break; +# endif + /* !!!!!!!!!! New, untested syscalls, 7 Mar 02 !!!!!!!!!!! */ # if defined(__NR_pwrite) @@ -1210,6 +1226,19 @@ void VG_(perform_assumed_nonblocking_syscall) ( ThreadId tid ) break; # endif +# if defined(__NR_rt_sigtimedwait) + case __NR_rt_sigtimedwait: /* syscall 177 */ + /* int sigtimedwait(const sigset_t *set, siginfo_t *info, + const struct timespec timeout); */ + if (arg2 != (UInt)NULL) + SYSCALL_TRACK( pre_mem_write, tst, "sigtimedwait(info)", arg2, + sizeof(siginfo_t) ); + KERNEL_DO_SYSCALL(tid,res); + if (!VG_(is_kerror)(res) && arg2 != (UInt)NULL) + VG_TRACK( post_mem_write, arg2, sizeof(siginfo_t) ); + break; +# endif + case __NR_init_module: /* syscall 128 */ /* int init_module(const char *name, struct module *image); */ MAYBE_PRINTF("init_module ( %p, %p )\n", arg1, arg2 ); diff --git a/coregrind/vg_unsafe.h b/coregrind/vg_unsafe.h index 454590bff5..dbadafb39e 100644 --- a/coregrind/vg_unsafe.h +++ b/coregrind/vg_unsafe.h @@ -55,6 +55,7 @@ #include /* for struct __sysctl_args */ #include /* for cd-rom ioctls */ #include /* for struct user_regs_struct et al */ +#include /* for siginfo_t */ #define __USE_LARGEFILE64 #include /* for struct stat */