summaryrefslogtreecommitdiff
path: root/src/memory/arena.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory/arena.cpp')
-rw-r--r--src/memory/arena.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/memory/arena.cpp b/src/memory/arena.cpp
index 450ac4f2..1e82e064 100644
--- a/src/memory/arena.cpp
+++ b/src/memory/arena.cpp
@@ -23,7 +23,8 @@ Arena::Arena(std::size_t block_size,
}
Arena::~Arena() {
- // TODO: assert queue is full?
+ // We shouldn't have any blocks in use when destroying an arena.
+ assert(uxQueueSpacesAvailable(free_blocks_) == 0);
vQueueDelete(free_blocks_);
free(pool_);
}
@@ -44,6 +45,10 @@ auto Arena::Return(ArenaPtr ptr) -> void {
xQueueSend(free_blocks_, &ptr.start, 0);
}
+auto Arena::BlocksFree() -> std::size_t {
+ return uxQueueMessagesWaiting(free_blocks_);
+}
+
auto ArenaRef::Acquire(Arena* a) -> std::optional<ArenaRef> {
auto ptr = a->Acquire();
if (ptr) {