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