From: Tom Hughes Date: Mon, 25 Jul 2005 15:21:41 +0000 (+0000) Subject: Add support for the inotify system calls based on a patch X-Git-Tag: svn/VALGRIND_3_0_0~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03bc2deb2566a52ad4dd2b18adf0a7a0f19d9571;p=thirdparty%2Fvalgrind.git Add support for the inotify system calls based on a patch from John McCutchan . git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4250 --- diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 99c3d5048e..522dfe9363 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -92,6 +92,10 @@ DECL_TEMPLATE(linux, sys_io_cancel); DECL_TEMPLATE(linux, sys_set_mempolicy); DECL_TEMPLATE(linux, sys_get_mempolicy); +DECL_TEMPLATE(linux, sys_inotify_init); +DECL_TEMPLATE(linux, sys_inotify_add_watch); +DECL_TEMPLATE(linux, sys_inotify_rm_watch); + #endif // __PRIV_SYSWRAP_LINUX_H /*--------------------------------------------------------------------*/ diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 965470d35d..a882604852 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -860,6 +860,36 @@ POST(sys_get_mempolicy) POST_MEM_WRITE( ARG2, VG_ROUNDUP( ARG3, sizeof(UWord) * 8 ) / sizeof(UWord) ); } +PRE(sys_inotify_init) +{ + PRINT("sys_inotify_init ( )"); + PRE_REG_READ0(long, "inotify_init"); +} +POST(sys_inotify_init) +{ + vg_assert(SUCCESS); + if (!ML_(fd_allowed)(RES, "inotify_init", 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_inotify_add_watch) +{ + PRINT( "sys_inotify_add_watch( %d, %p, %x )", ARG1,ARG2,ARG3); + PRE_REG_READ3(long, "inotify_add_watch", int, fd, char *, path, int, mask); + PRE_MEM_RASCIIZ( "inotify_add_watch(path)", ARG2 ); +} + +PRE(sys_inotify_rm_watch) +{ + PRINT( "sys_inotify_rm_watch( %d, %x )", ARG1,ARG2); + PRE_REG_READ2(long, "inotify_rm_watch", int, fd, int, wd); +} + #undef PRE #undef POST diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index d83d2c6e2b..f455e7becd 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -2277,6 +2277,18 @@ const SyscallTableEntry ML_(syscall_table)[] = { GENX_(__NR_mq_notify, sys_mq_notify), // (mq_open+4) GENXY(__NR_mq_getsetattr, sys_mq_getsetattr), // (mq_open+5) GENX_(__NR_sys_kexec_load, sys_ni_syscall), // 283 +// GENXY(__NR_waitid, sys_waitid), // 284 + + GENX_(285, sys_ni_syscall), // 285 +// LINX_(__NR_add_key, sys_add_key), // 286 +// LINX_(__NR_request_key, sys_request_key), // 287 +// LINXY(__NR_keyctl, sys_keyctl), // 288 +// LINX_(__NR_ioprio_set, sys_ioprio_set), // 289 + +// LINX_(__NR_ioprio_get, sys_ioprio_get), // 290 + LINX_(__NR_inotify_init, sys_inotify_init), // 291 + LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 292 + LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 293 }; const UInt ML_(syscall_table_size) =