Add support for the sync_file_range system call.

Based on patch from Russell Sears <sears@cs.berkeley.edu>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7324
This commit is contained in:
Tom Hughes 2008-01-08 16:31:25 +00:00
parent cc3aba0192
commit cbb3cb05a5
4 changed files with 28 additions and 0 deletions

View File

@ -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

View File

@ -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) =

View File

@ -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
------------------------------------------------------------------ */

View File

@ -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
};