diff options
author | Igor Sysoev <igor@sysoev.ru> | 2017-06-20 19:49:17 +0300 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2017-06-20 19:49:17 +0300 |
commit | f888a5310c1808902b4035ca3454b62bc5cf4434 (patch) | |
tree | 7425e11cdba27420d21468b0f79787834bd3c498 /src/nxt_mem_pool.h | |
parent | c7ab908c19242a5ddd0233e123e8c2be210b3c02 (diff) | |
download | unit-f888a5310c1808902b4035ca3454b62bc5cf4434.tar.gz unit-f888a5310c1808902b4035ca3454b62bc5cf4434.tar.bz2 |
Using new memory pool implementation.
Diffstat (limited to 'src/nxt_mem_pool.h')
-rw-r--r-- | src/nxt_mem_pool.h | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/src/nxt_mem_pool.h b/src/nxt_mem_pool.h deleted file mode 100644 index a896956c..00000000 --- a/src/nxt_mem_pool.h +++ /dev/null @@ -1,150 +0,0 @@ - -/* - * Copyright (C) Igor Sysoev - * Copyright (C) NGINX, Inc. - */ - -#ifndef _NXT_MEM_POOL_H_INCLUDED_ -#define _NXT_MEM_POOL_H_INCLUDED_ - - -#define NXT_MEM_POOL_MIN_EXT_SIZE nxt_pagesize - - -typedef void (*nxt_mem_pool_cleanup_handler_t)(nxt_task_t *task, void *data); -typedef struct nxt_mem_pool_cleanup_s nxt_mem_pool_cleanup_t; -typedef struct nxt_mem_pool_cache_s nxt_mem_pool_cache_t; -typedef struct nxt_mem_pool_chunk_s nxt_mem_pool_chunk_t; -typedef struct nxt_mem_pool_ext_s nxt_mem_pool_ext_t; - - -struct nxt_mem_pool_cleanup_s { - nxt_mem_pool_cleanup_handler_t handler; - void *data; - nxt_mem_pool_cleanup_t *next; -}; - - -struct nxt_mem_pool_ext_s { - void *data; - nxt_mem_pool_ext_t *next; -}; - - -struct nxt_mem_pool_chunk_s { - u_char *free; - u_char *end; - nxt_mem_pool_chunk_t *next; - uint32_t fails; /* 8 bits */ -}; - - -struct nxt_mem_pool_cache_s { - uint32_t size; - uint32_t nalloc; - void *free; - nxt_mem_pool_cache_t *next; -}; - - -struct nxt_mem_pool_s { - nxt_mem_pool_chunk_t chunk; - uint32_t min_ext_size; - uint32_t chunk_size; - nxt_mem_pool_chunk_t *current; - nxt_mem_pool_ext_t *ext; - nxt_mem_pool_cache_t *cache; - nxt_mem_pool_cleanup_t *cleanup; - -#if (NXT_DEBUG) - nxt_pid_t pid; - nxt_tid_t tid; -#endif -}; - - -NXT_EXPORT nxt_mem_pool_t *nxt_mem_pool_create(size_t size) - NXT_MALLOC_LIKE; -NXT_EXPORT void nxt_mem_pool_destroy(nxt_mem_pool_t *mp); - - -/* - * Generic aligned allocation, suitable for struct allocations - * without "long double" and SIMD values. - */ -#define \ -nxt_mem_alloc(mp, size) \ - nxt_mem_align((mp), NXT_ALIGNMENT, (size)) - - -NXT_EXPORT void *nxt_mem_align(nxt_mem_pool_t *mp, size_t alignment, - size_t size) - NXT_MALLOC_LIKE; - -NXT_EXPORT void *nxt_mem_zalign(nxt_mem_pool_t *mp, size_t alignment, - size_t size) - NXT_MALLOC_LIKE; - -NXT_EXPORT void *nxt_mem_nalloc(nxt_mem_pool_t *mp, size_t size) - NXT_MALLOC_LIKE; - -NXT_EXPORT void *nxt_mem_zalloc(nxt_mem_pool_t *mp, size_t size) - NXT_MALLOC_LIKE; - - -/* - * nxt_mem_buf() is intended to allocate I/O buffers. - * Unix network buffers usually have no size restrictions, so - * NXT_MEM_BUF_CUTBACK and NXT_MEM_BUF_USABLE options allow to - * utilize better allocated memory (details in unix/nxt_malloc.h). - * Windows locks buffers in kernel memory on page basis for both - * network and file operations, so nxt_mem_buf() should minimize - * number of allocated pages. However, these allocations are not - * necessary page-aligned. - */ -#define NXT_MEM_BUF_CUTBACK 1 -#define NXT_MEM_BUF_USABLE 2 - -NXT_EXPORT void *nxt_mem_buf(nxt_mem_pool_t *mp, size_t *sizep, - nxt_uint_t flags); - - -/* - * Aligned allocation, suitable for generic allocations compatible - * with malloc() alignment. - */ -#define \ -nxt_mem_malloc(mp, size) \ - nxt_mem_align((mp), NXT_MAX_ALIGNMENT, (size)) - - -NXT_EXPORT nxt_int_t nxt_mem_free(nxt_mem_pool_t *mp, void *p); -NXT_EXPORT nxt_mem_pool_cleanup_t *nxt_mem_pool_cleanup(nxt_mem_pool_t *mp, - size_t size); - -NXT_EXPORT void *nxt_mem_cache_alloc0(nxt_mem_pool_t *mp, size_t size) - NXT_MALLOC_LIKE; -NXT_EXPORT void *nxt_mem_cache_zalloc0(nxt_mem_pool_t *mp, size_t size) - NXT_MALLOC_LIKE; -NXT_EXPORT void nxt_mem_cache_free0(nxt_mem_pool_t *mp, void *p, size_t size); - -NXT_EXPORT void *nxt_mem_lvlhsh_alloc(void *ctx, size_t size, - nxt_uint_t nalloc); -NXT_EXPORT void nxt_mem_lvlhsh_free(void *ctx, void *p, size_t size); - - -#if (NXT_DEBUG) - -#define \ -nxt_mem_pool_debug_lock(_mp, _tid) \ - (_mp->tid) = _tid - -#else - -#define \ -nxt_mem_pool_debug_lock(_mp, _tid) - -#endif - - -#endif /* _NXT_MEM_POOL_H_INCLUDED_ */ |