Author: axeld Date: 2010-03-03 16:15:49 +0100 (Wed, 03 Mar 2010) New Revision: 35737 Changeset: http://dev.haiku-os.org/changeset/35737/haiku Modified: haiku/trunk/src/system/kernel/slab/Slab.cpp Log: * The slab_cache command now also dumps the actual slab lists. Modified: haiku/trunk/src/system/kernel/slab/Slab.cpp =================================================================== --- haiku/trunk/src/system/kernel/slab/Slab.cpp 2010-03-03 14:54:46 UTC (rev 35736) +++ haiku/trunk/src/system/kernel/slab/Slab.cpp 2010-03-03 15:15:49 UTC (rev 35737) @@ -198,6 +198,14 @@ // #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 @@ 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);