comparison src/os/unix/ngx_process_cycle.c @ 302:1526e7686b20

nginx-0.0.3-2004-04-01-10:21:13 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 01 Apr 2004 06:21:13 +0000
parents 744965ec6275
children 00c5660d2707
comparison
equal deleted inserted replaced
301:744965ec6275 302:1526e7686b20
63 ngx_new_binary = 0; 63 ngx_new_binary = 0;
64 delay = 0; 64 delay = 0;
65 signo = 0; 65 signo = 0;
66 live = 0; 66 live = 0;
67 67
68 ngx_accept_mutex = mmap(NULL, sizeof(ngx_atomic_t), PROT_READ|PROT_WRITE, 68 ngx_accept_mutex_ptr = mmap(NULL, sizeof(ngx_atomic_t),
69 MAP_ANON|MAP_SHARED, -1, 0); 69 PROT_READ|PROT_WRITE,
70 70 MAP_ANON|MAP_SHARED, -1, 0);
71 if (ngx_accept_mutex == NULL) { 71
72 if (ngx_accept_mutex_ptr == NULL) {
72 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, 73 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
73 "mmap(MAP_ANON|MAP_SHARED) failed"); 74 "mmap(MAP_ANON|MAP_SHARED) failed");
74 /* fatal */ 75 /* fatal */
75 exit(2); 76 exit(2);
76 } 77 }
373 #endif 374 #endif
374 375
375 ngx_process = NGX_PROCESS_WORKER; 376 ngx_process = NGX_PROCESS_WORKER;
376 ngx_last_process = 0; 377 ngx_last_process = 0;
377 378
378 if (ngx_accept_mutex) {
379 ngx_accept_token = 1;
380 }
381
382 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); 379 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
380
381 if (ccf->worker_processes > 1) {
382 ngx_accept_mutex = ngx_accept_mutex_ptr;
383 ngx_accept_mutex_held = 1;
384 }
383 385
384 if (ccf->group != (gid_t) NGX_CONF_UNSET) { 386 if (ccf->group != (gid_t) NGX_CONF_UNSET) {
385 if (setuid(ccf->group) == -1) { 387 if (setuid(ccf->group) == -1) {
386 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, 388 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
387 "setgid(%d) failed", ccf->group); 389 "setgid(%d) failed", ccf->group);
481 } 483 }
482 } 484 }
483 485
484 ngx_close_listening_sockets(cycle); 486 ngx_close_listening_sockets(cycle);
485 487
488 ngx_accept_mutex = NULL;
489
486 for ( ;; ) { 490 for ( ;; ) {
487 if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) { 491 if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) {
488 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exiting"); 492 ngx_log_error(NGX_LOG_INFO, cycle->log, 0, "exiting");
489 exit(0); 493 exit(0);
490 } 494 }