Mercurial > hg > nginx
diff src/event/modules/ngx_kqueue_module.c @ 316:a0beefedaf94
nginx-0.0.3-2004-04-15-00:34:05 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 14 Apr 2004 20:34:05 +0000 |
parents | 39b6f2df45c0 |
children | 1308b98496a2 |
line wrap: on
line diff
--- a/src/event/modules/ngx_kqueue_module.c Wed Apr 14 17:44:28 2004 +0000 +++ b/src/event/modules/ngx_kqueue_module.c Wed Apr 14 20:34:05 2004 +0000 @@ -353,20 +353,34 @@ struct timeval tv; struct timespec ts, *tp; - timer = ngx_event_find_timer(); + for ( ;; ) { + timer = ngx_event_find_timer(); #if (NGX_THREADS) - if (timer == NGX_TIMER_ERROR) { - return NGX_ERROR; - } + if (timer == NGX_TIMER_ERROR) { + return NGX_ERROR; + } - /* - * TODO: if timer is 0 and any worker thread is still busy - * then set 500 ms timeout - */ + /* + * TODO: if timer is NGX_TIMER_INFINITE and any worker thread + * is still busy then set the configurable 500ms timeout + * to wake up another worker thread + */ #endif + if (timer != 0) { + break; + } + + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "kevent expired timer"); + + ngx_event_expire_timers(0); + + /* TODO: if ngx_threaded then wake up the worker thread */ + } + ngx_old_elapsed_msec = ngx_elapsed_msec; expire = 1; @@ -376,26 +390,21 @@ } if (ngx_accept_mutex_held == 0 - && (timer == 0 || timer > ngx_accept_mutex_delay)) + && (timer == NGX_TIMER_INFINITE || timer > ngx_accept_mutex_delay)) { timer = ngx_accept_mutex_delay; expire = 0; } } - if (timer == -1) { - ts.tv_sec = 0; - ts.tv_nsec = 0; - tp = &ts; + if (timer == NGX_TIMER_INFINITE) { + tp = NULL; + expire = 0; - } else if (timer) { + } else { ts.tv_sec = timer / 1000; ts.tv_nsec = (timer % 1000) * 1000000; tp = &ts; - - } else { - tp = NULL; - expire = 0; } ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, @@ -427,7 +436,7 @@ return NGX_ERROR; } - if (timer) { + if (timer != NGX_TIMER_INFINITE) { delta = ngx_elapsed_msec - delta; ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0, @@ -550,6 +559,8 @@ ngx_accept_mutex_unlock(); + /* TODO: wake up worker thread */ + if (expire && delta) { ngx_event_expire_timers((ngx_msec_t) delta); }