slab allocator in shared memory
diff --git a/src/core/ngx_slab.h b/src/core/ngx_slab.h
index f0e7da8..ea9e0ea 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;
- void *start;
- uint32_t map;
+ size_t min_size;
+ size_t min_shift;
- ngx_log_t *log;
- ngx_free_pool_t free;
+ 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_ */