diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-26 01:20:54 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-26 01:21:15 +0100 |
commit | d8fd7d256e412d3b19f7f2291ae95fbb0f6794ec (patch) | |
tree | 14f403bb2db0eebe1f73299c454b338cb26a8b56 /vm/vm_object.c | |
parent | 49ce8c942fd302206a7b161f0622ff8bc075dbcd (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.c | 40 |
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 */ |