126fd3d56SCy Schubertinclude(CheckCSourceRuns) 226fd3d56SCy Schubert 326fd3d56SCy Schubertcheck_c_source_runs( 426fd3d56SCy Schubert" 526fd3d56SCy Schubert#include <sys/types.h> 626fd3d56SCy Schubert#include <sys/time.h> 726fd3d56SCy Schubert#include <sys/event.h> 826fd3d56SCy Schubert#include <stdio.h> 926fd3d56SCy Schubert#include <unistd.h> 1026fd3d56SCy Schubert#include <fcntl.h> 1126fd3d56SCy Schubert 1226fd3d56SCy Schubertint 1326fd3d56SCy Schubertmain(int argc, char **argv) 1426fd3d56SCy Schubert{ 1526fd3d56SCy Schubert int kq; 1626fd3d56SCy Schubert int n; 1726fd3d56SCy Schubert int fd[2]; 1826fd3d56SCy Schubert struct kevent ev; 1926fd3d56SCy Schubert struct timespec ts; 2026fd3d56SCy Schubert char buf[80000]; 2126fd3d56SCy Schubert 2226fd3d56SCy Schubert if (pipe(fd) == -1) 2326fd3d56SCy Schubert exit(1); 2426fd3d56SCy Schubert if (fcntl(fd[1], F_SETFL, O_NONBLOCK) == -1) 2526fd3d56SCy Schubert exit(1); 2626fd3d56SCy Schubert 2726fd3d56SCy Schubert while ((n = write(fd[1], buf, sizeof(buf))) == sizeof(buf)) 2826fd3d56SCy Schubert ; 2926fd3d56SCy Schubert 3026fd3d56SCy Schubert if ((kq = kqueue()) == -1) 3126fd3d56SCy Schubert exit(1); 3226fd3d56SCy Schubert 3326fd3d56SCy Schubert memset(&ev, 0, sizeof(ev)); 3426fd3d56SCy Schubert ev.ident = fd[1]; 3526fd3d56SCy Schubert ev.filter = EVFILT_WRITE; 3626fd3d56SCy Schubert ev.flags = EV_ADD | EV_ENABLE; 3726fd3d56SCy Schubert n = kevent(kq, &ev, 1, NULL, 0, NULL); 3826fd3d56SCy Schubert if (n == -1) 3926fd3d56SCy Schubert exit(1); 4026fd3d56SCy Schubert 4126fd3d56SCy Schubert read(fd[0], buf, sizeof(buf)); 4226fd3d56SCy Schubert 4326fd3d56SCy Schubert ts.tv_sec = 0; 4426fd3d56SCy Schubert ts.tv_nsec = 0; 4526fd3d56SCy Schubert n = kevent(kq, NULL, 0, &ev, 1, &ts); 4626fd3d56SCy Schubert if (n == -1 || n == 0) 4726fd3d56SCy Schubert exit(1); 4826fd3d56SCy Schubert 4926fd3d56SCy Schubert exit(0); 5026fd3d56SCy Schubert} 5126fd3d56SCy Schubert 5226fd3d56SCy Schubert" EVENT__HAVE_WORKING_KQUEUE) 53