diff options
Diffstat (limited to 'src/core/ngx_slab.h')
-rw-r--r-- | src/core/ngx_slab.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/core/ngx_slab.h b/src/core/ngx_slab.h new file mode 100644 index 000000000..ea9e0ea25 --- /dev/null +++ b/src/core/ngx_slab.h @@ -0,0 +1,45 @@ + +/* + * Copyright (C) Igor Sysoev + */ + + +#ifndef _NGX_SLAB_H_INCLUDED_ +#define _NGX_SLAB_H_INCLUDED_ + + +#include <ngx_config.h> +#include <ngx_core.h> + + +typedef struct ngx_slab_page_s ngx_slab_page_t; + +struct ngx_slab_page_s { + uintptr_t slab; + ngx_slab_page_t *next; + uintptr_t prev; +}; + + +typedef struct { + ngx_atomic_t lock; + + size_t min_size; + size_t min_shift; + + ngx_slab_page_t *pages; + ngx_slab_page_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_ */ |