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