1 2# Copyright (C) Igor Sysoev 3# Copyright (C) NGINX, Inc. 4 5 6# Linux epoll. 7 8nxt_feature="Linux epoll" 9nxt_feature_name=NXT_HAVE_EPOLL 10nxt_feature_run= 11nxt_feature_incs= 12nxt_feature_libs= 13nxt_feature_test="#include <sys/epoll.h> 14 #include <unistd.h> 15 16 int main(void) { 17 int n; 18 19 n = epoll_create(1); 20 close(n); 21 return 0; 22 }" 23. auto/feature 24 25if [ $nxt_found = yes ]; then 26 NXT_HAVE_EPOLL=YES 27 28 nxt_feature="Linux signalfd()" 29 nxt_feature_name=NXT_HAVE_SIGNALFD 30 nxt_feature_run= 31 nxt_feature_incs= 32 nxt_feature_libs= 33 nxt_feature_test="#include <signal.h> 34 #include <sys/signalfd.h> 35 #include <unistd.h> 36 37 int main(void) { 38 int n; 39 sigset_t mask; 40 41 sigemptyset(&mask); 42 n = signalfd(-1, &mask, 0); 43 close(n); 44 return 0; 45 }" 46 . auto/feature 47 48 49 nxt_feature="Linux eventfd()" 50 nxt_feature_name=NXT_HAVE_EVENTFD 51 nxt_feature_run= 52 nxt_feature_incs= 53 nxt_feature_libs= 54 nxt_feature_test="#include <sys/eventfd.h> 55 #include <unistd.h> 56 57 int main(void) { 58 int n; 59 60 n = eventfd(0, 0); 61 close(n); 62 return 0; 63 }" 64 . auto/feature 65 66else 67 NXT_HAVE_EPOLL=NO 68fi 69 70 71# FreeBSD, MacOSX, NetBSD, OpenBSD kqueue. 72 73nxt_feature="kqueue" 74nxt_feature_name=NXT_HAVE_KQUEUE 75nxt_feature_run= 76nxt_feature_incs= 77nxt_feature_libs= 78nxt_feature_test="#include <sys/types.h> 79 #include <sys/event.h> 80 #include <unistd.h> 81 82 int main(void) { 83 int n; 84 85 n = kqueue(); 86 close(n); 87 return 0; 88 }" 89. auto/feature 90 91if [ $nxt_found = yes ]; then 92 NXT_HAVE_KQUEUE=YES 93 94 nxt_feature="kqueue EVFILT_USER" 95 nxt_feature_name=NXT_HAVE_EVFILT_USER 96 nxt_feature_run= 97 nxt_feature_incs= 98 nxt_feature_libs= 99 nxt_feature_test="#include <stdlib.h> 100 #include <sys/types.h> 101 #include <sys/event.h> 102 103 int main(void) { 104 struct kevent kev; 105 106 kev.filter = EVFILT_USER; 107 kevent(0, &kev, 1, NULL, 0, NULL); 108 return 0; 109 }" 110 . auto/feature 111 112else 113 NXT_HAVE_KQUEUE=NO 114fi 115 116 117# Solaris event port. 118 119nxt_feature="Solaris event port" 120nxt_feature_name=NXT_HAVE_EVENTPORT 121nxt_feature_run= 122nxt_feature_incs= 123nxt_feature_libs= 124nxt_feature_test="#include <port.h> 125 #include <unistd.h> 126 127 int main(void) { 128 int n; 129 130 n = port_create(); 131 close(n); 132 return 0; 133 }" 134. auto/feature 135 136if [ $nxt_found = yes ]; then 137 NXT_HAVE_EVENTPORT=YES 138else 139 NXT_HAVE_EVENTPORT=NO 140fi 141 142 143# Solaris, HP-UX, IRIX, Tru64 UNIX /dev/poll. 144 145nxt_feature="/dev/poll" 146nxt_feature_name=NXT_HAVE_DEVPOLL 147nxt_feature_run=yes 148nxt_feature_incs= 149nxt_feature_libs= 150nxt_feature_test="#include <fcntl.h> 151 #include <sys/ioctl.h> 152 #include <sys/devpoll.h> 153 #include <unistd.h> 154 155 int main(void) { 156 int n; 157 158 n = open(\"/dev/poll\", O_RDWR); 159 close(n); 160 return 0; 161 }" 162. auto/feature 163 164if [ $nxt_found = yes ]; then 165 NXT_HAVE_DEVPOLL=YES 166else 167 NXT_HAVE_DEVPOLL=NO 168fi 169 170 171# AIX pollset. 172 173nxt_feature="AIX pollset" 174nxt_feature_name=NXT_HAVE_POLLSET 175nxt_feature_run=yes 176nxt_feature_incs= 177nxt_feature_libs= 178nxt_feature_test="#include <fcntl.h> 179 #include <sys/poll.h> 180 #include <sys/pollset.h> 181 #include <unistd.h> 182 183 int main(void) { 184 pollset_t n; 185 186 n = pollset_create(-1); 187 pollset_destroy(n); 188 return 0; 189 }" 190. auto/feature 191 192if [ $nxt_found = yes ]; then 193 NXT_HAVE_POLLSET=YES 194else 195 NXT_HAVE_POLLSET=NO 196fi 197