From 2b68e67c6dd54583034d8bfd6d2b87e8de25e973 Mon Sep 17 00:00:00 2001 From: scottl Date: Sun, 7 Dec 2003 05:04:49 +0000 Subject: Re-arrange and consolidate some random debugging stuff --- sys/kern/subr_prf.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'sys/kern/subr_prf.c') diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c index d851e60..7c44341 100644 --- a/sys/kern/subr_prf.c +++ b/sys/kern/subr_prf.c @@ -898,3 +898,56 @@ DB_SHOW_COMMAND(msgbuf, db_show_msgbuf) } #endif /* DDB */ + +void +hexdump(void *ptr, int length, const char *hdr, int flags) +{ + int i, j, k; + int cols; + unsigned char *cp; + char delim; + + if ((flags & HD_DELIM_MASK) != 0) + delim = (flags & HD_DELIM_MASK) >> 8; + else + delim = ' '; + + if ((flags & HD_COLUMN_MASK) != 0) + cols = flags & HD_COLUMN_MASK; + else + cols = 16; + + cp = ptr; + for (i = 0; i < length; i+= cols) { + if (hdr != NULL) + printf("%s", hdr); + + if ((flags & HD_OMIT_COUNT) == 0) + printf("%04x ", i); + + if ((flags & HD_OMIT_HEX) == 0) { + for (j = 0; j < cols; j++) { + k = i + j; + if (k < length) + printf("%c%02x", delim, cp[k]); + else + printf(" "); + } + } + + if ((flags & HD_OMIT_CHARS) == 0) { + printf(" |"); + for (j = 0; j < cols; j++) { + k = i + j; + if (k >= length) + printf(" "); + else if (cp[k] >= ' ' && cp[k] <= '~') + printf("%c", cp[k]); + else + printf("."); + } + printf("|\n"); + } + } +} + -- cgit v1.1