summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2023-04-22 21:20:19 +0200
committerMaria Matejka <mq@ucw.cz>2023-04-22 21:20:19 +0200
commit6230d87c74e3629e21f1e0fe22a874a58302a01e (patch)
treebf4f644bf583369de3445cfba336bb87dc8c9113 /lib
parent1141ce4e2d924f29e6e31ccf5e325f870c8895dd (diff)
Protocols and tables now use the birdloop pools as primary
Diffstat (limited to 'lib')
-rw-r--r--lib/io-loop.h5
-rw-r--r--lib/resource.c10
-rw-r--r--lib/resource.h3
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 */