Add a priority to BUDDY_POOL_INIT()

For clarity and to not overlook it, pools should have a proper default
priority. The fill callback can still change it.
parent ce8aba01
......@@ -2975,7 +2975,7 @@ t_pool(void)
BUDDYF(mmap), NULL);
rets = BUDDY_RETURNS_STK(buddy, 8);
BUDDY_POOL_INIT(pool, buddy, t_pool_fill, NULL);
BUDDY_POOL_INIT(pool, buddy, 0, t_pool_fill, NULL);
for (u = 0; u < 42; u++) {
reqs = t_pool_s_get(pool, NULL);
......
......@@ -644,11 +644,13 @@ name ## _avail(struct name *poolp) \
return (avail); \
}
#define BUDDY_POOL_INIT(poolp, b, f, p) do { \
#define BUDDY_POOL_INIT(poolp, b, prio, f, p) do { \
INIT_OBJ(poolp, BUDDY_POOL_MAGIC); \
poolp->fill = f; \
BUDDY_REQS_INIT(&(poolp)->reqs[0], b); \
BUDDY_REQS_INIT(&(poolp)->reqs[1], b); \
BUDDY_REQS_PRI(&(poolp)->reqs[0].reqs, prio); \
BUDDY_REQS_PRI(&(poolp)->reqs[1].reqs, prio); \
f(&(poolp)->reqs[0].reqs, p); \
f(&(poolp)->reqs[1].reqs, p); \
(void) BUDDYF(alloc_async)(&(poolp)->reqs[0].reqs); \
......
......@@ -2001,8 +2001,6 @@ logbuffer_fill_ffpool(struct buddy_reqs *reqs, const void *priv)
CHECK_OBJ_NOTNULL(reqs, BUDDY_REQS_MAGIC);
CAST_OBJ_NOTNULL(lbuf, priv, FELLOW_LOGBUFFER_MAGIC);
BUDDY_REQS_PRI(reqs, FEP_MEM_LOG);
for (u = 0; u < reqs->space; u++)
AN(buddy_req_extent(reqs, sizeof *lbuf->ff, 0));
}
......@@ -2171,8 +2169,6 @@ logbuffer_fill_mempool(struct buddy_reqs *reqs, const void *priv)
(void) priv;
BUDDY_REQS_PRI(reqs, FEP_MEM_LOG);
for (u = 0; u < reqs->space; u++)
AN(buddy_req_page(reqs, MIN_FELLOW_BITS, 0));
}
......@@ -2199,9 +2195,9 @@ logbuffer_init(struct fellow_fd *ffd, struct fellow_logbuffer *lbuf,
assert(b <= UINT8_MAX);
logbuffer_grow(lbuf, (uint8_t)b);
BUDDY_POOL_INIT(lbuf->mempool, lbuf->membuddy,
BUDDY_POOL_INIT(lbuf->mempool, lbuf->membuddy, FEP_MEM_LOG,
logbuffer_fill_mempool, lbuf);
BUDDY_POOL_INIT(lbuf->ffpool, lbuf->membuddy,
BUDDY_POOL_INIT(lbuf->ffpool, lbuf->membuddy, FEP_MEM_LOG,
logbuffer_fill_ffpool, lbuf);
lbuf->state = LBUF_INIT;
......@@ -2216,9 +2212,9 @@ logbuffer_take(struct fellow_logbuffer *to, struct fellow_logbuffer *from)
{
logbuffer_wait_flush_fini(from);
*to = *from;
BUDDY_POOL_INIT(to->mempool, from->membuddy,
BUDDY_POOL_INIT(to->mempool, from->membuddy, FEP_MEM_LOG,
logbuffer_fill_mempool, to);
BUDDY_POOL_INIT(to->ffpool, from->membuddy,
BUDDY_POOL_INIT(to->ffpool, from->membuddy, FEP_MEM_LOG,
logbuffer_fill_ffpool, to);
logbuffer_fini_dskpool_mem(from);
......@@ -2395,7 +2391,7 @@ logbuffer_prep_dskpool(struct fellow_logbuffer *lbuf, unsigned urgent)
assert(alloc.size >= sizeof *lbuf->dskpool);
dskpool = alloc.ptr;
BUDDY_POOL_INIT(dskpool, lbuf->dskbuddy,
BUDDY_POOL_INIT(dskpool, lbuf->dskbuddy, FEP_DSK_LOG,
logbuffer_fill_dskpool, lbuf);
lbuf->dskpool = dskpool;
}
......
......@@ -138,8 +138,6 @@ dlechg_pool_fill(struct buddy_reqs *reqs, const void *priv)
CHECK_OBJ_NOTNULL(reqs, BUDDY_REQS_MAGIC);
(void) priv;
BUDDY_REQS_PRI(reqs, FEP_MEM_DLECHG);
for (u = 0; u < reqs->space; u++)
AN(buddy_req_extent(reqs, sizeof(struct fellow_dlechg), 0));
}
......@@ -187,7 +185,8 @@ fellow_dlechg_top_init(struct fellow_dlechg_top *fdct, buddy_t *buddy)
fdct->buddy = buddy;
VRBT_INIT(&fdct->head);
VSLIST_INIT(&fdct->free);
BUDDY_POOL_INIT(fdct->pool, buddy, dlechg_pool_fill, NULL);
BUDDY_POOL_INIT(fdct->pool, buddy, FEP_MEM_DLECHG,
dlechg_pool_fill, NULL);
}
enum fellow_dlechg_consistency {
......
......@@ -151,8 +151,6 @@ regl_fill(struct buddy_reqs *reqs, const void *priv)
CHECK_OBJ_NOTNULL(reqs, BUDDY_REQS_MAGIC);
(void) priv;
BUDDY_REQS_PRI(reqs, FEP_MEM_FREE);
for (u = 0; u < reqs->space; u++)
AN(buddy_req_page(reqs, regl_bits, regl_bits_cram));
}
......@@ -202,7 +200,7 @@ regionlist_alloc(buddy_t *membuddy)
INIT_OBJ(rl, REGIONLIST_MAGIC);
VSTAILQ_INIT(&rl->head);
BUDDY_POOL_INIT(rl->pool, membuddy, regl_fill, NULL);
BUDDY_POOL_INIT(rl->pool, membuddy, FEP_MEM_FREE, regl_fill, NULL);
r = regl_init(alloc, sizeof(*rl));
AN(r);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment