annotate src/os/unix/ngx_linux_init.c @ 391:1d9bef53cd8e

Range filter: late_ranges functionality. Add one more filtering point after postpone filter. This allows to serve range capable replies with subrequests. It's not as efficient as range filtering for static data (i.e. doesn't save us from reading data from disk if some filter needs them in memory), but it may save some network bandwidth for us and for our users.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 21 Jul 2008 05:33:01 +0400
parents babd3d9efb62
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
1
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
2 /*
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
4 */
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
5
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
6
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
7 #include <ngx_config.h>
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
8 #include <ngx_core.h>
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
9
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
10
344
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
11 u_char ngx_linux_kern_ostype[50];
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
12 u_char ngx_linux_kern_osrelease[50];
222
dd6c66b5b0e2 nginx 0.3.58
Igor Sysoev <http://sysoev.ru>
parents: 88
diff changeset
13
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
14 int ngx_linux_rtsig_max;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
15
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
16
88
e916a291e9aa nginx 0.1.44
Igor Sysoev <http://sysoev.ru>
parents: 80
diff changeset
17 static ngx_os_io_t ngx_linux_io = {
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
18 ngx_unix_recv,
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
19 ngx_readv_chain,
354
583decdb82a4 nginx 0.6.21
Igor Sysoev <http://sysoev.ru>
parents: 344
diff changeset
20 ngx_udp_unix_recv,
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
21 ngx_unix_send,
18
6f8b0dc0f8dd nginx 0.1.9
Igor Sysoev <http://sysoev.ru>
parents: 16
diff changeset
22 #if (NGX_HAVE_SENDFILE)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
23 ngx_linux_sendfile_chain,
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
24 NGX_IO_SENDFILE
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
25 #else
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
26 ngx_writev_chain,
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
27 0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
28 #endif
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
29 };
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
30
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
31
42
41ccba1aba45 nginx 0.1.21
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
32 ngx_int_t
88
e916a291e9aa nginx 0.1.44
Igor Sysoev <http://sysoev.ru>
parents: 80
diff changeset
33 ngx_os_specific_init(ngx_log_t *log)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
34 {
344
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
35 struct utsname u;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
36
344
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
37 if (uname(&u) == -1) {
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
38 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "uname() failed");
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
39 return NGX_ERROR;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
40 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
41
344
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
42 (void) ngx_cpystrn(ngx_linux_kern_ostype, (u_char *) u.sysname,
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
43 sizeof(ngx_linux_kern_ostype));
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
44
344
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
45 (void) ngx_cpystrn(ngx_linux_kern_osrelease, (u_char *) u.release,
eae74a780a84 nginx 0.6.16
Igor Sysoev <http://sysoev.ru>
parents: 272
diff changeset
46 sizeof(ngx_linux_kern_osrelease));
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
47
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
48 #if (NGX_HAVE_RTSIG)
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
49 {
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
50 int name[2];
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
51 size_t len;
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
52 ngx_err_t err;
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
53
222
dd6c66b5b0e2 nginx 0.3.58
Igor Sysoev <http://sysoev.ru>
parents: 88
diff changeset
54 name[0] = CTL_KERN;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
55 name[1] = KERN_RTSIGMAX;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
56 len = sizeof(ngx_linux_rtsig_max);
42
41ccba1aba45 nginx 0.1.21
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
57
41ccba1aba45 nginx 0.1.21
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
58 if (sysctl(name, 2, &ngx_linux_rtsig_max, &len, NULL, 0) == -1) {
16
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
59 err = ngx_errno;
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
60
222
dd6c66b5b0e2 nginx 0.3.58
Igor Sysoev <http://sysoev.ru>
parents: 88
diff changeset
61 if (err != NGX_ENOTDIR && err != NGX_ENOSYS) {
16
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
62 ngx_log_error(NGX_LOG_ALERT, log, err,
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
63 "sysctl(KERN_RTSIGMAX) failed");
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
64
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
65 return NGX_ERROR;
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
66 }
74b1868dd3cd nginx 0.1.8
Igor Sysoev <http://sysoev.ru>
parents: 2
diff changeset
67
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
68 ngx_linux_rtsig_max = 0;
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
69 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
70
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
71 }
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
72 #endif
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
73
88
e916a291e9aa nginx 0.1.44
Igor Sysoev <http://sysoev.ru>
parents: 80
diff changeset
74 ngx_os_io = ngx_linux_io;
e916a291e9aa nginx 0.1.44
Igor Sysoev <http://sysoev.ru>
parents: 80
diff changeset
75
e916a291e9aa nginx 0.1.44
Igor Sysoev <http://sysoev.ru>
parents: 80
diff changeset
76 return NGX_OK;
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
77 }
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
78
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
79
42
41ccba1aba45 nginx 0.1.21
Igor Sysoev <http://sysoev.ru>
parents: 18
diff changeset
80 void
88
e916a291e9aa nginx 0.1.44
Igor Sysoev <http://sysoev.ru>
parents: 80
diff changeset
81 ngx_os_specific_status(ngx_log_t *log)
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
82 {
80
6ae11d59d10e nginx 0.1.40
Igor Sysoev <http://sysoev.ru>
parents: 58
diff changeset
83 ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s",
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
84 ngx_linux_kern_ostype, ngx_linux_kern_osrelease);
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
85
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
86 #if (NGX_HAVE_RTSIG)
80
6ae11d59d10e nginx 0.1.40
Igor Sysoev <http://sysoev.ru>
parents: 58
diff changeset
87 ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d",
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
88 ngx_linux_rtsig_max);
366
babd3d9efb62 nginx 0.6.27
Igor Sysoev <http://sysoev.ru>
parents: 354
diff changeset
89 #endif
0
f0b350454894 nginx 0.1.0
Igor Sysoev <http://sysoev.ru>
parents:
diff changeset
90 }