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);
// 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
// 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
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
------------------------------------------------------------------ */
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
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
// 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