Mercurial > hg > nginx
comparison src/core/ngx_slab.c @ 7081:69f9ee0342db
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.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Tue, 08 Aug 2017 15:16:01 +0300 |
parents | 8c5e3cc21332 |
children | d97d09ef3afe |
comparison
equal
deleted
inserted
replaced
7080:ac120e797d28 | 7081:69f9ee0342db |
---|---|
81 static ngx_uint_t ngx_slab_exact_size; | 81 static ngx_uint_t ngx_slab_exact_size; |
82 static ngx_uint_t ngx_slab_exact_shift; | 82 static ngx_uint_t ngx_slab_exact_shift; |
83 | 83 |
84 | 84 |
85 void | 85 void |
86 ngx_slab_sizes_init(void) | |
87 { | |
88 ngx_uint_t n; | |
89 | |
90 ngx_slab_max_size = ngx_pagesize / 2; | |
91 ngx_slab_exact_size = ngx_pagesize / (8 * sizeof(uintptr_t)); | |
92 for (n = ngx_slab_exact_size; n >>= 1; ngx_slab_exact_shift++) { | |
93 /* void */ | |
94 } | |
95 } | |
96 | |
97 | |
98 void | |
86 ngx_slab_init(ngx_slab_pool_t *pool) | 99 ngx_slab_init(ngx_slab_pool_t *pool) |
87 { | 100 { |
88 u_char *p; | 101 u_char *p; |
89 size_t size; | 102 size_t size; |
90 ngx_int_t m; | 103 ngx_int_t m; |
91 ngx_uint_t i, n, pages; | 104 ngx_uint_t i, n, pages; |
92 ngx_slab_page_t *slots, *page; | 105 ngx_slab_page_t *slots, *page; |
93 | |
94 /* STUB */ | |
95 if (ngx_slab_max_size == 0) { | |
96 ngx_slab_max_size = ngx_pagesize / 2; | |
97 ngx_slab_exact_size = ngx_pagesize / (8 * sizeof(uintptr_t)); | |
98 for (n = ngx_slab_exact_size; n >>= 1; ngx_slab_exact_shift++) { | |
99 /* void */ | |
100 } | |
101 } | |
102 /**/ | |
103 | 106 |
104 pool->min_size = (size_t) 1 << pool->min_shift; | 107 pool->min_size = (size_t) 1 << pool->min_shift; |
105 | 108 |
106 slots = ngx_slab_slots(pool); | 109 slots = ngx_slab_slots(pool); |
107 | 110 |