From: Timo Sirainen Date: Sat, 20 Feb 2010 13:17:16 +0000 (+0200) Subject: liblib: Added pool_alloconly_get_total_used/alloc_size() functions. X-Git-Tag: 2.0.beta3~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e459d4db582ecc9ce4c2cca14b3cf686e16d2cd0;p=thirdparty%2Fdovecot%2Fcore.git liblib: Added pool_alloconly_get_total_used/alloc_size() functions. --HG-- branch : HEAD --- 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