Wrap iprintf, vm_object_print, vm_map_print to allow passing a printf function.

This commit is contained in:
brezak 1993-09-13 14:10:35 +00:00
parent 4881cb0d51
commit b4940ad7a0
3 changed files with 47 additions and 24 deletions

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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;
}