? epoll.patch ? x Index: coregrind/vg_syscalls.c =================================================================== RCS file: /home/kde/valgrind/coregrind/vg_syscalls.c,v retrieving revision 1.82 diff -u -3 -p -r1.82 vg_syscalls.c --- coregrind/vg_syscalls.c 26 Jan 2004 17:10:01 -0000 1.82 +++ coregrind/vg_syscalls.c 31 Jan 2004 23:04:08 -0000 @@ -3945,6 +3945,48 @@ POST(poll) } } +PRE(epoll_create) +{ + /* int epoll_create(int size) */ + MAYBE_PRINTF("epoll_create ( %d )\n", arg1); +} + +POST(epoll_create) +{ + if (VG_(clo_track_fds)) { + record_fd_open (tid, res, NULL); + } +} + +PRE(epoll_ctl) +{ + /* int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event) */ + static const char* epoll_ctl_s[3] = { + "EPOLL_CTL_ADD", + "EPOLL_CTL_DEL", + "EPOLL_CTL_MOD" + }; + MAYBE_PRINTF("epoll_ctl ( %d, %s, %d, %p )\n", + arg1, ( arg2<3 ? epoll_ctl_s[arg2] : "?" ), arg3, arg4); + SYSCALL_TRACK( pre_mem_read, tid, "epoll_ctl(event)", + arg4, sizeof(struct vki_epoll_event) ); +} + +PRE(epoll_wait) +{ + /* int epoll_wait(int epfd, struct epoll_event * events, + int maxevents, int timeout) */ + MAYBE_PRINTF("epoll_wait ( %d, %p, %d, %d )\n", arg1, arg2, arg3, arg4); + if (res > 0) + SYSCALL_TRACK( pre_mem_write, tid, "epoll_wait(events)", + arg2, sizeof(struct vki_epoll_event)*arg3); +} + +POST(epoll_wait) +{ + VG_TRACK( post_mem_write, arg2, sizeof(struct vki_epoll_event)*res ) ; +} + PRE(readlink) { /* int readlink(const char *path, char *buf, size_t bufsiz); */ @@ -5201,6 +5243,9 @@ static const struct sys_info sys_info[] SYSBA(creat, True), SYSBA(pipe, False), SYSBA(poll, True), + SYSBA(epoll_create, False), + SYSB_(epoll_ctl, False), + SYSBA(epoll_wait, True), SYSBA(readlink, False), SYSBA(readv, True), SYSB_(rename, False), Index: coregrind/vg_unsafe.h =================================================================== RCS file: /home/kde/valgrind/coregrind/vg_unsafe.h,v retrieving revision 1.23 diff -u -3 -p -r1.23 vg_unsafe.h --- coregrind/vg_unsafe.h 4 Jan 2004 16:43:20 -0000 1.23 +++ coregrind/vg_unsafe.h 31 Jan 2004 23:04:08 -0000 @@ -93,7 +93,6 @@ #include - /*--------------------------------------------------------------------*/ /*--- end vg_unsafe.h ---*/ /*--------------------------------------------------------------------*/ Index: include/vg_kerneliface.h =================================================================== RCS file: /home/kde/valgrind/include/vg_kerneliface.h,v retrieving revision 1.12 diff -u -3 -p -r1.12 vg_kerneliface.h --- include/vg_kerneliface.h 21 Jan 2004 01:27:26 -0000 1.12 +++ include/vg_kerneliface.h 31 Jan 2004 23:04:08 -0000 @@ -509,6 +509,19 @@ struct vki_pollfd { #define VKI_POLLNVAL 0x0020 +/* sys/epoll.h */ +typedef union vki_epoll_data { + void *ptr; + Int fd; + UInt u32; + ULong u64; +} vki_epoll_data_t; + +struct vki_epoll_event { + UInt events; /* Epoll events */ + vki_epoll_data_t data; /* User data variable */ +}; + /* ./include/asm-i386/posix_types.h:typedef long __kernel_suseconds_t;