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