2 * Test program for some Linux syscalls introduced during 2006 and 2007:
3 * - epoll_pwait() was introduced in the 2.6.19 kernel, released in November
5 * - utimensat(), eventfd(), timerfd() and signalfd() were introduced in the
6 * 2.6.22 kernel, released in July 2007.
8 * See also http://bugs.kde.org/show_bug.cgi?id=160907.
13 #include "../../config.h"
17 #if defined(HAVE_SYS_EPOLL_H)
18 #include <sys/epoll.h>
20 #if defined(HAVE_SYS_EVENTFD_H)
21 #include <sys/eventfd.h>
23 #if defined(HAVE_SYS_POLL_H)
26 #if defined(HAVE_SYS_SIGNALFD_H)
27 #include <sys/signalfd.h>
34 #if defined(HAVE_SIGNALFD) && defined(HAVE_EVENTFD) \
35 && defined(HAVE_EVENTFD_READ) && defined(HAVE_PPOLL)
40 struct timespec ts = { .tv_sec = 1, .tv_nsec = 0 };
44 sigaddset (&mask, SIGUSR1);
45 fd = signalfd (-1, &mask, 0);
46 sigaddset (&mask, SIGUSR2);
47 fd = signalfd (fd, &mask, 0);
49 eventfd_read (fd2, &ev);
51 pfd[0].events = POLLIN|POLLOUT;
53 pfd[1].events = POLLIN|POLLOUT;
54 ppoll (pfd, 2, &ts, &mask);
58 #if defined(HAVE_UTIMENSAT)
59 unlink("/tmp/valgrind-utimensat-test");
60 close (creat ("/tmp/valgrind-utimensat-test", S_IRUSR | S_IWUSR));
62 struct timespec ts2[2] = { [0].tv_sec = 10000000, [1].tv_sec = 20000000 };
63 utimensat (AT_FDCWD, "/tmp/valgrind-utimensat-test", ts2, 0);
65 unlink("/tmp/valgrind-utimensat-test");
68 #if defined(HAVE_EPOLL_CREATE) && defined(HAVE_EPOLL_PWAIT)
71 struct epoll_event evs[10];
75 sigaddset (&mask, SIGUSR1);
76 sigaddset (&mask, SIGUSR2);
77 fd3 = epoll_create (10);
78 epoll_pwait (fd3, evs, 10, 0, &mask);