1*4ebd34fbSCy Schubertinclude(CheckCSourceRuns)
2*4ebd34fbSCy Schubert
3*4ebd34fbSCy Schubertcheck_c_source_runs(
4*4ebd34fbSCy Schubert"
5*4ebd34fbSCy Schubert#include <sys/types.h>
6*4ebd34fbSCy Schubert#include <sys/time.h>
7*4ebd34fbSCy Schubert#include <sys/event.h>
8*4ebd34fbSCy Schubert#include <stdio.h>
9*4ebd34fbSCy Schubert#include <unistd.h>
10*4ebd34fbSCy Schubert#include <fcntl.h>
11*4ebd34fbSCy Schubert
12*4ebd34fbSCy Schubertint
13*4ebd34fbSCy Schubertmain(int argc, char **argv)
14*4ebd34fbSCy Schubert{
15*4ebd34fbSCy Schubert    int kq;
16*4ebd34fbSCy Schubert    int n;
17*4ebd34fbSCy Schubert    int fd[2];
18*4ebd34fbSCy Schubert    struct kevent ev;
19*4ebd34fbSCy Schubert    struct timespec ts;
20*4ebd34fbSCy Schubert    char buf[80000];
21*4ebd34fbSCy Schubert
22*4ebd34fbSCy Schubert    if (pipe(fd) == -1)
23*4ebd34fbSCy Schubert        exit(1);
24*4ebd34fbSCy Schubert    if (fcntl(fd[1], F_SETFL, O_NONBLOCK) == -1)
25*4ebd34fbSCy Schubert        exit(1);
26*4ebd34fbSCy Schubert
27*4ebd34fbSCy Schubert    while ((n = write(fd[1], buf, sizeof(buf))) == sizeof(buf))
28*4ebd34fbSCy Schubert        ;
29*4ebd34fbSCy Schubert
30*4ebd34fbSCy Schubert    if ((kq = kqueue()) == -1)
31*4ebd34fbSCy Schubert        exit(1);
32*4ebd34fbSCy Schubert
33*4ebd34fbSCy Schubert    memset(&ev, 0, sizeof(ev));
34*4ebd34fbSCy Schubert    ev.ident = fd[1];
35*4ebd34fbSCy Schubert    ev.filter = EVFILT_WRITE;
36*4ebd34fbSCy Schubert    ev.flags = EV_ADD | EV_ENABLE;
37*4ebd34fbSCy Schubert    n = kevent(kq, &ev, 1, NULL, 0, NULL);
38*4ebd34fbSCy Schubert    if (n == -1)
39*4ebd34fbSCy Schubert        exit(1);
40*4ebd34fbSCy Schubert
41*4ebd34fbSCy Schubert    read(fd[0], buf, sizeof(buf));
42*4ebd34fbSCy Schubert
43*4ebd34fbSCy Schubert    ts.tv_sec = 0;
44*4ebd34fbSCy Schubert    ts.tv_nsec = 0;
45*4ebd34fbSCy Schubert    n = kevent(kq, NULL, 0, &ev, 1, &ts);
46*4ebd34fbSCy Schubert    if (n == -1 || n == 0)
47*4ebd34fbSCy Schubert        exit(1);
48*4ebd34fbSCy Schubert
49*4ebd34fbSCy Schubert    exit(0);
50*4ebd34fbSCy Schubert}
51*4ebd34fbSCy Schubert
52*4ebd34fbSCy Schubert" EVENT__HAVE_WORKING_KQUEUE)
53