summaryrefslogtreecommitdiff
path: root/vm/vm_object.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2025-02-26 01:20:54 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2025-02-26 01:21:15 +0100
commitd8fd7d256e412d3b19f7f2291ae95fbb0f6794ec (patch)
tree14f403bb2db0eebe1f73299c454b338cb26a8b56 /vm/vm_object.c
parent49ce8c942fd302206a7b161f0622ff8bc075dbcd (diff)
vm_map_print: show the number of wired pagesv1.8+git20250304
Diffstat (limited to 'vm/vm_object.c')
-rw-r--r--vm/vm_object.c40
1 files changed, 32 insertions, 8 deletions
diff --git a/vm/vm_object.c b/vm/vm_object.c
index 623c8af6..10e4f453 100644
--- a/vm/vm_object.c
+++ b/vm/vm_object.c
@@ -2955,12 +2955,14 @@ boolean_t vm_object_print_pages = FALSE;
/*
* vm_object_print: [ debug ]
*/
-void vm_object_print(
- vm_object_t object)
+void vm_object_print_part(
+ vm_object_t object,
+ vm_offset_t offset,
+ vm_size_t size)
{
vm_page_t p;
- int count;
+ int count, count2;
if (object == VM_OBJECT_NULL)
return;
@@ -2991,18 +2993,34 @@ void vm_object_print(
(vm_offset_t) object->shadow, (vm_offset_t) object->shadow_offset);
printf("copy=0x%X\n", (vm_offset_t) object->copy);
+ count = 0;
+ count2 = 0;
+ p = (vm_page_t) queue_first(&object->memq);
+ while (!queue_end(&object->memq, (queue_entry_t) p)) {
+ if (p->offset >= offset && p->offset + PAGE_SIZE <= size) {
+ if (p->wire_count)
+ count++;
+ count2++;
+ }
+ p = (vm_page_t) queue_next(&p->listq);
+ }
+ iprintf("wired: %d/%d\n", count, count2);
+
indent += 1;
if (vm_object_print_pages) {
count = 0;
p = (vm_page_t) queue_first(&object->memq);
while (!queue_end(&object->memq, (queue_entry_t) p)) {
- if (count == 0) iprintf("memory:=");
- else if (count == 4) {printf("\n"); iprintf(" ..."); count = 0;}
- else printf(",");
- count++;
+ if (p->offset >= offset && p->offset + PAGE_SIZE <= size) {
+ if (count == 0) iprintf("memory:=");
+ else if (count == 4) {printf("\n"); iprintf(" ..."); count = 0;}
+ else printf(",");
+ count++;
+
+ printf("(off=0x%X,page=0x%X)", p->offset, (vm_offset_t) p);
+ }
- printf("(off=0x%X,page=0x%X)", p->offset, (vm_offset_t) p);
p = (vm_page_t) queue_next(&p->listq);
}
if (count != 0)
@@ -3011,4 +3029,10 @@ void vm_object_print(
indent -= 2;
}
+void vm_object_print(
+ vm_object_t object)
+{
+ vm_object_print_part(object, 0ULL, ~0ULL);
+}
+
#endif /* MACH_KDB */