annotate auto/os/linux @ 6635:6acaa638fa07

Events: support for EPOLLEXCLUSIVE. This flag appeared in Linux 4.5 and is useful for avoiding thundering herd problem. The current Linux kernel implementation walks the list of exclusive waiters, and queues an event to each epfd, until it finds the first waiter that has threads blocked on it via epoll_wait().
author Valentin Bartenev <vbart@nginx.com>
date Fri, 15 Jul 2016 15:18:57 +0300
parents e393c0bf53d3
children c1524829af3d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
1
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 4002
diff changeset
3 # Copyright (C) Nginx, Inc.
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
4
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
6 have=NGX_LINUX . auto/have_headers
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
7
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 CORE_INCS="$UNIX_INCS"
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
10 CORE_SRCS="$UNIX_SRCS $LINUX_SRCS"
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
12 ngx_spacer='
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
13 '
283
8f65fee68270 nginx-0.0.2-2004-03-10-20:55:19 import
Igor Sysoev <igor@sysoev.ru>
parents: 259
diff changeset
14
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
15 cc_aux_flags="$CC_AUX_FLAGS"
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
16 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
18
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
19 # Linux kernel version
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
20
1927
220c2515a9c9 use uname instead of often outdated header file
Igor Sysoev <igor@sysoev.ru>
parents: 1926
diff changeset
21 version=$((`uname -r \
4002
4068898a6a7c Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents: 3286
diff changeset
22 | sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \
4068898a6a7c Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents: 3286
diff changeset
23 \1*256*256+\2*256+\3/p' \
4068898a6a7c Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents: 3286
diff changeset
24 -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`))
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
25
477
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
26 version=${version:-0}
ad1e9ebf93bb nginx-0.1.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
27
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 298
diff changeset
28
3286
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
29 # posix_fadvise64() had been implemented in 2.5.60
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
30
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
31 if [ $version -lt 132412 ]; then
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
32 have=NGX_HAVE_POSIX_FADVISE . auto/nohave
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
33 fi
7c80f584c3a9 posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents: 3039
diff changeset
34
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
35 # epoll, EPOLLET version
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
36
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
37 ngx_feature="epoll"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
38 ngx_feature_name="NGX_HAVE_EPOLL"
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
39 ngx_feature_run=yes
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
40 ngx_feature_incs="#include <sys/epoll.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
41 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
42 ngx_feature_libs=
4543
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
43 ngx_feature_test="int efd = 0;
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
44 struct epoll_event ee;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
45 ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
46 ee.data.ptr = NULL;
6622
e393c0bf53d3 Configure: fix build with -Werror=unused-but-set-variable.
Piotr Sikora <piotrsikora@google.com>
parents: 6126
diff changeset
47 (void) ee;
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
48 efd = epoll_create(100);
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
49 if (efd == -1) return 1;"
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
50 . auto/feature
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
51
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
52 if [ $ngx_found = yes ]; then
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
53 have=NGX_HAVE_CLEAR_EVENT . auto/have
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
54 CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
55 EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
56 EVENT_FOUND=YES
5372
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
57
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
58
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
59 # EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
60
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
61 ngx_feature="EPOLLRDHUP"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
62 ngx_feature_name="NGX_HAVE_EPOLLRDHUP"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
63 ngx_feature_run=no
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
64 ngx_feature_incs="#include <sys/epoll.h>"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
65 ngx_feature_path=
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
66 ngx_feature_libs=
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
67 ngx_feature_test="int efd = 0, fd = 0;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
68 struct epoll_event ee;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
69 ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
70 ee.data.ptr = NULL;
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
71 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
36b58ddb566d Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents: 5356
diff changeset
72 . auto/feature
6635
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
73
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
74
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
75 # EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
76
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
77 ngx_feature="EPOLLEXCLUSIVE"
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
78 ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE"
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
79 ngx_feature_run=no
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
80 ngx_feature_incs="#include <sys/epoll.h>"
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
81 ngx_feature_path=
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
82 ngx_feature_libs=
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
83 ngx_feature_test="int efd = 0, fd = 0;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
84 struct epoll_event ee;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
85 ee.events = EPOLLIN|EPOLLEXCLUSIVE;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
86 ee.data.ptr = NULL;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
87 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)"
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6622
diff changeset
88 . auto/feature
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
89 fi
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
90
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 198
diff changeset
91
5356
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
92 # O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
93
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
94 ngx_feature="O_PATH"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
95 ngx_feature_name="NGX_HAVE_O_PATH"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
96 ngx_feature_run=no
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
97 ngx_feature_incs="#include <sys/types.h>
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
98 #include <sys/stat.h>
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
99 #include <fcntl.h>"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
100 ngx_feature_path=
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
101 ngx_feature_libs=
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
102 ngx_feature_test="int fd; struct stat sb;
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
103 fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW);
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
104 if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1"
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
105 . auto/feature
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
106
acd51b0f6fd4 Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents: 4549
diff changeset
107
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
108 # sendfile()
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
109
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
110 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
111 ngx_feature="sendfile()"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
112 ngx_feature_name="NGX_HAVE_SENDFILE"
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
113 ngx_feature_run=yes
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
114 ngx_feature_incs="#include <sys/sendfile.h>
2598
87e739049e93 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1927
diff changeset
115 #include <errno.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
116 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
117 ngx_feature_libs=
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
118 ngx_feature_test="int s = 0, fd = 1;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
119 ssize_t n; off_t off = 0;
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
120 n = sendfile(s, fd, &off, 1);
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
121 if (n == -1 && errno == ENOSYS) return 1"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
122 . auto/feature
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
123
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
124 if [ $ngx_found = yes ]; then
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
125 CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
126 fi
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
127
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
128
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
129 # sendfile64()
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
130
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
131 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
132 ngx_feature="sendfile64()"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
133 ngx_feature_name="NGX_HAVE_SENDFILE64"
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
134 ngx_feature_run=yes
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
135 ngx_feature_incs="#include <sys/sendfile.h>
2598
87e739049e93 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1927
diff changeset
136 #include <errno.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
137 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
138 ngx_feature_libs=
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
139 ngx_feature_test="int s = 0, fd = 1;
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
140 ssize_t n; off_t off = 0;
591
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
141 n = sendfile(s, fd, &off, 1);
8c0cdd81580e nginx-0.3.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
142 if (n == -1 && errno == ENOSYS) return 1"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
143 . auto/feature
196
11fbd0fc041d nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
144
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
145
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
146 ngx_include="sys/prctl.h"; . auto/include
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
147
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
148 # prctl(PR_SET_DUMPABLE)
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
149
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
150 ngx_feature="prctl(PR_SET_DUMPABLE)"
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
151 ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
152 ngx_feature_run=yes
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
153 ngx_feature_incs="#include <sys/prctl.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
154 ngx_feature_path=
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
155 ngx_feature_libs=
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
156 ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1"
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
157 . auto/feature
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
158
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
159
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
160 # sched_setaffinity()
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
161
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
162 ngx_feature="sched_setaffinity()"
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
163 ngx_feature_name="NGX_HAVE_SCHED_SETAFFINITY"
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
164 ngx_feature_run=no
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
165 ngx_feature_incs="#include <sched.h>"
875
7af8276b1c2f test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents: 629
diff changeset
166 ngx_feature_path=
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
167 ngx_feature_libs=
4549
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4543
diff changeset
168 ngx_feature_test="cpu_set_t mask;
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4543
diff changeset
169 CPU_ZERO(&mask);
f31162fefe01 worker_cpu_affinity: cleaned up Linux implementation, added FreeBSD support.
Ruslan Ermilov <ru@nginx.com>
parents: 4543
diff changeset
170 sched_setaffinity(0, sizeof(cpu_set_t), &mask)"
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
171 . auto/feature
2599
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
172
57b65bcc8da6 fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents: 2598
diff changeset
173
2660
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
174 # crypt_r()
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
175
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
176 ngx_feature="crypt_r()"
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
177 ngx_feature_name="NGX_HAVE_GNU_CRYPT_R"
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
178 ngx_feature_run=no
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
179 ngx_feature_incs="#include <crypt.h>"
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
180 ngx_feature_path=
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
181 ngx_feature_libs=-lcrypt
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
182 ngx_feature_test="struct crypt_data cd;
4543
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
183 crypt_r(\"key\", \"salt\", &cd);"
2660
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
184 . auto/feature
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
185
2ca36a62c8a1 autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents: 2615
diff changeset
186
2615
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2599
diff changeset
187 ngx_include="sys/vfs.h"; . auto/include
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2599
diff changeset
188
ceef364208c8 ngx_fs_bsize()
Igor Sysoev <igor@sysoev.ru>
parents: 2599
diff changeset
189
2747
ee5de4f120f4 fix GNU strerror_r() detection, the bug has been inroduced in r2600
Igor Sysoev <igor@sysoev.ru>
parents: 2660
diff changeset
190 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"