DECL_TEMPLATE(linux, sys_ppoll);
DECL_TEMPLATE(linux, sys_epoll_create);
+DECL_TEMPLATE(linux, sys_epoll_create1);
DECL_TEMPLATE(linux, sys_epoll_ctl);
DECL_TEMPLATE(linux, sys_epoll_wait);
DECL_TEMPLATE(linux, sys_epoll_pwait);
LINXY(__NR_signalfd4, sys_signalfd4), // 289
LINX_(__NR_eventfd2, sys_eventfd2), // 290
- // (__NR_epoll_create1, sys_ni_syscall) // 291
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 291
// (__NR_dup3, sys_ni_syscall) // 292
LINXY(__NR_pipe2, sys_pipe2) // 293
// (__NR_inotify_init1, sys_ni_syscall) // 294
}
}
+PRE(sys_epoll_create1)
+{
+ PRINT("sys_epoll_create1 ( %ld )", ARG1);
+ PRE_REG_READ1(long, "epoll_create1", int, flags);
+}
+POST(sys_epoll_create1)
+{
+ vg_assert(SUCCESS);
+ if (!ML_(fd_allowed)(RES, "epoll_create1", tid, True)) {
+ VG_(close)(RES);
+ SET_STATUS_Failure( VKI_EMFILE );
+ } else {
+ if (VG_(clo_track_fds))
+ ML_(record_fd_open_nameless) (tid, RES);
+ }
+}
+
PRE(sys_epoll_ctl)
{
static const HChar* epoll_ctl_s[3] = {
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312
LINXY(__NR_signalfd4, sys_signalfd4), // 313
LINX_(__NR_eventfd2, sys_eventfd2), // 314
- // (__NR_epoll_create1, sys_ni_syscall) // 315
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
// (__NR_dup3, sys_ni_syscall) // 316
LINXY(__NR_pipe2, sys_pipe2) // 317
// (__NR_inotify_init1, sys_ni_syscall) // 318
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312
LINXY(__NR_signalfd4, sys_signalfd4), // 313
LINX_(__NR_eventfd2, sys_eventfd2), // 314
- // (__NR_epoll_create1, sys_ni_syscall) // 315
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
// (__NR_dup3, sys_ni_syscall) // 316
LINXY(__NR_pipe2, sys_pipe2) // 317
// (__NR_inotify_init1, sys_ni_syscall) // 318
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 326
LINXY(__NR_signalfd4, sys_signalfd4), // 327
LINX_(__NR_eventfd2, sys_eventfd2), // 328
- // (__NR_epoll_create1, sys_ni_syscall) // 329
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 329
// (__NR_dup3, sys_ni_syscall) // 330
LINXY(__NR_pipe2, sys_pipe2) // 331
GO(__NR_sys_kexec_load, "ni");
SY(__NR_sys_kexec_load); FAIL;
+ // __NR_epoll_create1 329
+ GO(__NR_epoll_create1, "1s 0m");
+ SY(__NR_epoll_create1, x0); SUCC_OR_FAIL;
+
// no such syscall...
GO(9999, "1e");
SY(9999); FAIL;
283: __NR_sys_kexec_load ni
-----------------------------------------------------
-----------------------------------------------------
+329: __NR_epoll_create1 1s 0m
+-----------------------------------------------------
+
+Syscall param epoll_create1(flags) contains uninitialised byte(s)
+ ...
+-----------------------------------------------------
9999: 9999 1e
-----------------------------------------------------
WARNING: unhandled syscall: 9999