summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_prf.c
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2003-12-07 05:04:49 +0000
committerscottl <scottl@FreeBSD.org>2003-12-07 05:04:49 +0000
commit2b68e67c6dd54583034d8bfd6d2b87e8de25e973 (patch)
tree31784046cc55a6806b91e9c61d452431be9a79e0 /sys/kern/subr_prf.c
parente1402f33051fefa6407e8175f2fc64ed7167a5ff (diff)
downloadFreeBSD-src-2b68e67c6dd54583034d8bfd6d2b87e8de25e973.zip
FreeBSD-src-2b68e67c6dd54583034d8bfd6d2b87e8de25e973.tar.gz
Re-arrange and consolidate some random debugging stuff
Diffstat (limited to 'sys/kern/subr_prf.c')
-rw-r--r--sys/kern/subr_prf.c53
1 files changed, 53 insertions, 0 deletions
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");
+ }
+ }
+}
+
OpenPOWER on IntegriCloud