aboutsummaryrefslogtreecommitdiff
path: root/src/event/modules/ngx_kqueue_module.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-02-06 17:21:13 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-02-06 17:21:13 +0000
commit7300977320e04280c13d4d89a279f75af9c5f893 (patch)
tree6c935b625eb2dbd83e71e5b2e23ac83bfd88aded /src/event/modules/ngx_kqueue_module.c
parent2a2d2b5094ee88dba5984eddfc4135b66bb8007e (diff)
downloadnginx-7300977320e04280c13d4d89a279f75af9c5f893.tar.gz
nginx-7300977320e04280c13d4d89a279f75af9c5f893.zip
nginx-0.0.1-2003-02-06-20:21:13 import
Diffstat (limited to 'src/event/modules/ngx_kqueue_module.c')
-rw-r--r--src/event/modules/ngx_kqueue_module.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index abf3b6e61..da8450e62 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -23,7 +23,11 @@
/* should be per-thread */
+#if 1
+int kq;
+#else
static int kq;
+#endif
static struct kevent *change_list, *event_list;
static unsigned int nchanges;
static int nevents;
@@ -63,7 +67,12 @@ int ngx_kqueue_init(int max_connections, ngx_log_t *log)
ngx_event_actions.process = ngx_kqueue_process_events;
ngx_event_flags = NGX_HAVE_LEVEL_EVENT
- |NGX_HAVE_ONESHOT_EVENT|NGX_HAVE_CLEAR_EVENT;
+ |NGX_HAVE_ONESHOT_EVENT
+#if (HAVE_AIO_EVENT)
+ |NGX_HAVE_AIO_EVENT;
+#else
+ |NGX_HAVE_CLEAR_EVENT;
+#endif
#endif
return NGX_OK;
@@ -221,10 +230,19 @@ int ngx_kqueue_process_events(ngx_log_t *log)
for (i = 0; i < events; i++) {
#if (NGX_DEBUG_EVENT)
- ngx_log_debug(log, "kevent: %d: ft:%d f:%08x ff:%08x d:%d ud:%08x" _
- event_list[i].ident _ event_list[i].filter _
- event_list[i].flags _ event_list[i].fflags _
- event_list[i].data _ event_list[i].udata);
+ if (event_list[i].ident > 0x8000000) {
+ ngx_log_debug(log,
+ "kevent: %08x: ft:%d f:%08x ff:%08x d:%d ud:%08x" _
+ event_list[i].ident _ event_list[i].filter _
+ event_list[i].flags _ event_list[i].fflags _
+ event_list[i].data _ event_list[i].udata);
+ } else {
+ ngx_log_debug(log,
+ "kevent: %d: ft:%d f:%08x ff:%08x d:%d ud:%08x" _
+ event_list[i].ident _ event_list[i].filter _
+ event_list[i].flags _ event_list[i].fflags _
+ event_list[i].data _ event_list[i].udata);
+ }
#endif
if (event_list[i].flags & EV_ERROR) {
@@ -243,7 +261,6 @@ int ngx_kqueue_process_events(ngx_log_t *log)
case EVFILT_READ:
case EVFILT_WRITE:
- ev->ready = 1;
ev->available = event_list[i].data;
if (event_list[i].flags & EV_EOF) {
@@ -255,12 +272,18 @@ int ngx_kqueue_process_events(ngx_log_t *log)
ngx_del_timer(ev);
}
+ /* fall through */
+
+ case EVFILT_AIO:
+ ev->ready = 1;
+
if (ev->event_handler(ev) == NGX_ERROR) {
ev->close_handler(ev);
}
break;
+
default:
ngx_log_error(NGX_LOG_ALERT, log, 0,
"unknown kevent filter %d" _ event_list[i].filter);