annotate auto/types/uintptr_t @ 6536:f7849bfb6d21

Improved EPOLLRDHUP handling. When it's known that the kernel supports EPOLLRDHUP, there is no need in additional recv() call to get EOF or error when the flag is absent in the event generated by the kernel. A special runtime test is done at startup to detect if EPOLLRDHUP is actually supported by the kernel because epoll_ctl() silently ignores unknown flags. With this knowledge it's now possible to drop the "ready" flag for partial read. Previously, the "ready" flag was kept until the recv() returned EOF or error. In particular, this change allows the lingering close heuristics (which relies on the "ready" flag state) to actually work on Linux, and not wait for more data in most cases. The "available" flag is now used in the read event with the semantics similar to the corresponding counter in kqueue.
author Valentin Bartenev <vbart@nginx.com>
date Fri, 13 May 2016 17:19:23 +0300
parents 7ec809b579d7
children e3faa5fb7772
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: 370
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: 370
diff changeset
2 # Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 1354
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: 370
diff changeset
4
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
6 echo $ngx_n "checking for uintptr_t ...$ngx_c"
6269
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
7
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
8 cat << END >> $NGX_AUTOCONF_ERR
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
9
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
10 ----------------------------------------
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
11 checking for uintptr_t
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
12
7ec809b579d7 Configure: style fixes for autoconf.err.
Piotr Sikora <piotrsikora@google.com>
parents: 5309
diff changeset
13 END
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
15 found=no
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
16
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
17 cat << END > $NGX_AUTOTEST.c
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
18
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
19 #include <sys/types.h>
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
20 $NGX_INTTYPES_H
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
22 int main() {
4559
62d8db8c7157 Fixed more gcc46 warnings in configure tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4543
diff changeset
23 uintptr_t i = 0;
62d8db8c7157 Fixed more gcc46 warnings in configure tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4543
diff changeset
24 return (int) i;
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
25 }
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
27 END
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28
4543
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
29 ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
30 -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT"
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
31
51744fa997c7 Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
32 eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
33
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
34 if [ -x $NGX_AUTOTEST ]; then
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
35 echo " uintptr_t found"
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
36 found=yes
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 193
diff changeset
37 else
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 210
diff changeset
38 echo $ngx_n " uintptr_t not found" $ngx_c
195
8dee38ea9117 nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents: 193
diff changeset
39 fi
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
40
5309
434548349838 Configure: fixed autotest cleanup commands.
Sergey Kandaurov <pluknet@nginx.com>
parents: 4559
diff changeset
41 rm -rf $NGX_AUTOTEST*
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
42
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
44 if [ $found = no ]; then
370
54f76b0b8dca nginx-0.0.7-2004-06-27-22:01:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 250
diff changeset
45 found="uint`expr 8 \* $ngx_ptr_size`_t"
210
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
46 echo ", $found used"
00cafae0bdf1 nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents: 196
diff changeset
47
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
48 echo "typedef $found uintptr_t;" >> $NGX_AUTO_CONFIG_H
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
49 echo "typedef $found intptr_t;" | sed -e 's/u//g' >> $NGX_AUTO_CONFIG_H
192
31824be1fc66 nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
50 fi