diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-02-06 17:21:13 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-02-06 17:21:13 +0000 |
commit | 7300977320e04280c13d4d89a279f75af9c5f893 (patch) | |
tree | 6c935b625eb2dbd83e71e5b2e23ac83bfd88aded /src/event/modules/ngx_kqueue_module.c | |
parent | 2a2d2b5094ee88dba5984eddfc4135b66bb8007e (diff) | |
download | nginx-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.c | 35 |
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); |