|
From: <sv...@va...> - 2012-04-03 10:51:40
|
tom 2012-04-03 11:51:27 +0100 (Tue, 03 Apr 2012)
New Revision: 12485
Log:
Add support for the move_pages system call. BZ#282790.
Modified files:
trunk/coregrind/m_syswrap/priv_syswrap-linux.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-arm-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c (+18 -0)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -2783,6 +2783,24 @@
POST_MEM_WRITE( ARG3, sizeof(struct vki_getcpu_cache) );
}
+PRE(sys_move_pages)
+{
+ PRINT("sys_move_pages ( %ld, %ld, %#lx, %#lx, %#lx, %lx )",
+ ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
+ PRE_REG_READ6(int, "move_pages",
+ vki_pid_t, pid, unsigned long, nr_pages, const void **, pages,
+ const int *, nodes, int *, status, int, flags);
+ PRE_MEM_READ("move_pages(pages)", ARG3, ARG2 * sizeof(void *));
+ if (ARG4)
+ PRE_MEM_READ("move_pages(nodes)", ARG4, ARG2 * sizeof(int));
+ PRE_MEM_WRITE("move_pages(status)", ARG5, ARG2 * sizeof(int));
+}
+
+POST(sys_move_pages)
+{
+ POST_MEM_WRITE(ARG5, ARG2 * sizeof(int));
+}
+
/* ---------------------------------------------------------------------
utime wrapper
------------------------------------------------------------------ */
Modified: trunk/coregrind/m_syswrap/syswrap-arm-linux.c (+1 -1)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm-linux.c 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/syswrap-arm-linux.c 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -1783,7 +1783,7 @@
// LINX_(__NR_tee, sys_ni_syscall), // 315
// LINX_(__NR_vmsplice, sys_ni_syscall), // 316
-// LINX_(__NR_move_pages, sys_ni_syscall), // 317
+ LINXY(__NR_move_pages, sys_move_pages), // 317
// LINX_(__NR_getcpu, sys_ni_syscall), // 318
LINX_(__NR_utimensat, sys_utimensat), // 320
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c (+1 -1)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -1807,7 +1807,7 @@
LINX_(__NR_faccessat, sys_faccessat), // 298
LINX_(__NR_set_robust_list, sys_set_robust_list), // 299
LINXY(__NR_get_robust_list, sys_get_robust_list), // 300
-// LINX_(__NR_move_pages, sys_ni_syscall), // 301
+ LINXY(__NR_move_pages, sys_move_pages), // 301
LINXY(__NR_getcpu, sys_getcpu), // 302
LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 303
LINX_(__NR_utimensat, sys_utimensat), // 304
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c (+1 -1)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -2196,7 +2196,7 @@
// LINX_(__NR_tee, sys_ni_syscall), // 315
// LINX_(__NR_vmsplice, sys_ni_syscall), // 316
-// LINX_(__NR_move_pages, sys_ni_syscall), // 317
+ LINXY(__NR_move_pages, sys_move_pages), // 317
LINXY(__NR_getcpu, sys_getcpu), // 318
LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 319
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c (+1 -1)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -1388,7 +1388,7 @@
// 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
+ LINXY(__NR_move_pages, sys_move_pages), // 279
LINX_(__NR_utimensat, sys_utimensat), // 280
LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 281
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c (+1 -1)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -1447,7 +1447,7 @@
LINX_(__NR_faccessat, sys_faccessat), // 298
LINX_(__NR_set_robust_list, sys_set_robust_list), // 299
LINXY(__NR_get_robust_list, sys_get_robust_list), // 300
-// LINX_(__NR_move_pages, sys_ni_syscall), // 301
+ LINXY(__NR_move_pages, sys_move_pages), // 301
LINXY(__NR_getcpu, sys_getcpu), // 302
LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 303
LINX_(__NR_utimensat, sys_utimensat), // 304
Modified: trunk/coregrind/m_syswrap/priv_syswrap-linux.h (+1 -0)
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2012-04-02 22:56:03 +01:00 (rev 12484)
+++ trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2012-04-03 11:51:27 +01:00 (rev 12485)
@@ -56,6 +56,7 @@
DECL_TEMPLATE(linux, sys_getcpu);
DECL_TEMPLATE(linux, sys_splice);
DECL_TEMPLATE(linux, sys_readahead);
+DECL_TEMPLATE(linux, sys_move_pages);
// POSIX, but various sub-cases differ between Linux and Darwin.
DECL_TEMPLATE(linux, sys_fcntl);
|