From 7d432fc911c8d9f747a643ca32f5417606ad6cb3 Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Fri, 29 May 2020 17:18:40 +0200 Subject: [PATCH] VMKernelAddressSpace: Let Dump() print all ranges. This makes the output of the aspace KDL command more useful as it shows reserved and free ranges in addition to areas. Change-Id: Id6353820b7c040fce6bfc3297c1b34adb1c9bb99 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2846 Reviewed-by: waddlesplash --- src/system/kernel/vm/VMKernelAddressSpace.cpp | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/system/kernel/vm/VMKernelAddressSpace.cpp b/src/system/kernel/vm/VMKernelAddressSpace.cpp index 5db4eb055a..f60364bf85 100644 --- a/src/system/kernel/vm/VMKernelAddressSpace.cpp +++ b/src/system/kernel/vm/VMKernelAddressSpace.cpp @@ -482,19 +482,35 @@ VMKernelAddressSpace::Dump() const { VMAddressSpace::Dump(); - kprintf("area_list:\n"); + kprintf("range list:\n"); for (RangeList::ConstIterator it = fRangeList.GetIterator(); Range* range = it.Next();) { - if (range->type != Range::RANGE_AREA) - continue; - VMKernelArea* area = range->area; - kprintf(" area %" B_PRId32 ": ", area->id); - kprintf("base_addr = %#" B_PRIxADDR " ", area->Base()); - kprintf("size = %#" B_PRIxSIZE " ", area->Size()); - kprintf("name = '%s' ", area->name); - kprintf("protection = %#" B_PRIx32 "\n", area->protection); + switch (range->type) { + case Range::RANGE_AREA: + { + VMKernelArea* area = range->area; + kprintf(" area %" B_PRId32 ": ", area->id); + kprintf("base_addr = %#" B_PRIxADDR " ", area->Base()); + kprintf("size = %#" B_PRIxSIZE " ", area->Size()); + kprintf("name = '%s' ", area->name); + kprintf("protection = %#" B_PRIx32 "\n", area->protection); + break; + } + + case Range::RANGE_RESERVED: + kprintf(" reserved: base_addr = %#" B_PRIxADDR + " reserved_base = %#" B_PRIxADDR " size = %#" + B_PRIxSIZE " flags = %#" B_PRIx32 "\n", range->base, + range->reserved.base, range->size, range->reserved.flags); + break; + + case Range::RANGE_FREE: + kprintf(" free: base_addr = %#" B_PRIxADDR " size = %#" + B_PRIxSIZE "\n", range->base, range->size); + break; + } } }