summaryrefslogtreecommitdiffstats
path: root/usr.sbin/nginx/src/os/unix/ngx_linux_init.c
diff options
context:
space:
mode:
authorrobert <robert@openbsd.org>2011-09-22 23:32:10 +0000
committerrobert <robert@openbsd.org>2011-09-22 23:32:10 +0000
commit40ffe171a7951d3019b3c8b488be87bfad405509 (patch)
tree7634bff211814a539a15e4e34db747e4d7b46006 /usr.sbin/nginx/src/os/unix/ngx_linux_init.c
parentAlways install all manuals on all architectures. (diff)
downloadwireguard-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.c90
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
+}