mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 17:52:38 +08:00
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.
This commit is contained in:
parent
c9a81b29b5
commit
5f628fef3b
@ -273,6 +273,12 @@ main(int argc, char *const *argv)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ngx_slab_sizes_init() requires ngx_pagesize set in ngx_os_init()
|
||||||
|
*/
|
||||||
|
|
||||||
|
ngx_slab_sizes_init();
|
||||||
|
|
||||||
if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) {
|
if (ngx_add_inherited_sockets(&init_cycle) != NGX_OK) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,19 @@ static ngx_uint_t ngx_slab_exact_size;
|
|||||||
static ngx_uint_t ngx_slab_exact_shift;
|
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
|
void
|
||||||
ngx_slab_init(ngx_slab_pool_t *pool)
|
ngx_slab_init(ngx_slab_pool_t *pool)
|
||||||
{
|
{
|
||||||
@ -91,16 +104,6 @@ ngx_slab_init(ngx_slab_pool_t *pool)
|
|||||||
ngx_uint_t i, n, pages;
|
ngx_uint_t i, n, pages;
|
||||||
ngx_slab_page_t *slots, *page;
|
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;
|
pool->min_size = (size_t) 1 << pool->min_shift;
|
||||||
|
|
||||||
slots = ngx_slab_slots(pool);
|
slots = ngx_slab_slots(pool);
|
||||||
|
@ -59,6 +59,7 @@ typedef struct {
|
|||||||
} ngx_slab_pool_t;
|
} ngx_slab_pool_t;
|
||||||
|
|
||||||
|
|
||||||
|
void ngx_slab_sizes_init(void);
|
||||||
void ngx_slab_init(ngx_slab_pool_t *pool);
|
void ngx_slab_init(ngx_slab_pool_t *pool);
|
||||||
void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size);
|
void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size);
|
||||||
void *ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size);
|
void *ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size);
|
||||||
|
Loading…
Reference in New Issue
Block a user