From 47ae601d417d0ef99eb6fe433ef695614d8d2786 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 21 Feb 2023 14:40:18 +1100 Subject: Tidy up pipeline and use arena capacity to test for overruns --- src/memory/arena.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/memory/arena.cpp') 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 { auto ptr = a->Acquire(); if (ptr) { -- cgit v1.2.3