comparison src/os/unix/ngx_freebsd_init.c @ 97:70d2345a903f

nginx-0.0.1-2003-05-29-17:02:09 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 29 May 2003 13:02:09 +0000
parents 8220378432a8
children a059e1aa65d4
comparison
equal deleted inserted replaced
96:a23d010f356d 97:70d2345a903f
1 1
2 #include <ngx_freebsd_init.h> 2 #include <ngx_freebsd_init.h>
3 3
4 4
5 /* FreeBSD 3.4 at least */
5 char ngx_freebsd_kern_ostype[20]; 6 char ngx_freebsd_kern_ostype[20];
6 char ngx_freebsd_kern_osrelease[20]; 7 char ngx_freebsd_kern_osrelease[20];
7 int ngx_freebsd_kern_osreldate; 8 int ngx_freebsd_kern_osreldate;
8 int ngx_freebsd_hw_ncpu; 9 int ngx_freebsd_hw_ncpu;
9 int ngx_freebsd_net_inet_tcp_sendspace; 10 int ngx_freebsd_net_inet_tcp_sendspace;
10 int ngx_freebsd_sendfile_nbytes_bug; 11 int ngx_freebsd_sendfile_nbytes_bug;
12
13 /* FreeBSD 5.0 */
14 int ngx_freebsd_kern_ipc_zero_copy_send;
11 15
12 16
13 ngx_os_io_t ngx_os_io = { 17 ngx_os_io_t ngx_os_io = {
14 ngx_unix_recv, 18 ngx_unix_recv,
15 ngx_readv_chain, 19 ngx_readv_chain,
17 ngx_freebsd_sendfile_chain, 21 ngx_freebsd_sendfile_chain,
18 NGX_HAVE_SENDFILE|NGX_HAVE_ZEROCOPY 22 NGX_HAVE_SENDFILE|NGX_HAVE_ZEROCOPY
19 }; 23 };
20 24
21 25
26 typedef struct {
27 char *name;
28 int *value;
29 size_t size;
30 } sysctl_t;
31
32
33 sysctl_t sysctls[] = {
34 {"hw.ncpu",
35 &ngx_freebsd_hw_ncpu,
36 sizeof(int)},
37
38 {"net.inet.tcp.sendspace",
39 &ngx_freebsd_net_inet_tcp_sendspace,
40 sizeof(int)},
41
42 {"kern.ipc.zero_copy.send",
43 &ngx_freebsd_kern_ipc_zero_copy_send,
44 sizeof(int)},
45
46 {NULL, NULL, 0}
47 };
48
49
22 int ngx_os_init(ngx_log_t *log) 50 int ngx_os_init(ngx_log_t *log)
23 { 51 {
24 size_t size; 52 int i;
53 size_t size;
54 ngx_err_t err;
25 55
26 size = 20; 56 size = 20;
27 if (sysctlbyname("kern.ostype", 57 if (sysctlbyname("kern.ostype",
28 ngx_freebsd_kern_ostype, &size, NULL, 0) == -1) { 58 ngx_freebsd_kern_ostype, &size, NULL, 0) == -1) {
29 ngx_log_error(NGX_LOG_ALERT, log, errno, 59 ngx_log_error(NGX_LOG_ALERT, log, errno,
83 #endif 113 #endif
84 114
85 #endif /* HAVE_FREEBSD_SENDFILE */ 115 #endif /* HAVE_FREEBSD_SENDFILE */
86 116
87 117
88 size = 4; 118 for (i = 0; sysctls[i].name; i++) {
89 if (sysctlbyname("hw.ncpu", &ngx_freebsd_hw_ncpu, &size, NULL, 0) == -1) { 119 *sysctls[i].value = 0;
90 ngx_log_error(NGX_LOG_ALERT, log, errno, 120 size = sysctls[i].size;
91 "sysctlbyname(hw.ncpu) failed"); 121 if (sysctlbyname(sysctls[i].name, sysctls[i].value, &size, NULL, 0)
92 return NGX_ERROR; 122 == -1) {
123 err = errno;
124 if (err != NGX_ENOENT) {
125 ngx_log_error(NGX_LOG_ALERT, log, err,
126 "sysctlbyname(%s) failed", sysctls[i].name);
127 return NGX_ERROR;
128 }
129
130 } else {
131 ngx_log_error(NGX_LOG_INFO, log, 0, "%s: %d",
132 sysctls[i].name, *sysctls[i].value);
133 }
93 } 134 }
94
95 ngx_log_error(NGX_LOG_INFO, log, 0, "hw.ncpu: %d", ngx_freebsd_hw_ncpu);
96
97
98 size = 4;
99 if (sysctlbyname("net.inet.tcp.sendspace",
100 &ngx_freebsd_net_inet_tcp_sendspace,
101 &size, NULL, 0) == -1)
102 {
103 ngx_log_error(NGX_LOG_ALERT, log, errno,
104 "sysctlbyname(net.inet.tcp.sendspace) failed");
105 return NGX_ERROR;
106 }
107
108 ngx_log_error(NGX_LOG_INFO, log, 0, "net.inet.tcp.sendspace: %d",
109 ngx_freebsd_net_inet_tcp_sendspace);
110 135
111 return ngx_posix_init(log); 136 return ngx_posix_init(log);
112 } 137 }