diff src/event/ngx_event_timer.h @ 270:7bb9562216ce

nginx-0.0.2-2004-02-25-23:16:15 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 25 Feb 2004 20:16:15 +0000
parents 1119faf4635a
children d4e65d74db9f
line wrap: on
line diff
--- a/src/event/ngx_event_timer.h
+++ b/src/event/ngx_event_timer.h
@@ -7,6 +7,8 @@
 #include <ngx_event.h>
 
 
+#define NGX_TIMER_ERROR  (ngx_msec_t) -1
+
 /*
  * 32 bit timer key value resolution
  *
@@ -19,11 +21,16 @@
 #define NGX_TIMER_RESOLUTION  1
 
 
-void ngx_event_timer_init(void);
+ngx_int_t ngx_event_timer_init(ngx_log_t *log);
 ngx_msec_t ngx_event_find_timer(void);
 void ngx_event_expire_timers(ngx_msec_t timer);
 
 
+#if (NGX_THREADS)
+extern ngx_mutex_t  *ngx_event_timer_mutex;
+#endif
+
+
 extern ngx_rbtree_t  *ngx_event_timer_rbtree;
 extern ngx_rbtree_t   ngx_event_timer_sentinel;
 
@@ -34,9 +41,19 @@ ngx_inline static void ngx_event_del_tim
                    "event timer del: %d: %d",
                     ngx_event_ident(ev->data), ev->rbtree_key);
 
+#if (NGX_THREADS)
+    if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+        return;
+    }
+#endif
+
     ngx_rbtree_delete(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                       (ngx_rbtree_t *) &ev->rbtree_key);
 
+#if (NGX_THREADS)
+    ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
 #if (NGX_DEBUG)
     ev->rbtree_left = NULL;
     ev->rbtree_right = NULL;
@@ -64,9 +81,19 @@ ngx_inline static void ngx_event_add_tim
                    "event timer add: %d: %d",
                     ngx_event_ident(ev->data), ev->rbtree_key);
 
+#if (NGX_THREADS)
+    if (ngx_mutex_lock(ngx_event_timer_mutex) == NGX_ERROR) {
+        return;
+    }
+#endif
+
     ngx_rbtree_insert(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
                       (ngx_rbtree_t *) &ev->rbtree_key);
 
+#if (NGX_THREADS)
+    ngx_mutex_unlock(ngx_event_timer_mutex);
+#endif
+
     ev->timer_set = 1;
 }