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