diff options
Diffstat (limited to 'src/core/ngx_slab.h')
-rw-r--r-- | src/core/ngx_slab.h | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/src/core/ngx_slab.h b/src/core/ngx_slab.h index f0e7da800..ea9e0ea25 100644 --- a/src/core/ngx_slab.h +++ b/src/core/ngx_slab.h @@ -12,32 +12,34 @@ #include <ngx_core.h> -typedef struct ngx_free_slab_s ngx_free_slab_t; +typedef struct ngx_slab_page_s ngx_slab_page_t; -typedef struct ngx_free_slab_s { - ngx_free_slab_t *next; -} - - -typedef struct ngx_slab_block_s ngx_slab_block_t; - -typedef struct ngx_slab_block_s { - ngx_free_slab_t *free; - ngx_slab_buf_t *next; - size_t color; +struct ngx_slab_page_s { + uintptr_t slab; + ngx_slab_page_t *next; + uintptr_t prev; }; typedef struct { - ngx_slab_buf_t *blocks; - size_t size; + ngx_atomic_t lock; + + size_t min_size; + size_t min_shift; - void *start; - uint32_t map; + ngx_slab_page_t *pages; + ngx_slab_page_t free; - ngx_log_t *log; - ngx_free_pool_t free; + u_char *start; + u_char *end; + + ngx_shmtx_t mutex; } ngx_slab_pool_t; +void ngx_slab_init(ngx_slab_pool_t *pool); +void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size); +void ngx_slab_free(ngx_slab_pool_t *pool, void *p); + + #endif /* _NGX_SLAB_H_INCLUDED_ */ |