28#if defined(MAP_ANON) && ! defined(MAP_ANONYMOUS)
29#define MAP_ANONYMOUS MAP_ANON
32#define MAP_FAILED ((void*) -1)
38#define ALIGN_SIZE (2 * sizeof(void*))
43#define ROUND_TO_ALIGN(n) ((n + (ALIGN_SIZE - 1)) & (~(ALIGN_SIZE - 1)))
104 struct MemoryPool *pool;
106 pool = malloc (
sizeof (
struct MemoryPool));
109#if defined(MAP_ANONYMOUS) || defined(_WIN32)
110 if (max <= 32 * 1024)
113#if defined(MAP_ANONYMOUS) && ! defined(_WIN32)
130 (
NULL == pool->memory))
132 pool->memory = malloc (max);
133 if (
NULL == pool->memory)
138 pool->is_mmap =
false;
142 pool->is_mmap =
true;
164#if defined(MAP_ANONYMOUS) && ! defined(_WIN32)
187 return (pool->end - pool->pos);
211 if ( (0 ==
asize) && (0 != size) )
213 if ( (pool->pos +
asize > pool->end) ||
218 ret = &pool->memory[pool->end -
asize];
223 ret = &pool->memory[pool->pos];
261 (pool->end <
asize) )
273 memset (&pool->memory[pool->pos],
283 if ((pool->pos +
asize >= pool->pos) &&
287 ret = &pool->memory[pool->pos];
320 (
keep != pool->memory) )
328 pool->end = pool->size;
void * MHD_pool_reallocate(struct MemoryPool *pool, void *old, size_t old_size, size_t new_size)
void MHD_pool_destroy(struct MemoryPool *pool)
size_t MHD_pool_get_free(struct MemoryPool *pool)
void * MHD_pool_reset(struct MemoryPool *pool, void *keep, size_t copy_bytes, size_t new_size)
struct MemoryPool * MHD_pool_create(size_t max)
void * MHD_pool_allocate(struct MemoryPool *pool, size_t size, int from_end)
#define ROUND_TO_ALIGN(n)
_MHD_EXTERN void MHD_free(void *ptr)
memory pool; mostly used for efficient (de)allocation for each connection and bounding memory use for...