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