Welcome! Log In Create A New Profile

Advanced

[nginx] Events: removed broken thread support from event timers.

Valentin Bartenev
October 30, 2014 06:26PM
details: http://hg.nginx.org/nginx/rev/1f513d7f1b45
branches:
changeset: 5894:1f513d7f1b45
user: Valentin Bartenev <vbart@nginx.com>
date: Mon Aug 25 13:34:39 2014 +0400
description:
Events: removed broken thread support from event timers.

It's mostly dead code. And the idea of thread support for this task has
been deprecated.

diffstat:

src/core/ngx_rbtree.c | 6 ++----
src/core/ngx_rbtree.h | 6 ++----
src/event/ngx_event_timer.c | 34 ++--------------------------------
src/event/ngx_event_timer.h | 15 +--------------
src/os/unix/ngx_process_cycle.c | 1 -
5 files changed, 7 insertions(+), 55 deletions(-)

diffs (175 lines):

diff -r fa4161fe8254 -r 1f513d7f1b45 src/core/ngx_rbtree.c
--- a/src/core/ngx_rbtree.c Wed Oct 22 15:31:19 2014 +0200
+++ b/src/core/ngx_rbtree.c Mon Aug 25 13:34:39 2014 +0400
@@ -22,8 +22,7 @@ static ngx_inline void ngx_rbtree_right_


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;

@@ -155,8 +154,7 @@ ngx_rbtree_insert_timer_value(ngx_rbtree


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;
diff -r fa4161fe8254 -r 1f513d7f1b45 src/core/ngx_rbtree.h
--- a/src/core/ngx_rbtree.h Wed Oct 22 15:31:19 2014 +0200
+++ b/src/core/ngx_rbtree.h Mon Aug 25 13:34:39 2014 +0400
@@ -48,10 +48,8 @@ struct ngx_rbtree_s {
(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,
diff -r fa4161fe8254 -r 1f513d7f1b45 src/event/ngx_event_timer.c
--- a/src/event/ngx_event_timer.c Wed Oct 22 15:31:19 2014 +0200
+++ b/src/event/ngx_event_timer.c Mon Aug 25 13:34:39 2014 +0400
@@ -10,13 +10,8 @@
#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,
@@ -30,20 +25,6 @@ ngx_event_timer_init(ngx_log_t *log)
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;
}

@@ -58,15 +39,11 @@ ngx_event_find_timer(void)
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);
@@ -82,9 +59,6 @@ ngx_event_expire_timers(void)
sentinel = ngx_event_timer_rbtree.sentinel;

for ( ;; ) {
-
- ngx_mutex_lock(ngx_event_timer_mutex);
-
root = ngx_event_timer_rbtree.root;

if (root == sentinel) {
@@ -104,8 +78,6 @@ ngx_event_expire_timers(void)

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;
@@ -123,6 +95,4 @@ ngx_event_expire_timers(void)

break;
}
-
- ngx_mutex_unlock(ngx_event_timer_mutex);
}
diff -r fa4161fe8254 -r 1f513d7f1b45 src/event/ngx_event_timer.h
--- a/src/event/ngx_event_timer.h Wed Oct 22 15:31:19 2014 +0200
+++ b/src/event/ngx_event_timer.h Mon Aug 25 13:34:39 2014 +0400
@@ -24,12 +24,7 @@ ngx_msec_t ngx_event_find_timer(void);
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
@@ -39,12 +34,8 @@ ngx_event_del_timer(ngx_event_t *ev)
"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;
@@ -89,12 +80,8 @@ ngx_event_add_timer(ngx_event_t *ev, ngx
"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;
}

diff -r fa4161fe8254 -r 1f513d7f1b45 src/os/unix/ngx_process_cycle.c
--- a/src/os/unix/ngx_process_cycle.c Wed Oct 22 15:31:19 2014 +0200
+++ b/src/os/unix/ngx_process_cycle.c Mon Aug 25 13:34:39 2014 +0400
@@ -1213,7 +1213,6 @@ ngx_wakeup_worker_threads(ngx_cycle_t *c

/* STUB */
ngx_done_events(cycle);
- ngx_mutex_destroy(ngx_event_timer_mutex);

return;
}

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Events: removed broken thread support from event timers.

Valentin Bartenev 578 October 30, 2014 06:26PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 223
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready