diff options
author | Igor Sysoev <igor@sysoev.ru> | 2004-07-06 20:12:16 +0400 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2004-07-06 20:12:16 +0400 |
commit | 81a432a185bc61d46a4d5eb1f96773ee7b3dc6a3 (patch) | |
tree | 2fc767b2b984c999342761308464c701c6d09457 /src/event | |
parent | 40e877165a22f19359344d897c68da4fce62f6c1 (diff) |
nginx-0.0.7-2004-07-06-20:12:16 import
Diffstat (limited to 'src/event')
-rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 2 | ||||
-rw-r--r-- | src/event/ngx_event_accept.c | 2 | ||||
-rw-r--r-- | src/event/ngx_event_connect.c | 9 | ||||
-rw-r--r-- | src/event/ngx_event_posted.c | 8 | ||||
-rw-r--r-- | src/event/ngx_event_timer.c | 8 |
5 files changed, 28 insertions, 1 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index 61bf43b58..8039c3d58 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -369,7 +369,7 @@ static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle) for ( ;; ) { timer = ngx_event_find_timer(); -#if (NGX_THREADS0) +#if (NGX_THREADS) if (timer == NGX_TIMER_ERROR) { return NGX_ERROR; } diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c index 7de064f71..82d235b4e 100644 --- a/src/event/ngx_event_accept.c +++ b/src/event/ngx_event_accept.c @@ -212,6 +212,8 @@ void ngx_event_accept(ngx_event_t *ev) #if (NGX_THREADS) if (*(rev->lock)) { + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0, + "spinlock event " PTR_FMT " in accept", rev); ngx_spinlock(rev->lock, 1000); ngx_unlock(rev->lock); } diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c index 4eecd8846..c84dcbc5e 100644 --- a/src/event/ngx_event_connect.c +++ b/src/event/ngx_event_connect.c @@ -183,6 +183,15 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc) rinstance = rev->returned_instance; winstance = wev->returned_instance; +#if (NGX_THREADS) + if (*(rev->lock)) { + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, pc->log, 0, + "spinlock event " PTR_FMT " in connect", rev); + ngx_spinlock(rev->lock, 1000); + ngx_unlock(rev->lock); + } +#endif + ngx_memzero(c, sizeof(ngx_connection_t)); ngx_memzero(rev, sizeof(ngx_event_t)); ngx_memzero(wev, sizeof(ngx_event_t)); diff --git a/src/event/ngx_event_posted.c b/src/event/ngx_event_posted.c index 41be0406f..b441b2918 100644 --- a/src/event/ngx_event_posted.c +++ b/src/event/ngx_event_posted.c @@ -73,8 +73,11 @@ void ngx_wakeup_worker_thread(ngx_cycle_t *cycle) ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle) { + ngx_tls_t *tls; ngx_event_t *ev; + tls = ngx_thread_get_tls(); + for ( ;; ) { ev = (ngx_event_t *) ngx_posted_events; @@ -121,6 +124,8 @@ ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle) ngx_mutex_unlock(ngx_posted_events_mutex); + tls->event = ev; + ev->event_handler(ev); if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { @@ -131,6 +136,9 @@ ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle) ngx_unlock(ev->lock); } + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, + "posted event " PTR_FMT " is done", ev); + break; } } diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c index 0b3822009..c73dfa4de 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -68,6 +68,11 @@ void ngx_event_expire_timers(ngx_msec_t timer) ngx_event_t *ev; ngx_rbtree_t *node; + if (timer < 0) { + /* avoid the endless loop if the time goes backward for some reason */ + timer = 0; + } + for ( ;; ) { if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) { @@ -99,6 +104,9 @@ void ngx_event_expire_timers(ngx_msec_t timer) * been handling has expired timer. */ + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0, + "event " PTR_FMT " is busy in expire timers", + ev); break; } #endif |