diff options
Diffstat (limited to 'src/memory')
| -rw-r--r-- | src/memory/arena.cpp | 7 |
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) { |
