From: Tom Hughes Date: Wed, 10 Dec 2008 09:28:56 +0000 (+0000) Subject: Add support for eventfd2 (and wire up pipe2 on PPC platforms). X-Git-Tag: svn/VALGRIND_3_4_0~82 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d4d4c10fe3dae2c1af5f21ead912c5ebd97d8bc;p=thirdparty%2Fvalgrind.git Add support for eventfd2 (and wire up pipe2 on PPC platforms). git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8815 --- diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 799d420e85..e3e04ad540 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -84,6 +84,7 @@ DECL_TEMPLATE(linux, sys_epoll_ctl); DECL_TEMPLATE(linux, sys_epoll_wait); DECL_TEMPLATE(linux, sys_epoll_pwait); DECL_TEMPLATE(linux, sys_eventfd); +DECL_TEMPLATE(linux, sys_eventfd2); DECL_TEMPLATE(linux, sys_gettid); DECL_TEMPLATE(linux, sys_set_tid_address); diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c index 24d2a8c5c5..a1b1da3703 100644 --- a/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -1363,7 +1363,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { // (__NR_paccept, sys_ni_syscall) // 288 // (__NR_signalfd4, sys_ni_syscall) // 289 - // (__NR_eventfd2, sys_ni_syscall) // 290 + LINX_(__NR_eventfd2, sys_eventfd2), // 290 // (__NR_epoll_create1, sys_ni_syscall) // 291 // (__NR_dup3, sys_ni_syscall) // 292 LINXY(__NR_pipe2, sys_pipe2) // 293 diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index ac90ba756d..acec29f3bf 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -1111,6 +1111,22 @@ POST(sys_eventfd) } } +PRE(sys_eventfd2) +{ + PRINT("sys_eventfd2 ( %lu, %d )", ARG1,ARG2); + PRE_REG_READ2(long, "sys_eventfd2", unsigned int, count, int, flags); +} +POST(sys_eventfd2) +{ + if (!ML_(fd_allowed)(RES, "eventfd2", tid, True)) { + VG_(close)(RES); + SET_STATUS_Failure( VKI_EMFILE ); + } else { + if (VG_(clo_track_fds)) + ML_(record_fd_open_nameless) (tid, RES); + } +} + /* --------------------------------------------------------------------- tid-related wrappers ------------------------------------------------------------------ */ diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c index ee30ef9c6c..fbd6a43618 100644 --- a/coregrind/m_syswrap/syswrap-ppc32-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c @@ -1859,6 +1859,12 @@ const SyscallTableEntry ML_(syscall_table)[] = { // LINXY(__NR_subpage_prot, sys_ni_syscall), // 310 LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 311 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312 + // (__NR_signalfd4, sys_ni_syscall) // 313 + LINX_(__NR_eventfd2, sys_eventfd2), // 314 + // (__NR_epoll_create1, sys_ni_syscall) // 315 + // (__NR_dup3, sys_ni_syscall) // 316 + LINXY(__NR_pipe2, sys_pipe2) // 317 + // (__NR_inotify_init1, sys_ni_syscall) // 318 }; const UInt ML_(syscall_table_size) = diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c index 8fce518a5e..58a5f1a3c9 100644 --- a/coregrind/m_syswrap/syswrap-ppc64-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c @@ -1499,6 +1499,12 @@ const SyscallTableEntry ML_(syscall_table)[] = { // LINXY(__NR_subpage_prot, sys_ni_syscall), // 310 LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 311 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312 + // (__NR_signalfd4, sys_ni_syscall) // 313 + LINX_(__NR_eventfd2, sys_eventfd2), // 314 + // (__NR_epoll_create1, sys_ni_syscall) // 315 + // (__NR_dup3, sys_ni_syscall) // 316 + LINXY(__NR_pipe2, sys_pipe2) // 317 + // (__NR_inotify_init1, sys_ni_syscall) // 318 }; const UInt ML_(syscall_table_size) = diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index b4dd604abe..6fafabd232 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -2235,7 +2235,7 @@ const SyscallTableEntry ML_(syscall_table)[] = { LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 325 LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 326 // (__NR_signalfd4, sys_ni_syscall) // 327 - // (__NR_eventfd2, sys_ni_syscall) // 328 + LINX_(__NR_eventfd2, sys_eventfd2), // 328 // (__NR_epoll_create1, sys_ni_syscall) // 329 // (__NR_dup3, sys_ni_syscall) // 330