]> mj.ucw.cz Git - libucw.git/commitdiff
UCW: implemented ep_total_size (similar to mp_total_size)
authorPavel Charvat <pavel.charvat@netcentrum.cz>
Fri, 29 Feb 2008 18:05:51 +0000 (19:05 +0100)
committerPavel Charvat <pavel.charvat@netcentrum.cz>
Fri, 29 Feb 2008 18:05:51 +0000 (19:05 +0100)
lib/eltpool.c
lib/eltpool.h

index f82de845e56b925a0c27301e504350313b0d9053..b32843fc6ed360638094346db600c2aaba722867 100644 (file)
@@ -60,9 +60,16 @@ ep_alloc_slow(struct eltpool *pool)
     }
   ch->next = pool->first_chunk;
   pool->first_chunk = ch;
+  pool->num_chunks++;
   return p;
 }
 
+u64
+ep_total_size(struct eltpool *pool)
+{
+  return (u64)pool->num_chunks * pool->chunk_size + sizeof(*pool);
+}
+
 #ifdef TEST
 
 #include <stdio.h>
index 7e295fb7b0d4bbaa71acb90f42fc4b386a4993cc..795a45e997dc7957519fd5118ffb852b2ad93b07 100644 (file)
@@ -17,6 +17,7 @@ struct eltpool {
   uns chunk_size;
   uns elts_per_chunk;
   uns num_allocated;           // Just for debugging
+  uns num_chunks;
 };
 
 struct eltpool_chunk {
@@ -31,6 +32,7 @@ struct eltpool_free {
 struct eltpool *ep_new(uns elt_size, uns elts_per_chunk);
 void ep_delete(struct eltpool *pool);
 void *ep_alloc_slow(struct eltpool *pool);
+u64 ep_total_size(struct eltpool *pool);
 
 static inline void *
 ep_alloc(struct eltpool *pool)