Lines Matching refs:size
31 size_t size;
55 static void *pool_alloconly_malloc(pool_t pool, size_t size);
62 static void block_alloc(struct alloconly_pool *pool, size_t size);
92 used_size = block->size - block->left;
96 i_panic("mempool-alloconly: saved alloc size broken");
111 for (; i < block->size; i++) {
120 pool_t pool_alloconly_create(const char *name ATTR_UNUSED, size_t size)
136 if (size < min_alloc)
137 size = nearest_power(size + min_alloc);
138 block_alloc(&apool, size);
152 new_apool->base_size = new_apool->block->size - new_apool->block->left;
161 pool_t pool_alloconly_create_clean(const char *name, size_t size)
166 pool = pool_alloconly_create(name, size);
182 safe_memset(block, CLEAR_CHR, SIZEOF_POOLBLOCK + apool->block->size);
186 SIZEOF_POOLBLOCK + apool->block->size);
225 static void block_alloc(struct alloconly_pool *apool, size_t size)
229 i_assert(size > SIZEOF_POOLBLOCK);
230 i_assert(size <= SSIZE_T_MAX);
233 /* each block is at least twice the size of the previous one */
234 if (size <= apool->block->size)
235 size += apool->block->size;
237 /* avoid crashing in nearest_power() if size is too large */
238 size = I_MIN(size, SSIZE_T_MAX);
239 size = nearest_power(size);
240 /* nearest_power() could have grown size to SSIZE_T_MAX+1 */
241 size = I_MIN(size, SSIZE_T_MAX);
249 apool->name, size);
254 block = calloc(size, 1);
257 "): Out of memory", size);
262 block->size = size - SIZEOF_POOLBLOCK;
263 block->left = block->size;
266 static void *pool_alloconly_malloc(pool_t pool, size_t size)
272 if (unlikely(size == 0 || size > SSIZE_T_MAX - POOL_ALLOCONLY_MAX_EXTRA))
273 i_panic("Trying to allocate %"PRIuSIZE_T" bytes", size);
276 alloc_size = MEM_ALIGN(size);
278 alloc_size = MEM_ALIGN(sizeof(size)) + MEM_ALIGN(size + SENTRY_COUNT);
287 (apool->block->size - apool->block->left);
292 memcpy(mem, &size, sizeof(size));
293 mem = PTR_OFFSET(mem, MEM_ALIGN(sizeof(size)));
295 memset(PTR_OFFSET(mem, size), CLEAR_CHR,
296 MEM_ALIGN(size + SENTRY_COUNT) - size);
307 (apool->block->size - apool->block->left -
315 static bool pool_try_grow(struct alloconly_pool *apool, void *mem, size_t size)
319 (apool->block->size - apool->block->left -
322 if (apool->block->left >= size-apool->block->last_alloc_size) {
323 /* just shrink the available size */
325 size - apool->block->last_alloc_size;
326 apool->block->last_alloc_size = size;
379 safe_memset(block, CLEAR_CHR, SIZEOF_POOLBLOCK + block->size);
383 SIZEOF_POOLBLOCK + block->size);
395 avail_size = apool->block->size - base_size;
413 size_t size = 0;
418 size += block->size - block->left;
419 return size;
426 size_t size = 0;
431 size += block->size + SIZEOF_POOLBLOCK;
432 return size;