From 6a644c694de6a7afc87d25395c2cf6fcc46c4e6f Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Tue, 4 Mar 2003 06:33:48 +0000 Subject: nginx-0.0.1-2003-03-04-09:33:48 import --- src/event/modules/ngx_kqueue_module.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/event/modules/ngx_kqueue_module.c') diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index fc0e34f62..41639fbb7 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2002 Igor Sysoev, http://sysoev.ru + * Copyright (C) 2002-2003 Igor Sysoev, http://sysoev.ru */ @@ -76,6 +76,9 @@ int ngx_kqueue_init(int max_connections, ngx_log_t *log) |NGX_HAVE_ONESHOT_EVENT #if (HAVE_CLEAR_EVENT) |NGX_HAVE_CLEAR_EVENT +#endif +#if (HAVE_LOWAT_EVENT) + |NGX_HAVE_LOWAT_EVENT #endif |NGX_HAVE_KQUEUE_EVENT; @@ -89,6 +92,14 @@ int ngx_kqueue_init(int max_connections, ngx_log_t *log) } +void ngx_kqueue_done(ngx_log_t *log) +{ + if (close(kq) == -1) { + ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "kqueue close() failed"); + } +} + + int ngx_kqueue_add_event(ngx_event_t *ev, int event, u_int flags) { ev->active = 1; @@ -173,9 +184,25 @@ int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags) change_list[nchanges].ident = c->fd; change_list[nchanges].filter = filter; change_list[nchanges].flags = flags; + change_list[nchanges].udata = ev; + +#if (HAVE_LOWAT_EVENT) + + if ((flags & EV_ADD) && ev->lowat > 0) { + change_list[nchanges].fflags = NOTE_LOWAT; + change_list[nchanges].data = ev->lowat; + + } else { + change_list[nchanges].fflags = 0; + change_list[nchanges].data = 0; + } + +#else + change_list[nchanges].fflags = 0; change_list[nchanges].data = 0; - change_list[nchanges].udata = ev; + +#endif ev->index = nchanges; -- cgit