Update and clean Tomato RAF files
[tomato.git] / release / src / router / nginx / src / core / ngx_slab.h
blobc5e420bfa8e31a1a467d4127b2583f7e91b08ae0
2 /*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
5 */
8 #ifndef _NGX_SLAB_H_INCLUDED_
9 #define _NGX_SLAB_H_INCLUDED_
12 #include <ngx_config.h>
13 #include <ngx_core.h>
16 typedef struct ngx_slab_page_s ngx_slab_page_t;
18 struct ngx_slab_page_s {
19 uintptr_t slab;
20 ngx_slab_page_t *next;
21 uintptr_t prev;
25 typedef struct {
26 ngx_shmtx_sh_t lock;
28 size_t min_size;
29 size_t min_shift;
31 ngx_slab_page_t *pages;
32 ngx_slab_page_t free;
34 u_char *start;
35 u_char *end;
37 ngx_shmtx_t mutex;
39 u_char *log_ctx;
40 u_char zero;
42 void *data;
43 void *addr;
44 } ngx_slab_pool_t;
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);
54 #endif /* _NGX_SLAB_H_INCLUDED_ */