From e459d4db582ecc9ce4c2cca14b3cf686e16d2cd0 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sat, 20 Feb 2010 15:17:16 +0200 Subject: [PATCH] liblib: Added pool_alloconly_get_total_used/alloc_size() functions. --HG-- branch : HEAD --- src/lib/mempool-alloconly.c | 26 ++++++++++++++++++++++++++ src/lib/mempool.h | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/src/lib/mempool-alloconly.c b/src/lib/mempool-alloconly.c index a34f9b73f4..f725fa8697 100644 --- a/src/lib/mempool-alloconly.c +++ b/src/lib/mempool-alloconly.c @@ -410,3 +410,29 @@ static size_t pool_alloconly_get_max_easy_alloc_size(pool_t pool) return apool->block->left; } + +size_t pool_alloconly_get_total_used_size(pool_t pool) +{ + struct alloconly_pool *apool = (struct alloconly_pool *)pool; + struct pool_block *block; + size_t size = 0; + + i_assert(pool->v == &static_alloconly_pool_vfuncs); + + for (block = apool->block; block != NULL; block = block->prev) + size += block->size - block->left; + return size; +} + +size_t pool_alloconly_get_total_alloc_size(pool_t pool) +{ + struct alloconly_pool *apool = (struct alloconly_pool *)pool; + struct pool_block *block; + size_t size = 0; + + i_assert(pool->v == &static_alloconly_pool_vfuncs); + + for (block = apool->block; block != NULL; block = block->prev) + size += block->size + SIZEOF_POOLBLOCK; + return size; +} diff --git a/src/lib/mempool.h b/src/lib/mempool.h index 0c1663ef6b..4accac73e9 100644 --- a/src/lib/mempool.h +++ b/src/lib/mempool.h @@ -106,4 +106,11 @@ size_t pool_get_exp_grown_size(pool_t pool, size_t old_size, size_t min_size); #define p_get_max_easy_alloc_size(pool) \ (pool)->v->get_max_easy_alloc_size(pool) +/* These functions are only for pools created with pool_alloconly_create(): */ + +/* Returns how much memory has been allocated from this pool. */ +size_t pool_alloconly_get_total_used_size(pool_t pool); +/* Returns how much system memory has been allocated for this pool. */ +size_t pool_alloconly_get_total_alloc_size(pool_t pool); + #endif -- 2.47.3