diff options
author | Ruslan Ermilov <ru@nginx.com> | 2017-08-08 15:16:01 +0300 |
---|---|---|
committer | Ruslan Ermilov <ru@nginx.com> | 2017-08-08 15:16:01 +0300 |
commit | 5f628fef3b837b64096f8e064d51963b1396ffb4 (patch) | |
tree | c2073c8d7c66ff7be9b0213e4f11e826de34f783 /src/core/ngx_slab.c | |
parent | c9a81b29b5a7699f3c25c83b6ee9e0c2a07f5f79 (diff) | |
download | nginx-5f628fef3b837b64096f8e064d51963b1396ffb4.tar.gz nginx-5f628fef3b837b64096f8e064d51963b1396ffb4.zip |
Slab: fixed initialization on win32.
On Windows, a worker process does not call ngx_slab_init() from
ngx_init_zone_pool(), so ngx_slab_max_size, ngx_slab_exact_size,
and ngx_slab_exact_shift were left uninitialized.
Diffstat (limited to 'src/core/ngx_slab.c')
-rw-r--r-- | src/core/ngx_slab.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/core/ngx_slab.c b/src/core/ngx_slab.c index 9e7796d50..402387053 100644 --- a/src/core/ngx_slab.c +++ b/src/core/ngx_slab.c @@ -83,6 +83,19 @@ static ngx_uint_t ngx_slab_exact_shift; void +ngx_slab_sizes_init(void) +{ + ngx_uint_t n; + + ngx_slab_max_size = ngx_pagesize / 2; + ngx_slab_exact_size = ngx_pagesize / (8 * sizeof(uintptr_t)); + for (n = ngx_slab_exact_size; n >>= 1; ngx_slab_exact_shift++) { + /* void */ + } +} + + +void ngx_slab_init(ngx_slab_pool_t *pool) { u_char *p; @@ -91,16 +104,6 @@ ngx_slab_init(ngx_slab_pool_t *pool) ngx_uint_t i, n, pages; ngx_slab_page_t *slots, *page; - /* STUB */ - if (ngx_slab_max_size == 0) { - ngx_slab_max_size = ngx_pagesize / 2; - ngx_slab_exact_size = ngx_pagesize / (8 * sizeof(uintptr_t)); - for (n = ngx_slab_exact_size; n >>= 1; ngx_slab_exact_shift++) { - /* void */ - } - } - /**/ - pool->min_size = (size_t) 1 << pool->min_shift; slots = ngx_slab_slots(pool); |