Igor Sysoev | d90282d | 2004-09-28 08:34:51 +0000 | [diff] [blame] | 1 | |
| 2 | /* |
Igor Sysoev | ff8da91 | 2004-09-29 16:00:49 +0000 | [diff] [blame] | 3 | * Copyright (C) Igor Sysoev |
Igor Sysoev | d90282d | 2004-09-28 08:34:51 +0000 | [diff] [blame] | 4 | */ |
| 5 | |
| 6 | |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 7 | #ifndef _NGX_SLAB_H_INCLUDED_ |
| 8 | #define _NGX_SLAB_H_INCLUDED_ |
| 9 | |
| 10 | |
| 11 | #include <ngx_config.h> |
| 12 | #include <ngx_core.h> |
| 13 | |
| 14 | |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 15 | typedef struct ngx_slab_page_s ngx_slab_page_t; |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 16 | |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 17 | struct ngx_slab_page_s { |
| 18 | uintptr_t slab; |
| 19 | ngx_slab_page_t *next; |
| 20 | uintptr_t prev; |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 21 | }; |
| 22 | |
| 23 | |
| 24 | typedef struct { |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 25 | ngx_atomic_t lock; |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 26 | |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 27 | size_t min_size; |
| 28 | size_t min_shift; |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 29 | |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 30 | ngx_slab_page_t *pages; |
| 31 | ngx_slab_page_t free; |
| 32 | |
| 33 | u_char *start; |
| 34 | u_char *end; |
| 35 | |
| 36 | ngx_shmtx_t mutex; |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 37 | } ngx_slab_pool_t; |
| 38 | |
| 39 | |
Igor Sysoev | 67cd336 | 2006-11-20 08:51:45 +0000 | [diff] [blame] | 40 | void ngx_slab_init(ngx_slab_pool_t *pool); |
| 41 | void *ngx_slab_alloc(ngx_slab_pool_t *pool, size_t size); |
| 42 | void ngx_slab_free(ngx_slab_pool_t *pool, void *p); |
| 43 | |
| 44 | |
Igor Sysoev | f924e6b | 2004-06-16 19:36:07 +0000 | [diff] [blame] | 45 | #endif /* _NGX_SLAB_H_INCLUDED_ */ |