Mercurial > hg > nginx
comparison src/core/ngx_cycle.c @ 2905:5ff1ae0eada7
test that zone has the same addresses in different processes
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 02 Jun 2009 13:57:59 +0000 |
parents | 44b2081c015a |
children | c7d57b539248 |
comparison
equal
deleted
inserted
replaced
2904:474a9daf8c80 | 2905:5ff1ae0eada7 |
---|---|
461 | 461 |
462 if (ngx_shm_alloc(&shm_zone[i].shm) != NGX_OK) { | 462 if (ngx_shm_alloc(&shm_zone[i].shm) != NGX_OK) { |
463 goto failed; | 463 goto failed; |
464 } | 464 } |
465 | 465 |
466 if (!shm_zone[i].shm.exists) { | 466 if (ngx_init_zone_pool(cycle, &shm_zone[i]) != NGX_OK) { |
467 | 467 goto failed; |
468 if (ngx_init_zone_pool(cycle, &shm_zone[i]) != NGX_OK) { | |
469 goto failed; | |
470 } | |
471 } | 468 } |
472 | 469 |
473 if (shm_zone[i].init(&shm_zone[i], NULL) != NGX_OK) { | 470 if (shm_zone[i].init(&shm_zone[i], NULL) != NGX_OK) { |
474 goto failed; | 471 goto failed; |
475 } | 472 } |
883 u_char *file; | 880 u_char *file; |
884 ngx_slab_pool_t *sp; | 881 ngx_slab_pool_t *sp; |
885 | 882 |
886 sp = (ngx_slab_pool_t *) zn->shm.addr; | 883 sp = (ngx_slab_pool_t *) zn->shm.addr; |
887 | 884 |
885 if (zn->shm.exists) { | |
886 | |
887 if (sp == sp->addr) { | |
888 return NGX_OK; | |
889 } | |
890 | |
891 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, | |
892 "shared zone \"%V\" has no equal addresses: %p vs %p", | |
893 &zn->shm.name, sp->addr, sp); | |
894 return NGX_ERROR; | |
895 } | |
896 | |
888 sp->end = zn->shm.addr + zn->shm.size; | 897 sp->end = zn->shm.addr + zn->shm.size; |
889 sp->min_shift = 3; | 898 sp->min_shift = 3; |
899 sp->addr = zn->shm.addr; | |
890 | 900 |
891 #if (NGX_HAVE_ATOMIC_OPS) | 901 #if (NGX_HAVE_ATOMIC_OPS) |
892 | 902 |
893 file = NULL; | 903 file = NULL; |
894 | 904 |