Lines Matching refs:apool

122 	struct alloconly_pool apool, *new_apool;
132 i_zero(&apool);
133 apool.pool = static_alloconly_pool;
134 apool.refcount = 1;
138 block_alloc(&apool, size);
141 new_apool = p_new(&apool.pool, struct alloconly_pool, 1);
142 *new_apool = apool;
163 struct alloconly_pool *apool;
167 apool = (struct alloconly_pool *)pool;
168 apool->clean_frees = TRUE;
172 static void pool_alloconly_destroy(struct alloconly_pool *apool)
177 pool_alloconly_clear(&apool->pool);
180 block = apool->block;
182 safe_memset(block, CLEAR_CHR, SIZEOF_POOLBLOCK + apool->block->size);
184 if (apool->clean_frees) {
186 SIZEOF_POOLBLOCK + apool->block->size);
196 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
198 return apool->name;
206 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
208 apool->refcount++;
213 struct alloconly_pool *apool = (struct alloconly_pool *)*pool;
219 if (--apool->refcount > 0)
222 pool_alloconly_destroy(apool);
225 static void block_alloc(struct alloconly_pool *apool, size_t size)
232 if (apool->block != NULL) {
234 if (size <= apool->block->size)
235 size += apool->block->size;
243 if (!apool->disable_warning) {
249 apool->name, size);
259 block->prev = apool->block;
260 apool->block = block;
268 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
281 if (apool->block->left < alloc_size) {
283 block_alloc(apool, alloc_size + SIZEOF_POOLBLOCK);
286 mem = POOL_BLOCK_DATA(apool->block) +
287 (apool->block->size - apool->block->left);
289 apool->block->left -= alloc_size;
290 apool->block->last_alloc_size = alloc_size;
303 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
306 if (POOL_BLOCK_DATA(apool->block) +
307 (apool->block->size - apool->block->left -
308 apool->block->last_alloc_size) == mem) {
309 memset(mem, 0, apool->block->last_alloc_size);
310 apool->block->left += apool->block->last_alloc_size;
311 apool->block->last_alloc_size = 0;
315 static bool pool_try_grow(struct alloconly_pool *apool, void *mem, size_t size)
318 if (POOL_BLOCK_DATA(apool->block) +
319 (apool->block->size - apool->block->left -
320 apool->block->last_alloc_size) == mem) {
322 if (apool->block->left >= size-apool->block->last_alloc_size) {
324 apool->block->left -=
325 size - apool->block->last_alloc_size;
326 apool->block->last_alloc_size = size;
337 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
352 if (!pool_try_grow(apool, mem, new_size)) {
364 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
369 check_sentries(apool->block);
374 while (apool->block->prev != NULL) {
375 block = apool->block;
376 apool->block = block->prev;
381 if (apool->clean_frees) {
391 base_size = apool->base_size;
395 avail_size = apool->block->size - base_size;
396 memset(PTR_OFFSET(POOL_BLOCK_DATA(apool->block), base_size), 0,
397 avail_size - apool->block->left);
398 apool->block->left = avail_size;
399 apool->block->last_alloc_size = 0;
404 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
406 return apool->block->left;
411 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
417 for (block = apool->block; block != NULL; block = block->prev)
424 struct alloconly_pool *apool = (struct alloconly_pool *)pool;
430 for (block = apool->block; block != NULL; block = block->prev)