void
-ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
- ngx_rbtree_node_t *node)
+ngx_rbtree_insert(ngx_rbtree_t *tree, ngx_rbtree_node_t *node)
{
ngx_rbtree_node_t **root, *temp, *sentinel;
void
-ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
- ngx_rbtree_node_t *node)
+ngx_rbtree_delete(ngx_rbtree_t *tree, ngx_rbtree_node_t *node)
{
ngx_uint_t red;
ngx_rbtree_node_t **root, *sentinel, *subst, *temp, *w;
(tree)->insert = i
-void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
- ngx_rbtree_node_t *node);
-void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
- ngx_rbtree_node_t *node);
+void ngx_rbtree_insert(ngx_rbtree_t *tree, ngx_rbtree_node_t *node);
+void ngx_rbtree_delete(ngx_rbtree_t *tree, ngx_rbtree_node_t *node);
void ngx_rbtree_insert_value(ngx_rbtree_node_t *root, ngx_rbtree_node_t *node,
ngx_rbtree_node_t *sentinel);
void ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *root,
#include <ngx_event.h>
-#if (NGX_THREADS)
-ngx_mutex_t *ngx_event_timer_mutex;
-#endif
-
-
-ngx_thread_volatile ngx_rbtree_t ngx_event_timer_rbtree;
-static ngx_rbtree_node_t ngx_event_timer_sentinel;
+ngx_rbtree_t ngx_event_timer_rbtree;
+static ngx_rbtree_node_t ngx_event_timer_sentinel;
/*
* the event timer rbtree may contain the duplicate keys, however,
ngx_rbtree_init(&ngx_event_timer_rbtree, &ngx_event_timer_sentinel,
ngx_rbtree_insert_timer_value);
-#if (NGX_THREADS)
-
- if (ngx_event_timer_mutex) {
- ngx_event_timer_mutex->log = log;
- return NGX_OK;
- }
-
- ngx_event_timer_mutex = ngx_mutex_init(log, 0);
- if (ngx_event_timer_mutex == NULL) {
- return NGX_ERROR;
- }
-
-#endif
-
return NGX_OK;
}
return NGX_TIMER_INFINITE;
}
- ngx_mutex_lock(ngx_event_timer_mutex);
-
root = ngx_event_timer_rbtree.root;
sentinel = ngx_event_timer_rbtree.sentinel;
node = ngx_rbtree_min(root, sentinel);
- ngx_mutex_unlock(ngx_event_timer_mutex);
-
timer = (ngx_msec_int_t) (node->key - ngx_current_msec);
return (ngx_msec_t) (timer > 0 ? timer : 0);
sentinel = ngx_event_timer_rbtree.sentinel;
for ( ;; ) {
-
- ngx_mutex_lock(ngx_event_timer_mutex);
-
root = ngx_event_timer_rbtree.root;
if (root == sentinel) {
ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->timer);
- ngx_mutex_unlock(ngx_event_timer_mutex);
-
#if (NGX_DEBUG)
ev->timer.left = NULL;
ev->timer.right = NULL;
break;
}
-
- ngx_mutex_unlock(ngx_event_timer_mutex);
}
void ngx_event_expire_timers(void);
-#if (NGX_THREADS)
-extern ngx_mutex_t *ngx_event_timer_mutex;
-#endif
-
-
-extern ngx_thread_volatile ngx_rbtree_t ngx_event_timer_rbtree;
+extern ngx_rbtree_t ngx_event_timer_rbtree;
static ngx_inline void
"event timer del: %d: %M",
ngx_event_ident(ev->data), ev->timer.key);
- ngx_mutex_lock(ngx_event_timer_mutex);
-
ngx_rbtree_delete(&ngx_event_timer_rbtree, &ev->timer);
- ngx_mutex_unlock(ngx_event_timer_mutex);
-
#if (NGX_DEBUG)
ev->timer.left = NULL;
ev->timer.right = NULL;
"event timer add: %d: %M:%M",
ngx_event_ident(ev->data), timer, ev->timer.key);
- ngx_mutex_lock(ngx_event_timer_mutex);
-
ngx_rbtree_insert(&ngx_event_timer_rbtree, &ev->timer);
- ngx_mutex_unlock(ngx_event_timer_mutex);
-
ev->timer_set = 1;
}
/* STUB */
ngx_done_events(cycle);
- ngx_mutex_destroy(ngx_event_timer_mutex);
return;
}