From: Julian Seward Date: Wed, 14 May 2008 12:21:29 +0000 (+0000) Subject: Merge r7324 (Add support for the sync_file_range system call. (Russell X-Git-Tag: svn/VALGRIND_3_3_1~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3d545c275ec57c77685d64181184d48dafc8459;p=thirdparty%2Fvalgrind.git Merge r7324 (Add support for the sync_file_range system call. (Russell Sears, Tom Hughes)) git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_3_BRANCH@8076 --- diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 9972be8431..c5edfeaca6 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -220,6 +220,9 @@ DECL_TEMPLATE(linux, sys_rt_sigtimedwait); DECL_TEMPLATE(linux, sys_rt_sigqueueinfo); DECL_TEMPLATE(linux, sys_rt_sigsuspend); +// Linux-specific? +DECL_TEMPLATE(linux, sys_sync_file_range); + /* --------------------------------------------------------------------- Wrappers for sockets and ipc-ery. These are split into standalone procedures because x86-linux hides them inside multiplexors diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c index 1c1d24bddb..f44dfa6159 100644 --- a/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -1371,6 +1371,12 @@ const SyscallTableEntry ML_(syscall_table)[] = { // LINX_(__NR_unshare, sys_unshare), // 272 LINX_(__NR_set_robust_list, sys_set_robust_list), // 273 LINXY(__NR_get_robust_list, sys_get_robust_list), // 274 + +// LINX_(__NR_splice, sys_ni_syscall), // 275 +// LINX_(__NR_tee, sys_ni_syscall), // 276 + LINX_(__NR_sync_file_range, sys_sync_file_range), // 277 +// LINX_(__NR_vmsplice, sys_ni_syscall), // 278 +// LINX_(__NR_move_pages, sys_ni_syscall), // 279 }; const UInt ML_(syscall_table_size) = diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index c17f0ef3d9..66de8296ee 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -2118,6 +2118,17 @@ POST(sys_waitid) POST_MEM_WRITE( ARG5, sizeof(struct vki_rusage) ); } +PRE(sys_sync_file_range) +{ + PRINT("sys_sync_file_range ( %d, %lld, %lld, %d )", + ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(long, "sync_file_range", + int, fd, vki_loff_t, offset, vki_loff_t, nbytes, + unsigned int, flags); + if (!ML_(fd_allowed)(ARG1, "sync_file_range", tid, False)) + SET_STATUS_Failure( VKI_EBADF ); +} + /* --------------------------------------------------------------------- utime wrapper ------------------------------------------------------------------ */ diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index 49761e2566..6dd5d4b8fb 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -2216,6 +2216,14 @@ const SyscallTableEntry ML_(syscall_table)[] = { // LINX_(__NR_unshare, sys_unshare), // 310 LINX_(__NR_set_robust_list, sys_set_robust_list), // 311 LINXY(__NR_get_robust_list, sys_get_robust_list), // 312 +// LINX_(__NR_splice, sys_ni_syscall), // 313 + LINX_(__NR_sync_file_range, sys_sync_file_range), // 314 + +// LINX_(__NR_tee, sys_ni_syscall), // 315 +// LINX_(__NR_vmsplice, sys_ni_syscall), // 316 +// LINX_(__NR_move_pages, sys_ni_syscall), // 317 +// LINX_(__NR_getcpu, sys_ni_syscall), // 318 +// LINX_(__NR_epoll_pwait, sys_ni_syscall), // 319 LINX_(__NR_utimensat, sys_utimensat), // 320 };