From 88f1263865ec2896f16566c335ed95f7a81a2d50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 3 Mar 2010 15:15:49 +0000 Subject: [PATCH] * The slab_cache command now also dumps the actual slab lists. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35737 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/slab/Slab.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/system/kernel/slab/Slab.cpp b/src/system/kernel/slab/Slab.cpp index efb77f61fd..4bc588f098 100644 --- a/src/system/kernel/slab/Slab.cpp +++ b/src/system/kernel/slab/Slab.cpp @@ -198,6 +198,14 @@ class Reserve : public ObjectCacheTraceEntry { // #pragma mark - +static void +dump_slab(::slab* slab) +{ + kprintf(" %p %p %6" B_PRIuSIZE " %6" B_PRIuSIZE " %6" B_PRIuSIZE " %p\n", + slab, slab->pages, slab->size, slab->count, slab->offset, slab->free); +} + + static int dump_slabs(int argc, char* argv[]) { @@ -244,6 +252,26 @@ dump_cache_info(int argc, char* argv[]) kprintf("resize entry don't wait: %p\n", cache->resize_entry_dont_wait); kprintf("resize entry can wait: %p\n", cache->resize_entry_can_wait); + kprintf(" slab chunk size used offset free\n"); + + SlabList::Iterator iterator = cache->empty.GetIterator(); + if (iterator.HasNext()) + kprintf("empty:\n"); + while (::slab* slab = iterator.Next()) + dump_slab(slab); + + iterator = cache->partial.GetIterator(); + if (iterator.HasNext()) + kprintf("partial:\n"); + while (::slab* slab = iterator.Next()) + dump_slab(slab); + + iterator = cache->full.GetIterator(); + if (iterator.HasNext()) + kprintf("full:\n"); + while (::slab* slab = iterator.Next()) + dump_slab(slab); + if ((cache->flags & CACHE_NO_DEPOT) == 0) { kprintf("depot:\n"); dump_object_depot(&cache->depot);