From: Maria Matejka Date: Fri, 15 Nov 2024 18:05:26 +0000 (+0100) Subject: Slab: Write out all block pointers when asked for dump X-Git-Tag: v2.16~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d85fa48e3a2e50d92a1e83a1202bced7b6b3d527;p=thirdparty%2Fbird.git Slab: Write out all block pointers when asked for dump --- diff --git a/lib/slab.c b/lib/slab.c index 571a3d957..6a4573a37 100644 --- a/lib/slab.c +++ b/lib/slab.c @@ -383,13 +383,33 @@ slab_dump(struct dump_request *dreq, resource *r) slab *s = (slab *) r; int ec=0, pc=0, fc=0; + RDUMP("(%d objs per %d bytes in page)\n", + s->objs_per_slab, s->obj_size); + + RDUMP("%*sempty:\n", dreq->indent+3, ""); WALK_TLIST(sl_head, h, &s->empty_heads) + { + RDUMP("%*s%p\n", dreq->indent+6, "", h); ec++; + } + + RDUMP("%*spartial:\n", dreq->indent+3, ""); WALK_TLIST(sl_head, h, &s->partial_heads) + { + RDUMP("%*s%p (", dreq->indent+6, "", h); + for (uint i=1; i<=s->head_bitfield_len; i++) + RDUMP("%08x", h->used_bits[s->head_bitfield_len-i]); + RDUMP(")\n"); pc++; + } + + RDUMP("%*sfull:\n", dreq->indent+3, ""); WALK_TLIST(sl_head, h, &s->full_heads) + { + RDUMP("%*s%p\n", dreq->indent+6, "", h); fc++; - RDUMP("(%de+%dp+%df blocks per %d objs per %d bytes)\n", ec, pc, fc, s->objs_per_slab, s->obj_size); + } + RDUMP("%*sempty=%d partial=%d total=%d\n", dreq->indent+3, "", ec, pc, fc); } static struct resmem