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