0
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
660
|
4 * Copyright (C) Nginx, Inc.
|
0
|
5 */
|
|
6
|
|
7
|
|
8 #include <ngx_config.h>
|
|
9 #include <ngx_core.h>
|
|
10
|
|
11
|
344
|
12 u_char ngx_linux_kern_ostype[50];
|
|
13 u_char ngx_linux_kern_osrelease[50];
|
222
|
14
|
366
|
15 int ngx_linux_rtsig_max;
|
0
|
16
|
|
17
|
88
|
18 static ngx_os_io_t ngx_linux_io = {
|
0
|
19 ngx_unix_recv,
|
|
20 ngx_readv_chain,
|
354
|
21 ngx_udp_unix_recv,
|
0
|
22 ngx_unix_send,
|
18
|
23 #if (NGX_HAVE_SENDFILE)
|
0
|
24 ngx_linux_sendfile_chain,
|
|
25 NGX_IO_SENDFILE
|
|
26 #else
|
|
27 ngx_writev_chain,
|
|
28 0
|
|
29 #endif
|
|
30 };
|
|
31
|
|
32
|
42
|
33 ngx_int_t
|
88
|
34 ngx_os_specific_init(ngx_log_t *log)
|
0
|
35 {
|
344
|
36 struct utsname u;
|
0
|
37
|
344
|
38 if (uname(&u) == -1) {
|
|
39 ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "uname() failed");
|
0
|
40 return NGX_ERROR;
|
|
41 }
|
|
42
|
344
|
43 (void) ngx_cpystrn(ngx_linux_kern_ostype, (u_char *) u.sysname,
|
|
44 sizeof(ngx_linux_kern_ostype));
|
0
|
45
|
344
|
46 (void) ngx_cpystrn(ngx_linux_kern_osrelease, (u_char *) u.release,
|
|
47 sizeof(ngx_linux_kern_osrelease));
|
0
|
48
|
366
|
49 #if (NGX_HAVE_RTSIG)
|
|
50 {
|
|
51 int name[2];
|
|
52 size_t len;
|
|
53 ngx_err_t err;
|
|
54
|
222
|
55 name[0] = CTL_KERN;
|
0
|
56 name[1] = KERN_RTSIGMAX;
|
|
57 len = sizeof(ngx_linux_rtsig_max);
|
42
|
58
|
|
59 if (sysctl(name, 2, &ngx_linux_rtsig_max, &len, NULL, 0) == -1) {
|
16
|
60 err = ngx_errno;
|
|
61
|
222
|
62 if (err != NGX_ENOTDIR && err != NGX_ENOSYS) {
|
16
|
63 ngx_log_error(NGX_LOG_ALERT, log, err,
|
|
64 "sysctl(KERN_RTSIGMAX) failed");
|
|
65
|
|
66 return NGX_ERROR;
|
|
67 }
|
|
68
|
0
|
69 ngx_linux_rtsig_max = 0;
|
|
70 }
|
|
71
|
366
|
72 }
|
|
73 #endif
|
0
|
74
|
88
|
75 ngx_os_io = ngx_linux_io;
|
|
76
|
|
77 return NGX_OK;
|
0
|
78 }
|
|
79
|
|
80
|
42
|
81 void
|
88
|
82 ngx_os_specific_status(ngx_log_t *log)
|
0
|
83 {
|
80
|
84 ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s",
|
0
|
85 ngx_linux_kern_ostype, ngx_linux_kern_osrelease);
|
|
86
|
366
|
87 #if (NGX_HAVE_RTSIG)
|
80
|
88 ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d",
|
0
|
89 ngx_linux_rtsig_max);
|
366
|
90 #endif
|
0
|
91 }
|