10Sigor@sysoev.ru 20Sigor@sysoev.ru# Copyright (C) Igor Sysoev 30Sigor@sysoev.ru# Copyright (C) NGINX, Inc. 40Sigor@sysoev.ru 50Sigor@sysoev.ru 60Sigor@sysoev.ru# Linux epoll. 70Sigor@sysoev.ru 80Sigor@sysoev.runxt_feature="Linux epoll" 90Sigor@sysoev.runxt_feature_name=NXT_HAVE_EPOLL 100Sigor@sysoev.runxt_feature_run= 110Sigor@sysoev.runxt_feature_incs= 120Sigor@sysoev.runxt_feature_libs= 130Sigor@sysoev.runxt_feature_test="#include <sys/epoll.h> 140Sigor@sysoev.ru #include <unistd.h> 150Sigor@sysoev.ru 16*2228Sa.clayton@nginx.com int main(void) { 170Sigor@sysoev.ru int n; 180Sigor@sysoev.ru 190Sigor@sysoev.ru n = epoll_create(1); 200Sigor@sysoev.ru close(n); 210Sigor@sysoev.ru return 0; 220Sigor@sysoev.ru }" 230Sigor@sysoev.ru. auto/feature 240Sigor@sysoev.ru 250Sigor@sysoev.ruif [ $nxt_found = yes ]; then 260Sigor@sysoev.ru NXT_HAVE_EPOLL=YES 270Sigor@sysoev.ru 280Sigor@sysoev.ru nxt_feature="Linux signalfd()" 290Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_SIGNALFD 300Sigor@sysoev.ru nxt_feature_run= 310Sigor@sysoev.ru nxt_feature_incs= 320Sigor@sysoev.ru nxt_feature_libs= 330Sigor@sysoev.ru nxt_feature_test="#include <signal.h> 340Sigor@sysoev.ru #include <sys/signalfd.h> 350Sigor@sysoev.ru #include <unistd.h> 360Sigor@sysoev.ru 37*2228Sa.clayton@nginx.com int main(void) { 380Sigor@sysoev.ru int n; 390Sigor@sysoev.ru sigset_t mask; 400Sigor@sysoev.ru 410Sigor@sysoev.ru sigemptyset(&mask); 420Sigor@sysoev.ru n = signalfd(-1, &mask, 0); 430Sigor@sysoev.ru close(n); 440Sigor@sysoev.ru return 0; 450Sigor@sysoev.ru }" 460Sigor@sysoev.ru . auto/feature 470Sigor@sysoev.ru 480Sigor@sysoev.ru 490Sigor@sysoev.ru nxt_feature="Linux eventfd()" 500Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_EVENTFD 510Sigor@sysoev.ru nxt_feature_run= 520Sigor@sysoev.ru nxt_feature_incs= 530Sigor@sysoev.ru nxt_feature_libs= 540Sigor@sysoev.ru nxt_feature_test="#include <sys/eventfd.h> 550Sigor@sysoev.ru #include <unistd.h> 560Sigor@sysoev.ru 57*2228Sa.clayton@nginx.com int main(void) { 580Sigor@sysoev.ru int n; 590Sigor@sysoev.ru 600Sigor@sysoev.ru n = eventfd(0, 0); 610Sigor@sysoev.ru close(n); 620Sigor@sysoev.ru return 0; 630Sigor@sysoev.ru }" 640Sigor@sysoev.ru . auto/feature 650Sigor@sysoev.ru 660Sigor@sysoev.ruelse 670Sigor@sysoev.ru NXT_HAVE_EPOLL=NO 680Sigor@sysoev.rufi 690Sigor@sysoev.ru 700Sigor@sysoev.ru 710Sigor@sysoev.ru# FreeBSD, MacOSX, NetBSD, OpenBSD kqueue. 720Sigor@sysoev.ru 730Sigor@sysoev.runxt_feature="kqueue" 740Sigor@sysoev.runxt_feature_name=NXT_HAVE_KQUEUE 750Sigor@sysoev.runxt_feature_run= 760Sigor@sysoev.runxt_feature_incs= 770Sigor@sysoev.runxt_feature_libs= 780Sigor@sysoev.runxt_feature_test="#include <sys/types.h> 790Sigor@sysoev.ru #include <sys/event.h> 800Sigor@sysoev.ru #include <unistd.h> 810Sigor@sysoev.ru 82*2228Sa.clayton@nginx.com int main(void) { 830Sigor@sysoev.ru int n; 840Sigor@sysoev.ru 850Sigor@sysoev.ru n = kqueue(); 860Sigor@sysoev.ru close(n); 870Sigor@sysoev.ru return 0; 880Sigor@sysoev.ru }" 890Sigor@sysoev.ru. auto/feature 900Sigor@sysoev.ru 910Sigor@sysoev.ruif [ $nxt_found = yes ]; then 920Sigor@sysoev.ru NXT_HAVE_KQUEUE=YES 930Sigor@sysoev.ru 940Sigor@sysoev.ru nxt_feature="kqueue EVFILT_USER" 950Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_EVFILT_USER 960Sigor@sysoev.ru nxt_feature_run= 970Sigor@sysoev.ru nxt_feature_incs= 980Sigor@sysoev.ru nxt_feature_libs= 990Sigor@sysoev.ru nxt_feature_test="#include <stdlib.h> 1000Sigor@sysoev.ru #include <sys/types.h> 1010Sigor@sysoev.ru #include <sys/event.h> 1020Sigor@sysoev.ru 103*2228Sa.clayton@nginx.com int main(void) { 1040Sigor@sysoev.ru struct kevent kev; 1050Sigor@sysoev.ru 1060Sigor@sysoev.ru kev.filter = EVFILT_USER; 1070Sigor@sysoev.ru kevent(0, &kev, 1, NULL, 0, NULL); 1080Sigor@sysoev.ru return 0; 1090Sigor@sysoev.ru }" 1100Sigor@sysoev.ru . auto/feature 1110Sigor@sysoev.ru 1120Sigor@sysoev.ruelse 1130Sigor@sysoev.ru NXT_HAVE_KQUEUE=NO 1140Sigor@sysoev.rufi 1150Sigor@sysoev.ru 1160Sigor@sysoev.ru 1170Sigor@sysoev.ru# Solaris event port. 1180Sigor@sysoev.ru 1190Sigor@sysoev.runxt_feature="Solaris event port" 1200Sigor@sysoev.runxt_feature_name=NXT_HAVE_EVENTPORT 1210Sigor@sysoev.runxt_feature_run= 1220Sigor@sysoev.runxt_feature_incs= 1230Sigor@sysoev.runxt_feature_libs= 1240Sigor@sysoev.runxt_feature_test="#include <port.h> 1250Sigor@sysoev.ru #include <unistd.h> 1260Sigor@sysoev.ru 127*2228Sa.clayton@nginx.com int main(void) { 1280Sigor@sysoev.ru int n; 1290Sigor@sysoev.ru 1300Sigor@sysoev.ru n = port_create(); 1310Sigor@sysoev.ru close(n); 1320Sigor@sysoev.ru return 0; 1330Sigor@sysoev.ru }" 1340Sigor@sysoev.ru. auto/feature 1350Sigor@sysoev.ru 1360Sigor@sysoev.ruif [ $nxt_found = yes ]; then 1370Sigor@sysoev.ru NXT_HAVE_EVENTPORT=YES 1380Sigor@sysoev.ruelse 1390Sigor@sysoev.ru NXT_HAVE_EVENTPORT=NO 1400Sigor@sysoev.rufi 1410Sigor@sysoev.ru 1420Sigor@sysoev.ru 1430Sigor@sysoev.ru# Solaris, HP-UX, IRIX, Tru64 UNIX /dev/poll. 1440Sigor@sysoev.ru 1450Sigor@sysoev.runxt_feature="/dev/poll" 1460Sigor@sysoev.runxt_feature_name=NXT_HAVE_DEVPOLL 1470Sigor@sysoev.runxt_feature_run=yes 1480Sigor@sysoev.runxt_feature_incs= 1490Sigor@sysoev.runxt_feature_libs= 1500Sigor@sysoev.runxt_feature_test="#include <fcntl.h> 1510Sigor@sysoev.ru #include <sys/ioctl.h> 1520Sigor@sysoev.ru #include <sys/devpoll.h> 1530Sigor@sysoev.ru #include <unistd.h> 1540Sigor@sysoev.ru 155*2228Sa.clayton@nginx.com int main(void) { 1560Sigor@sysoev.ru int n; 1570Sigor@sysoev.ru 1580Sigor@sysoev.ru n = open(\"/dev/poll\", O_RDWR); 1590Sigor@sysoev.ru close(n); 1600Sigor@sysoev.ru return 0; 1610Sigor@sysoev.ru }" 1620Sigor@sysoev.ru. auto/feature 1630Sigor@sysoev.ru 1640Sigor@sysoev.ruif [ $nxt_found = yes ]; then 1650Sigor@sysoev.ru NXT_HAVE_DEVPOLL=YES 1660Sigor@sysoev.ruelse 1670Sigor@sysoev.ru NXT_HAVE_DEVPOLL=NO 1680Sigor@sysoev.rufi 1690Sigor@sysoev.ru 1700Sigor@sysoev.ru 1710Sigor@sysoev.ru# AIX pollset. 1720Sigor@sysoev.ru 1730Sigor@sysoev.runxt_feature="AIX pollset" 1740Sigor@sysoev.runxt_feature_name=NXT_HAVE_POLLSET 1750Sigor@sysoev.runxt_feature_run=yes 1760Sigor@sysoev.runxt_feature_incs= 1770Sigor@sysoev.runxt_feature_libs= 1780Sigor@sysoev.runxt_feature_test="#include <fcntl.h> 1790Sigor@sysoev.ru #include <sys/poll.h> 1800Sigor@sysoev.ru #include <sys/pollset.h> 1810Sigor@sysoev.ru #include <unistd.h> 1820Sigor@sysoev.ru 183*2228Sa.clayton@nginx.com int main(void) { 1840Sigor@sysoev.ru pollset_t n; 1850Sigor@sysoev.ru 1860Sigor@sysoev.ru n = pollset_create(-1); 1870Sigor@sysoev.ru pollset_destroy(n); 1880Sigor@sysoev.ru return 0; 1890Sigor@sysoev.ru }" 1900Sigor@sysoev.ru. auto/feature 1910Sigor@sysoev.ru 1920Sigor@sysoev.ruif [ $nxt_found = yes ]; then 1930Sigor@sysoev.ru NXT_HAVE_POLLSET=YES 1940Sigor@sysoev.ruelse 1950Sigor@sysoev.ru NXT_HAVE_POLLSET=NO 1960Sigor@sysoev.rufi 197