diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-05-14 17:13:13 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-05-14 17:13:13 +0000 |
commit | 79a804880ee362a1256e6e8aeadb73f7f5cf0885 (patch) | |
tree | 72ab5081ebb0a198288f706be81defbb4664e5ae /src/os/unix | |
parent | d581fd58e11724df8d7a9d748f9fc3ab66911a5f (diff) | |
download | nginx-79a804880ee362a1256e6e8aeadb73f7f5cf0885.tar.gz nginx-79a804880ee362a1256e6e8aeadb73f7f5cf0885.zip |
nginx-0.0.1-2003-05-14-21:13:13 import
Diffstat (limited to 'src/os/unix')
-rw-r--r-- | src/os/unix/ngx_freebsd_init.c | 56 | ||||
-rw-r--r-- | src/os/unix/ngx_freebsd_init.h | 12 | ||||
-rw-r--r-- | src/os/unix/ngx_freebsd_write_chain.c | 7 | ||||
-rw-r--r-- | src/os/unix/ngx_os_init.h | 12 |
4 files changed, 69 insertions, 18 deletions
diff --git a/src/os/unix/ngx_freebsd_init.c b/src/os/unix/ngx_freebsd_init.c index a24fc4132..f8896e871 100644 --- a/src/os/unix/ngx_freebsd_init.c +++ b/src/os/unix/ngx_freebsd_init.c @@ -2,19 +2,41 @@ #include <ngx_freebsd_init.h> -int freebsd_kern_osreldate; -int freebsd_hw_ncpu; - -int freebsd_sendfile_nbytes_bug; +char ngx_freebsd_kern_ostype[20]; +char ngx_freebsd_kern_osrelease[20]; +int ngx_freebsd_kern_osreldate; +int ngx_freebsd_hw_ncpu; +int ngx_freebsd_net_inet_tcp_sendspace; +int ngx_freebsd_sendfile_nbytes_bug; int ngx_os_init(ngx_log_t *log) { size_t size; + size = 20; + if (sysctlbyname("kern.ostype", + ngx_freebsd_kern_ostype, &size, NULL, 0) == -1) { + ngx_log_error(NGX_LOG_ALERT, log, errno, + "sysctlbyname(kern.ostype) failed"); + return NGX_ERROR; + } + + size = 20; + if (sysctlbyname("kern.osrelease", + ngx_freebsd_kern_osrelease, &size, NULL, 0) == -1) { + ngx_log_error(NGX_LOG_ALERT, log, errno, + "sysctlbyname(kern.osrelease) failed"); + return NGX_ERROR; + } + + ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %s %s", + ngx_freebsd_kern_ostype, ngx_freebsd_kern_osrelease); + + size = 4; if (sysctlbyname("kern.osreldate", - &freebsd_kern_osreldate, &size, NULL, 0) == -1) { + &ngx_freebsd_kern_osreldate, &size, NULL, 0) == -1) { ngx_log_error(NGX_LOG_ALERT, log, errno, "sysctlbyname(kern.osreldate) failed"); return NGX_ERROR; @@ -22,7 +44,7 @@ int ngx_os_init(ngx_log_t *log) ngx_log_error(NGX_LOG_INFO, log, 0, "kern.osreldate: %d, built on %d", - freebsd_kern_osreldate, __FreeBSD_version); + ngx_freebsd_kern_osreldate, __FreeBSD_version); #if HAVE_FREEBSD_SENDFILE @@ -42,12 +64,12 @@ int ngx_os_init(ngx_log_t *log) || __FreeBSD_version == 460002 || __FreeBSD_version >= 500039 /* a new syscall without the bug */ - freebsd_sendfile_nbytes_bug = 0; + ngx_freebsd_sendfile_nbytes_bug = 0; #else /* an old syscall that can have the bug */ - freebsd_sendfile_nbytes_bug = 1; + ngx_freebsd_sendfile_nbytes_bug = 1; #endif @@ -55,13 +77,27 @@ int ngx_os_init(ngx_log_t *log) size = 4; - if (sysctlbyname("hw.ncpu", &freebsd_hw_ncpu, &size, NULL, 0) == -1) { + if (sysctlbyname("hw.ncpu", &ngx_freebsd_hw_ncpu, &size, NULL, 0) == -1) { ngx_log_error(NGX_LOG_ALERT, log, errno, "sysctlbyname(hw.ncpu) failed"); return NGX_ERROR; } - ngx_log_error(NGX_LOG_INFO, log, 0, "hw.ncpu: %d", freebsd_hw_ncpu); + ngx_log_error(NGX_LOG_INFO, log, 0, "hw.ncpu: %d", ngx_freebsd_hw_ncpu); + + + size = 4; + if (sysctlbyname("net.inet.tcp.sendspace", + &ngx_freebsd_net_inet_tcp_sendspace, + &size, NULL, 0) == -1) + { + ngx_log_error(NGX_LOG_ALERT, log, errno, + "sysctlbyname(net.inet.tcp.sendspace) failed"); + return NGX_ERROR; + } + + ngx_log_error(NGX_LOG_INFO, log, 0, "net.inet.tcp.sendspace: %d", + ngx_freebsd_net_inet_tcp_sendspace); return NGX_OK; } diff --git a/src/os/unix/ngx_freebsd_init.h b/src/os/unix/ngx_freebsd_init.h index d0af10b24..400295ae7 100644 --- a/src/os/unix/ngx_freebsd_init.h +++ b/src/os/unix/ngx_freebsd_init.h @@ -1,5 +1,5 @@ -#ifndef _NGX_OS_INIT_H_INCLUDED_ -#define _NGX_OS_INIT_H_INCLUDED_ +#ifndef _NGX_FREEBSD_INIT_H_INCLUDED_ +#define _NGX_FREEBSD_INIT_H_INCLUDED_ #include <ngx_config.h> @@ -11,8 +11,10 @@ int ngx_os_init(ngx_log_t *log); -extern int freebsd_kern_osreldate; -extern int freebsd_hw_ncpu; +extern int ngx_freebsd_kern_osreldate; +extern int ngx_freebsd_hw_ncpu; +extern int ngx_freebsd_net_inet_tcp_sendspace; +extern int ngx_freebsd_sendfile_nbytes_bug; -#endif /* _NGX_OS_INIT_H_INCLUDED_ */ +#endif /* _NGX_FREEBSD_INIT_H_INCLUDED_ */ diff --git a/src/os/unix/ngx_freebsd_write_chain.c b/src/os/unix/ngx_freebsd_write_chain.c index 09c0120db..6b9882a7b 100644 --- a/src/os/unix/ngx_freebsd_write_chain.c +++ b/src/os/unix/ngx_freebsd_write_chain.c @@ -9,6 +9,7 @@ #include <ngx_connection.h> #include <ngx_sendv.h> #include <ngx_sendfile.h> +#include <ngx_freebsd_init.h> ngx_chain_t *ngx_freebsd_write_chain(ngx_connection_t *c, ngx_chain_t *in) @@ -50,9 +51,9 @@ ngx_chain_t *ngx_freebsd_write_chain(ngx_connection_t *c, ngx_chain_t *in) prev = ce->hunk->last; } -#if (HAVE_FREEBSD_SENDFILE_NBYTES_BUG) - hsize += ce->hunk->last - ce->hunk->pos; -#endif + if (ngx_freebsd_sendfile_nbytes_bug) { + hsize += ce->hunk->last - ce->hunk->pos; + } ce = ce->next; } } diff --git a/src/os/unix/ngx_os_init.h b/src/os/unix/ngx_os_init.h new file mode 100644 index 000000000..5c445ace6 --- /dev/null +++ b/src/os/unix/ngx_os_init.h @@ -0,0 +1,12 @@ +#ifndef _NGX_OS_INIT_H_INCLUDED_ +#define _NGX_OS_INIT_H_INCLUDED_ + + +#include <ngx_config.h> +#include <ngx_log.h> + + +int ngx_os_init(ngx_log_t *log); + + +#endif /* _NGX_OS_INIT_H_INCLUDED_ */ |