]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for the move_pages system call. BZ#282790.
authorTom Hughes <tom@compton.nu>
Tue, 3 Apr 2012 10:51:27 +0000 (10:51 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 3 Apr 2012 10:51:27 +0000 (10:51 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12485

coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-arm-linux.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-ppc32-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c

index 37d41b71ae72c7e7b1183725442aff5c2538fa91..c4f04534ee7f998d00f17024676d001b6d7d94ed 100644 (file)
@@ -56,6 +56,7 @@ DECL_TEMPLATE(linux, sys_dup3);
 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);
index 39a69484dcf969c7590e8d2f2e62a797c96bd7a1..d18b7c33fb8804b662c7c81a2babf700227adf14 100644 (file)
@@ -1388,7 +1388,7 @@ static SyscallTableEntry syscall_table[] = {
 //   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
index a416b1169e912ebf6b9fe003c39fdec7f5bf9c38..84d4c6bb83289963519dc7f0b2ca3c828e81ec85 100644 (file)
@@ -1783,7 +1783,7 @@ static SyscallTableEntry syscall_main_table[] = {
 
 //   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
index 2d62343de3e2fca533d01ab498ef256c3d076a6b..438dae73483a1fc69c62ca9919dad9ef35747189 100644 (file)
@@ -2783,6 +2783,24 @@ POST(sys_getcpu)
       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
    ------------------------------------------------------------------ */
index 715e685dd1fee806af0b572e656512b5b166101e..ba0a7c93249722f0429fde2e1a3d4026d6f4f2d4 100644 (file)
@@ -1807,7 +1807,7 @@ static SyscallTableEntry syscall_table[] = {
    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
index 75137f2f01e2e3fcee4b84f28c9fc03d7aff2d21..01731b5ae6e120d59f7b86611edd7174693c7f18 100644 (file)
@@ -1447,7 +1447,7 @@ static SyscallTableEntry syscall_table[] = {
    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
index a79bc45124d9ea4038eea683beea4fdc3cf0063c..0a4035d6d90b097898f9e124b2e2eb7008e28e99 100644 (file)
@@ -2196,7 +2196,7 @@ static SyscallTableEntry syscall_table[] = {
 
 //   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