|
From: <sv...@va...> - 2008-01-08 16:31:22
|
Author: tom
Date: 2008-01-08 16:31:25 +0000 (Tue, 08 Jan 2008)
New Revision: 7324
Log:
Add support for the sync_file_range system call.
Based on patch from Russell Sears <se...@cs...>.
Modified:
trunk/coregrind/m_syswrap/priv_syswrap-linux.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/coregrind/m_syswrap/priv_syswrap-linux.h
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2008-01-08 16:10:47 UTC (rev 7323)
+++ trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2008-01-08 16:31:25 UTC (rev 7324)
@@ -220,6 +220,9 @@
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
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2008-01-08 16:10:47 UTC (rev 7323)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2008-01-08 16:31:25 UTC (rev 7324)
@@ -1371,6 +1371,12 @@
// 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) =
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2008-01-08 16:10:47 UTC (rev 7323)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2008-01-08 16:31:25 UTC (rev 7324)
@@ -2118,6 +2118,17 @@
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
------------------------------------------------------------------ */
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2008-01-08 16:10:47 UTC (rev 7323)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2008-01-08 16:31:25 UTC (rev 7324)
@@ -2216,7 +2216,15 @@
// 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
};
|