Wrap iprintf, vm_object_print, vm_map_print to allow passing a printf function.
This commit is contained in:
parent
4881cb0d51
commit
b4940ad7a0
@ -543,17 +543,18 @@ thread_wakeup(event)
|
||||
int indent = 0;
|
||||
|
||||
/*ARGSUSED2*/
|
||||
iprintf(a, b, c, d, e, f, g, h)
|
||||
iprintf(pr, a, b, c, d, e, f, g, h)
|
||||
void (*pr)();
|
||||
char *a;
|
||||
{
|
||||
register int i;
|
||||
|
||||
i = indent;
|
||||
while (i >= 8) {
|
||||
printf("\t");
|
||||
(*pr)("\t");
|
||||
i -= 8;
|
||||
}
|
||||
for (; i > 0; --i)
|
||||
printf(" ");
|
||||
printf(a, b, c, d, e, f, g, h);
|
||||
(*pr)(" ");
|
||||
(*pr)(a, b, c, d, e, f, g, h);
|
||||
}
|
||||
|
@ -2428,7 +2428,7 @@ vm_map_simplify(map, start)
|
||||
vm_map_unlock(map);
|
||||
}
|
||||
|
||||
#ifdef DDB
|
||||
#if defined(DDB) || defined(DIAGNOSTIC)
|
||||
/*
|
||||
* vm_map_print: [ debug ]
|
||||
*/
|
||||
@ -2436,11 +2436,22 @@ void
|
||||
vm_map_print(map, full)
|
||||
register vm_map_t map;
|
||||
boolean_t full;
|
||||
{
|
||||
extern void _vm_map_print();
|
||||
|
||||
_vm_map_print(map, full, printf);
|
||||
}
|
||||
|
||||
void
|
||||
_vm_map_print(map, full, pr)
|
||||
register vm_map_t map;
|
||||
boolean_t full;
|
||||
int (*pr)();
|
||||
{
|
||||
register vm_map_entry_t entry;
|
||||
extern int indent;
|
||||
|
||||
iprintf("%s map 0x%x: pmap=0x%x,ref=%d,nentries=%d,version=%d\n",
|
||||
iprintf(pr, "%s map 0x%x: pmap=0x%x,ref=%d,nentries=%d,version=%d\n",
|
||||
(map->is_main_map ? "Task" : "Share"),
|
||||
(int) map, (int) (map->pmap), map->ref_count, map->nentries,
|
||||
map->timestamp);
|
||||
@ -2451,21 +2462,21 @@ vm_map_print(map, full)
|
||||
indent += 2;
|
||||
for (entry = map->header.next; entry != &map->header;
|
||||
entry = entry->next) {
|
||||
iprintf("map entry 0x%x: start=0x%x, end=0x%x, ",
|
||||
iprintf(pr, "map entry 0x%x: start=0x%x, end=0x%x, ",
|
||||
(int) entry, (int) entry->start, (int) entry->end);
|
||||
if (map->is_main_map) {
|
||||
static char *inheritance_name[4] =
|
||||
{ "share", "copy", "none", "donate_copy"};
|
||||
db_printf("prot=%x/%x/%s, ",
|
||||
(*pr)("prot=%x/%x/%s, ",
|
||||
entry->protection,
|
||||
entry->max_protection,
|
||||
inheritance_name[entry->inheritance]);
|
||||
if (entry->wired_count != 0)
|
||||
db_printf("wired, ");
|
||||
(*pr)("wired, ");
|
||||
}
|
||||
|
||||
if (entry->is_a_map || entry->is_sub_map) {
|
||||
db_printf("share=0x%x, offset=0x%x\n",
|
||||
(*pr)("share=0x%x, offset=0x%x\n",
|
||||
(int) entry->object.share_map,
|
||||
(int) entry->offset);
|
||||
if ((entry->prev == &map->header) ||
|
||||
@ -2479,20 +2490,20 @@ vm_map_print(map, full)
|
||||
|
||||
}
|
||||
else {
|
||||
db_printf("object=0x%x, offset=0x%x",
|
||||
(*pr)("object=0x%x, offset=0x%x",
|
||||
(int) entry->object.vm_object,
|
||||
(int) entry->offset);
|
||||
if (entry->copy_on_write)
|
||||
db_printf(", copy (%s)",
|
||||
(*pr)(", copy (%s)",
|
||||
entry->needs_copy ? "needed" : "done");
|
||||
db_printf("\n");
|
||||
(*pr)("\n");
|
||||
|
||||
if ((entry->prev == &map->header) ||
|
||||
(entry->prev->is_a_map) ||
|
||||
(entry->prev->object.vm_object !=
|
||||
entry->object.vm_object)) {
|
||||
indent += 2;
|
||||
vm_object_print(entry->object.vm_object, full);
|
||||
_vm_object_print(entry->object.vm_object, full, pr);
|
||||
indent -= 2;
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)vm_object.c 7.4 (Berkeley) 5/7/91
|
||||
* $Id: vm_object.c,v 1.7 1993/08/07 06:03:02 cgd Exp $
|
||||
* $Id: vm_object.c,v 1.8 1993/09/13 14:10:37 brezak Exp $
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1987, 1990 Carnegie-Mellon University.
|
||||
@ -69,6 +69,7 @@
|
||||
|
||||
#include "param.h"
|
||||
#include "malloc.h"
|
||||
#include "systm.h"
|
||||
|
||||
#include "vm.h"
|
||||
#include "vm_page.h"
|
||||
@ -1513,6 +1514,16 @@ boolean_t vm_object_coalesce(prev_object, next_object,
|
||||
void vm_object_print(object, full)
|
||||
vm_object_t object;
|
||||
boolean_t full;
|
||||
{
|
||||
extern void _vm_object_print();
|
||||
|
||||
_vm_object_print(object, full, printf);
|
||||
}
|
||||
|
||||
void _vm_object_print(object, full, pr)
|
||||
vm_object_t object;
|
||||
boolean_t full;
|
||||
int (*pr)();
|
||||
{
|
||||
register vm_page_t p;
|
||||
extern indent;
|
||||
@ -1522,13 +1533,13 @@ void vm_object_print(object, full)
|
||||
if (object == NULL)
|
||||
return;
|
||||
|
||||
iprintf("Object 0x%x: size=0x%x, res=%d, ref=%d, ",
|
||||
iprintf(pr, "Object 0x%x: size=0x%x, res=%d, ref=%d, ",
|
||||
(int) object, (int) object->size,
|
||||
object->resident_page_count, object->ref_count);
|
||||
printf("pager=0x%x+0x%x, shadow=(0x%x)+0x%x\n",
|
||||
(*pr)("pager=0x%x+0x%x, shadow=(0x%x)+0x%x\n",
|
||||
(int) object->pager, (int) object->paging_offset,
|
||||
(int) object->shadow, (int) object->shadow_offset);
|
||||
printf("cache: next=0x%x, prev=0x%x\n",
|
||||
(*pr)("cache: next=0x%x, prev=0x%x\n",
|
||||
object->cached_list.next, object->cached_list.prev);
|
||||
|
||||
if (!full)
|
||||
@ -1539,19 +1550,19 @@ void vm_object_print(object, full)
|
||||
p = (vm_page_t) queue_first(&object->memq);
|
||||
while (!queue_end(&object->memq, (queue_entry_t) p)) {
|
||||
if (count == 0)
|
||||
iprintf("memory:=");
|
||||
iprintf(pr, "memory:=");
|
||||
else if (count == 6) {
|
||||
printf("\n");
|
||||
iprintf(" ...");
|
||||
(*pr)("\n");
|
||||
iprintf(pr, " ...");
|
||||
count = 0;
|
||||
} else
|
||||
printf(",");
|
||||
(*pr)(",");
|
||||
count++;
|
||||
|
||||
printf("(off=0x%x,page=0x%x)", p->offset, VM_PAGE_TO_PHYS(p));
|
||||
(*pr)("(off=0x%x,page=0x%x)", p->offset, VM_PAGE_TO_PHYS(p));
|
||||
p = (vm_page_t) queue_next(&p->listq);
|
||||
}
|
||||
if (count != 0)
|
||||
printf("\n");
|
||||
(*pr)("\n");
|
||||
indent -= 2;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user