|
From: Julian S. <js...@ac...> - 2008-06-03 10:51:41
|
3.3.1 (and the trunk) add support for a number of new syscalls: epoll_pwait eventfd timerfd_create timerfd_gettime timerfd_settime sync_file_range signalfd utimensat (I thought there were more, but I generated this list by diffing a 3.3.0 tree against the 3.3.1.RC1 tree. Shout if I missed any.) Of these, only PRE(sys_epoll_pwait) has the line "*flags |= SfMayBlock;", which directs valgrind to run the syscall in such a way that other threads can proceed if the syscall blocks. None of the other wrappers have this. So there is a chance (unlikely, but possible) that threaded programs using the others could hang, in the case where a thread does a syscall, and it blocks until some other thread runs. So my question is: which of these syscalls should get an SfMayBlock annotation? What I have so far is: epoll_pwait -- already has it eventfd -- probably OK without timerfd_create -- can't find any docs (no man page on Fedora 9) timerfd_gettime -- can't find any docs (no man page on Fedora 9) timerfd_settime -- can't find any docs (no man page on Fedora 9) sync_file_range -- requires SfMayBlock signalfd -- probably OK without utimensat -- can't find any docs (no man page on Fedora 9) Technically sync_file_range doesn't really require it, since it can presumably always complete without any activity from any other thread. But requiring this could cause pointless arbitrary delays, so it seems best to add it. All the other sync-style wrappers have it. Anybody know anything about utimensat and timerfd_* ? J |