dovecot-2.0: liblib: Added pool_alloconly_get_total_used/alloc_s...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 20 17:17:28 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/d7108785c40a
changeset: 10787:d7108785c40a
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Feb 20 15:17:16 2010 +0200
description:
liblib: Added pool_alloconly_get_total_used/alloc_size() functions.

diffstat:

 src/lib/mempool-alloconly.c |  26 ++++++++++++++++++++++++++
 src/lib/mempool.h           |   7 +++++++
 2 files changed, 33 insertions(+), 0 deletions(-)

diffs (48 lines):

diff -r 07059f9aead8 -r d7108785c40a src/lib/mempool-alloconly.c
--- a/src/lib/mempool-alloconly.c	Sat Feb 20 15:16:40 2010 +0200
+++ b/src/lib/mempool-alloconly.c	Sat Feb 20 15:17:16 2010 +0200
@@ -410,3 +410,29 @@
 
 	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 -r 07059f9aead8 -r d7108785c40a src/lib/mempool.h
--- a/src/lib/mempool.h	Sat Feb 20 15:16:40 2010 +0200
+++ b/src/lib/mempool.h	Sat Feb 20 15:17:16 2010 +0200
@@ -106,4 +106,11 @@
 #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


More information about the dovecot-cvs mailing list