aboutsummaryrefslogtreecommitdiff
path: root/mempool
diff options
context:
space:
mode:
author3gg <3gg@shellblade.net>2023-07-16 16:31:59 -0700
committer3gg <3gg@shellblade.net>2023-07-16 16:31:59 -0700
commitecc2645ba4c44005ef13e33c79059de69b76551f (patch)
tree0a440aa55cf81d61688bbd34dfe8f07c39e55171 /mempool
parentf48986597e6ff092feb0f18a79c6fa51a3f0e3bb (diff)
Add function to query pool capacity.
Diffstat (limited to 'mempool')
-rw-r--r--mempool/include/mempool.h4
-rw-r--r--mempool/src/mempool.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/mempool/include/mempool.h b/mempool/include/mempool.h
index b76ae7c..8251a70 100644
--- a/mempool/include/mempool.h
+++ b/mempool/include/mempool.h
@@ -80,6 +80,9 @@
80#define mempool_get_block_index(POOL, BLOCK_PTR) \ 80#define mempool_get_block_index(POOL, BLOCK_PTR) \
81 mempool_get_block_index_(&(POOL)->pool, BLOCK_PTR) 81 mempool_get_block_index_(&(POOL)->pool, BLOCK_PTR)
82 82
83/// Return the total capacity of the mempool in bytes.
84#define mempool_capacity(POOL) mempool_capacity_(&(POOL)->pool)
85
83/// Iterate over the used blocks of the pool. 86/// Iterate over the used blocks of the pool.
84/// 87///
85/// The caller can use 'i' as the index of the current block. 88/// The caller can use 'i' as the index of the current block.
@@ -133,3 +136,4 @@ void* mempool_alloc_(mempool*);
133void mempool_free_(mempool*, void** block_ptr); 136void mempool_free_(mempool*, void** block_ptr);
134void* mempool_get_block_(const mempool*, size_t block_index); 137void* mempool_get_block_(const mempool*, size_t block_index);
135size_t mempool_get_block_index_(const mempool*, const void* block); 138size_t mempool_get_block_index_(const mempool*, const void* block);
139size_t mempool_capacity_(const mempool*);
diff --git a/mempool/src/mempool.c b/mempool/src/mempool.c
index fdb5f8c..679f124 100644
--- a/mempool/src/mempool.c
+++ b/mempool/src/mempool.c
@@ -124,3 +124,8 @@ size_t mempool_get_block_index_(const mempool* pool, const void* block) {
124 assert(block_byte_index % pool->block_size_bytes == 0); 124 assert(block_byte_index % pool->block_size_bytes == 0);
125 return block_byte_index / pool->block_size_bytes; 125 return block_byte_index / pool->block_size_bytes;
126} 126}
127
128size_t mempool_capacity_(const mempool* pool) {
129 assert(pool);
130 return pool->num_blocks * pool->block_size_bytes;
131}