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