xref: /unit/auto/events (revision 2228:f403dc1e3ec1)
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