From 385b3ea3956aefc2868cdd838fc0a90f1d8a7857 Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Tue, 30 Nov 2021 18:16:49 +0100 Subject: For safer memory allocations, resources are bound to loops. Also all loops have their basic resource pool for allocations which are auto-freed when the loop is stopping. --- lib/resource.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'lib/resource.h') diff --git a/lib/resource.h b/lib/resource.h index 26030aea..7adde493 100644 --- a/lib/resource.h +++ b/lib/resource.h @@ -34,10 +34,16 @@ struct resclass { /* Generic resource manipulation */ -typedef struct pool pool; +typedef struct pool { + resource r; + list inside; + struct pool_pages *pages; + struct birdloop *loop; + const char *name; +} pool; void resource_init(void); -pool *rp_new(pool *, const char *); /* Create new pool */ + void rfree(void *); /* Free single resource */ void rdump(void *); /* Dump to debug output */ size_t rmemsize(void *res); /* Return size of memory used by the resource */ @@ -46,6 +52,11 @@ void rmove(void *, pool *); /* Move to a different pool */ void *ralloc(pool *, struct resclass *); +pool *rp_new(pool *, struct birdloop *loop, const char *); /* Create new pool */ +void rp_free(pool *p, pool *parent); /* Free parent pool */ +size_t rp_memsize(pool *p); /* Return size of memory used by the pool */ +void rp_dump(pool *p); /* Dump pool to debug output */ + extern pool root_pool; /* Normal memory blocks */ -- cgit v1.2.3