Mercurial > hg > nginx
diff src/event/ngx_event.c @ 309:2e899477243a
nginx-0.0.3-2004-04-09-20:03:04 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 09 Apr 2004 16:03:04 +0000 |
parents | ce375c313e96 |
children | 11ff50a35d6d |
line wrap: on
line diff
--- a/src/event/ngx_event.c Fri Apr 09 05:45:41 2004 +0000 +++ b/src/event/ngx_event.c Fri Apr 09 16:03:04 2004 +0000 @@ -48,6 +48,10 @@ ngx_event_actions_t ngx_event_actions; +ngx_atomic_t connection_counter; +ngx_atomic_t *ngx_connection_counter = &connection_counter; + + ngx_atomic_t *ngx_accept_mutex_ptr; ngx_atomic_t *ngx_accept_mutex; ngx_uint_t ngx_accept_mutex_held; @@ -152,6 +156,9 @@ static ngx_int_t ngx_event_module_init(ngx_cycle_t *cycle) { #if !(WIN32) + + size_t size; + char *shared; ngx_core_conf_t *ccf; ngx_event_conf_t *ecf; @@ -163,19 +170,26 @@ ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module); - if (ecf->accept_mutex == 0) { - return NGX_OK; - } + + /* TODO: 128 is cache line size */ - ngx_accept_mutex_ptr = (ngx_atomic_t *) mmap(NULL, sizeof(ngx_atomic_t), - PROT_READ|PROT_WRITE, - MAP_ANON|MAP_SHARED, -1, 0); + size = 128 /* ngx_accept_mutex */ + + 128; /* ngx_connection_counter */ - if (ngx_accept_mutex_ptr == NULL) { + shared = mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_ANON|MAP_SHARED, -1, 0); + + if (shared == NULL) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, "mmap(MAP_ANON|MAP_SHARED) failed"); return NGX_ERROR; } + + if (ecf->accept_mutex) { + ngx_accept_mutex_ptr = (ngx_atomic_t *) shared; + } + + ngx_connection_counter = (ngx_atomic_t *) (shared + 128); + #endif return NGX_OK;