diff options
Diffstat (limited to 'lib/alloc/arena_free.c')
-rw-r--r-- | lib/alloc/arena_free.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/alloc/arena_free.c b/lib/alloc/arena_free.c new file mode 100644 index 0000000..dc2b45e --- /dev/null +++ b/lib/alloc/arena_free.c @@ -0,0 +1,20 @@ +#include <sys/mman.h> + +#include <stdlib.h> + +#include "alloc.h" +#include "macros.h" + +void +arena_free(arena *a) +{ + ASSUME(a != nullptr); + + struct _region *cur, *next; + for (cur = a->_head; cur != nullptr; cur = next) { + next = cur->next; + munmap(cur->data, cur->cap); + free(cur); + } + a->_head = nullptr; +} |