diff src/os/unix/ngx_process_cycle.c @ 381:02a511569afb

nginx-0.0.7-2004-07-07-19:01:00 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 07 Jul 2004 15:01:00 +0000
parents 5ce6561246a5
children 449c4885dcd1
line wrap: on
line diff
--- a/src/os/unix/ngx_process_cycle.c
+++ b/src/os/unix/ngx_process_cycle.c
@@ -526,6 +526,7 @@ static void ngx_master_exit(ngx_cycle_t 
 static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data)
 {
     sigset_t           set;
+    ngx_err_t          err;
     ngx_int_t          n;
     ngx_uint_t         i;
     ngx_listening_t   *ls;
@@ -637,6 +638,14 @@ static void ngx_worker_process_cycle(ngx
             exit(2);
         }
 
+        err = ngx_thread_key_create(&ngx_core_tls_key);
+        if (err != 0) {
+            ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
+                          ngx_thread_key_create_n " failed");
+            /* fatal */
+            exit(2);
+        }
+
         for (n = 0; n < ngx_threads_n; n++) {
 
             if (!(ngx_threads[n].cv = ngx_cond_init(cycle->log))) {
@@ -829,7 +838,7 @@ static void* ngx_worker_thread_cycle(voi
 
     sigset_t          set;
     ngx_err_t         err;
-    ngx_tls_t        *tls;
+    ngx_core_tls_t   *tls;
     ngx_cycle_t      *cycle;
     struct timeval    tv;
 
@@ -854,19 +863,17 @@ static void* ngx_worker_thread_cycle(voi
 
     ngx_setthrtitle("worker thread");
 
-    if (!(tls = ngx_calloc(sizeof(ngx_tls_t), cycle->log))) {
+    if (!(tls = ngx_calloc(sizeof(ngx_core_tls_t), cycle->log))) {
         return (void *) 1;
     }
 
-    err = ngx_thread_create_tls();
+    err = ngx_thread_set_tls(ngx_core_tls_key, tls);
     if (err != 0) {
         ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
-                      ngx_thread_create_tls_n " failed");
+                      ngx_thread_set_tls_n " failed");
         return (void *) 1;
     }
 
-    ngx_thread_set_tls(tls);
-
     if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) {
         return (void *) 1;
     }
@@ -883,7 +890,7 @@ static void* ngx_worker_thread_cycle(voi
 
             ngx_mutex_unlock(ngx_posted_events_mutex);
 
-            ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, ngx_errno,
+            ngx_log_debug1(NGX_LOG_DEBUG_CORE, cycle->log, 0,
                            "thread %d is done", ngx_thread_self());
 
             return (void *) 0;
@@ -899,8 +906,10 @@ static void* ngx_worker_thread_cycle(voi
             return (void *) 1;
         }
 
-        if (ngx_process_changes(cycle, 1) == NGX_ERROR) {
-            return (void *) 1;
+        if (ngx_process_changes) {
+            if (ngx_process_changes(cycle, 1) == NGX_ERROR) {
+                return (void *) 1;
+            }
         }
     }
 }