Return to ngx_slab.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / nginx / src / core |
1.1 ! misho 1: ! 2: /* ! 3: * Copyright (C) Igor Sysoev ! 4: * Copyright (C) Nginx, Inc. ! 5: */ ! 6: ! 7: ! 8: #ifndef _NGX_SLAB_H_INCLUDED_ ! 9: #define _NGX_SLAB_H_INCLUDED_ ! 10: ! 11: ! 12: #include <ngx_config.h> ! 13: #include <ngx_core.h> ! 14: ! 15: ! 16: typedef struct ngx_slab_page_s ngx_slab_page_t; ! 17: ! 18: struct ngx_slab_page_s { ! 19: uintptr_t slab; ! 20: ngx_slab_page_t *next; ! 21: uintptr_t prev; ! 22: }; ! 23: ! 24: ! 25: typedef struct { ! 26: ngx_shmtx_sh_t lock; ! 27: ! 28: size_t min_size; ! 29: size_t min_shift; ! 30: ! 31: ngx_slab_page_t *pages; ! 32: ngx_slab_page_t free; ! 33: ! 34: u_char *start; ! 35: u_char *end; ! 36: ! 37: ngx_shmtx_t mutex; ! 38: ! 39: u_char *log_ctx; ! 40: u_char zero; ! 41: ! 42: void *data; ! 43: void *addr; ! 44: } ngx_slab_pool_t; ! 45: ! 46: ! 47: void ngx_slab_init(ngx_slab_pool_t *pool); ! 48: void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size); ! 49: void *ngx_slab_alloc_locked(ngx_slab_pool_t *pool, size_t size); ! 50: void ngx_slab_free(ngx_slab_pool_t *pool, void *p); ! 51: void ngx_slab_free_locked(ngx_slab_pool_t *pool, void *p); ! 52: ! 53: ! 54: #endif /* _NGX_SLAB_H_INCLUDED_ */