12799b359SJoakim Söderberginclude(CheckCSourceRuns)
22799b359SJoakim Söderberg
32799b359SJoakim Söderbergcheck_c_source_runs(
42799b359SJoakim Söderberg"
52799b359SJoakim Söderberg#include <sys/types.h>
62799b359SJoakim Söderberg#include <sys/time.h>
72799b359SJoakim Söderberg#include <sys/event.h>
82799b359SJoakim Söderberg#include <stdio.h>
92799b359SJoakim Söderberg#include <unistd.h>
102799b359SJoakim Söderberg#include <fcntl.h>
112799b359SJoakim Söderberg
122799b359SJoakim Söderbergint
132799b359SJoakim Söderbergmain(int argc, char **argv)
142799b359SJoakim Söderberg{
152799b359SJoakim Söderberg    int kq;
162799b359SJoakim Söderberg    int n;
172799b359SJoakim Söderberg    int fd[2];
182799b359SJoakim Söderberg    struct kevent ev;
192799b359SJoakim Söderberg    struct timespec ts;
20*9c720b70SCarlo Marcelo Arenas Belón    char buf[80000];
212799b359SJoakim Söderberg
222799b359SJoakim Söderberg    if (pipe(fd) == -1)
232799b359SJoakim Söderberg        exit(1);
242799b359SJoakim Söderberg    if (fcntl(fd[1], F_SETFL, O_NONBLOCK) == -1)
252799b359SJoakim Söderberg        exit(1);
262799b359SJoakim Söderberg
272799b359SJoakim Söderberg    while ((n = write(fd[1], buf, sizeof(buf))) == sizeof(buf))
282799b359SJoakim Söderberg        ;
292799b359SJoakim Söderberg
302799b359SJoakim Söderberg    if ((kq = kqueue()) == -1)
312799b359SJoakim Söderberg        exit(1);
322799b359SJoakim Söderberg
332799b359SJoakim Söderberg    memset(&ev, 0, sizeof(ev));
342799b359SJoakim Söderberg    ev.ident = fd[1];
352799b359SJoakim Söderberg    ev.filter = EVFILT_WRITE;
362799b359SJoakim Söderberg    ev.flags = EV_ADD | EV_ENABLE;
372799b359SJoakim Söderberg    n = kevent(kq, &ev, 1, NULL, 0, NULL);
382799b359SJoakim Söderberg    if (n == -1)
392799b359SJoakim Söderberg        exit(1);
402799b359SJoakim Söderberg
412799b359SJoakim Söderberg    read(fd[0], buf, sizeof(buf));
422799b359SJoakim Söderberg
432799b359SJoakim Söderberg    ts.tv_sec = 0;
442799b359SJoakim Söderberg    ts.tv_nsec = 0;
452799b359SJoakim Söderberg    n = kevent(kq, NULL, 0, &ev, 1, &ts);
462799b359SJoakim Söderberg    if (n == -1 || n == 0)
472799b359SJoakim Söderberg        exit(1);
482799b359SJoakim Söderberg
492799b359SJoakim Söderberg    exit(0);
502799b359SJoakim Söderberg}
512799b359SJoakim Söderberg
522799b359SJoakim Söderberg" EVENT__HAVE_WORKING_KQUEUE)
53