Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src/event
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-07-06 20:12:16 +0400
committerIgor Sysoev <igor@sysoev.ru>2004-07-06 20:12:16 +0400
commit81a432a185bc61d46a4d5eb1f96773ee7b3dc6a3 (patch)
tree2fc767b2b984c999342761308464c701c6d09457 /src/event
parent40e877165a22f19359344d897c68da4fce62f6c1 (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.c2
-rw-r--r--src/event/ngx_event_accept.c2
-rw-r--r--src/event/ngx_event_connect.c9
-rw-r--r--src/event/ngx_event_posted.c8
-rw-r--r--src/event/ngx_event_timer.c8
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