diff options
author | Maria Matejka <mq@ucw.cz> | 2023-04-22 21:20:19 +0200 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2023-04-22 21:20:19 +0200 |
commit | 6230d87c74e3629e21f1e0fe22a874a58302a01e (patch) | |
tree | bf4f644bf583369de3445cfba336bb87dc8c9113 /lib | |
parent | 1141ce4e2d924f29e6e31ccf5e325f870c8895dd (diff) |
Protocols and tables now use the birdloop pools as primary
Diffstat (limited to 'lib')
-rw-r--r-- | lib/io-loop.h | 5 | ||||
-rw-r--r-- | lib/resource.c | 10 | ||||
-rw-r--r-- | lib/resource.h | 3 |
3 files changed, 15 insertions, 3 deletions
diff --git a/lib/io-loop.h b/lib/io-loop.h index 877cd5ce..b0d3d6cc 100644 --- a/lib/io-loop.h +++ b/lib/io-loop.h @@ -17,7 +17,7 @@ extern struct birdloop main_birdloop; /* Start a new birdloop owned by given pool and domain */ -struct birdloop *birdloop_new(pool *p, uint order, const char *name, btime max_latency); +struct birdloop *birdloop_new(pool *p, uint order, btime max_latency, const char *fmt, ...); /* Stop the loop. At the end, the @stopped callback is called unlocked in tail * position to finish cleanup. Run birdloop_free() from that callback to free @@ -32,6 +32,9 @@ event_list *birdloop_event_list(struct birdloop *loop); /* Get birdloop's time heap */ struct timeloop *birdloop_time_loop(struct birdloop *loop); +/* Get birdloop's pool */ +pool *birdloop_pool(struct birdloop *loop); + /* Enter and exit the birdloop */ void birdloop_enter(struct birdloop *loop); void birdloop_leave(struct birdloop *loop); diff --git a/lib/resource.c b/lib/resource.c index 0006bc8d..b1b89bdf 100644 --- a/lib/resource.c +++ b/lib/resource.c @@ -64,13 +64,19 @@ rp_new(pool *p, const char *name) } pool * -rp_newf(pool *p, const char *fmt, ...) +rp_vnewf(pool *p, const char *fmt, va_list args) { pool *z = rp_new(p, NULL); + z->name = mb_vsprintf(p, fmt, args); + return z; +} +pool * +rp_newf(pool *p, const char *fmt, ...) +{ va_list args; va_start(args, fmt); - z->name = mb_vsprintf(p, fmt, args); + pool *z = rp_vnewf(p, fmt, args); va_end(args); return z; diff --git a/lib/resource.h b/lib/resource.h index 64803778..2adb9de0 100644 --- a/lib/resource.h +++ b/lib/resource.h @@ -12,6 +12,8 @@ #include "lib/lists.h" +#include <stdarg.h> + struct resmem { size_t effective; /* Memory actually used for data storage */ size_t overhead; /* Overhead memory imposed by allocator strategies */ @@ -60,6 +62,7 @@ void *ralloc(pool *, struct resclass *); pool *rp_new(pool *, const char *); /* Create a new pool */ pool *rp_newf(pool *, const char *, ...); /* Create a new pool with a formatted string as its name */ +pool *rp_vnewf(pool *, const char *, va_list); /* Create a new pool with a formatted string as its name */ void rp_init(pool *, const char *); /* Init a new pool */ void rp_initf(pool *, const char *, ...); /* Init a new pool with a formatted string as its name */ static inline void rp_free(pool *p) { rfree(&p->r); } /* Free the whole pool */ |