diff options
| author | 2011-09-22 23:32:10 +0000 | |
|---|---|---|
| committer | 2011-09-22 23:32:10 +0000 | |
| commit | 40ffe171a7951d3019b3c8b488be87bfad405509 (patch) | |
| tree | 7634bff211814a539a15e4e34db747e4d7b46006 /usr.sbin/nginx/src/os/unix/ngx_linux_init.c | |
| parent | Always install all manuals on all architectures. (diff) | |
| download | wireguard-openbsd-40ffe171a7951d3019b3c8b488be87bfad405509.tar.xz wireguard-openbsd-40ffe171a7951d3019b3c8b488be87bfad405509.zip | |
import of nginx 1.0.6 with a bundled libpcre needed for pcre to work
properly.
this is not yet linked to the build but we would like to work on it
in tree to provide an apache replacement for base
Diffstat (limited to 'usr.sbin/nginx/src/os/unix/ngx_linux_init.c')
| -rw-r--r-- | usr.sbin/nginx/src/os/unix/ngx_linux_init.c | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/usr.sbin/nginx/src/os/unix/ngx_linux_init.c b/usr.sbin/nginx/src/os/unix/ngx_linux_init.c new file mode 100644 index 00000000000..277be95371b --- /dev/null +++ b/usr.sbin/nginx/src/os/unix/ngx_linux_init.c @@ -0,0 +1,90 @@ + +/* + * Copyright (C) Igor Sysoev + */ + + +#include <ngx_config.h> +#include <ngx_core.h> + + +u_char ngx_linux_kern_ostype[50]; +u_char ngx_linux_kern_osrelease[50]; + +int ngx_linux_rtsig_max; + + +static ngx_os_io_t ngx_linux_io = { + ngx_unix_recv, + ngx_readv_chain, + ngx_udp_unix_recv, + ngx_unix_send, +#if (NGX_HAVE_SENDFILE) + ngx_linux_sendfile_chain, + NGX_IO_SENDFILE +#else + ngx_writev_chain, + 0 +#endif +}; + + +ngx_int_t +ngx_os_specific_init(ngx_log_t *log) +{ + struct utsname u; + + if (uname(&u) == -1) { + ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "uname() failed"); + return NGX_ERROR; + } + + (void) ngx_cpystrn(ngx_linux_kern_ostype, (u_char *) u.sysname, + sizeof(ngx_linux_kern_ostype)); + + (void) ngx_cpystrn(ngx_linux_kern_osrelease, (u_char *) u.release, + sizeof(ngx_linux_kern_osrelease)); + +#if (NGX_HAVE_RTSIG) + { + int name[2]; + size_t len; + ngx_err_t err; + + name[0] = CTL_KERN; + name[1] = KERN_RTSIGMAX; + len = sizeof(ngx_linux_rtsig_max); + + if (sysctl(name, 2, &ngx_linux_rtsig_max, &len, NULL, 0) == -1) { + err = ngx_errno; + + if (err != NGX_ENOTDIR && err != NGX_ENOSYS) { + ngx_log_error(NGX_LOG_ALERT, log, err, + "sysctl(KERN_RTSIGMAX) failed"); + + return NGX_ERROR; + } + + ngx_linux_rtsig_max = 0; + } + + } +#endif + + ngx_os_io = ngx_linux_io; + + return NGX_OK; +} + + +void +ngx_os_specific_status(ngx_log_t *log) +{ + ngx_log_error(NGX_LOG_NOTICE, log, 0, "OS: %s %s", + ngx_linux_kern_ostype, ngx_linux_kern_osrelease); + +#if (NGX_HAVE_RTSIG) + ngx_log_error(NGX_LOG_NOTICE, log, 0, "sysctl(KERN_RTSIGMAX): %d", + ngx_linux_rtsig_max); +#endif +} |
