diff options
author | scottl <scottl@FreeBSD.org> | 2003-12-07 05:04:49 +0000 |
---|---|---|
committer | scottl <scottl@FreeBSD.org> | 2003-12-07 05:04:49 +0000 |
commit | 2b68e67c6dd54583034d8bfd6d2b87e8de25e973 (patch) | |
tree | 31784046cc55a6806b91e9c61d452431be9a79e0 | |
parent | e1402f33051fefa6407e8175f2fc64ed7167a5ff (diff) | |
download | FreeBSD-src-2b68e67c6dd54583034d8bfd6d2b87e8de25e973.zip FreeBSD-src-2b68e67c6dd54583034d8bfd6d2b87e8de25e973.tar.gz |
Re-arrange and consolidate some random debugging stuff
-rw-r--r-- | sys/fs/udf/udf_vnops.c | 21 | ||||
-rw-r--r-- | sys/geom/geom.h | 1 | ||||
-rw-r--r-- | sys/geom/geom_dump.c | 31 | ||||
-rw-r--r-- | sys/geom/geom_pc98.c | 2 | ||||
-rw-r--r-- | sys/kern/subr_prf.c | 53 | ||||
-rw-r--r-- | sys/sys/systm.h | 6 |
6 files changed, 61 insertions, 53 deletions
diff --git a/sys/fs/udf/udf_vnops.c b/sys/fs/udf/udf_vnops.c index c0a018e..5162e6d 100644 --- a/sys/fs/udf/udf_vnops.c +++ b/sys/fs/udf/udf_vnops.c @@ -64,7 +64,6 @@ static int udf_strategy(struct vop_strategy_args *); static int udf_bmap(struct vop_bmap_args *); static int udf_lookup(struct vop_cachedlookup_args *); static int udf_reclaim(struct vop_reclaim_args *); -static void udf_dumpblock(void *, int) __unused; static int udf_readatoffset(struct udf_node *, int *, int, struct buf **, uint8_t **); static int udf_bmap_internal(struct udf_node *, uint32_t, daddr_t *, uint32_t *); @@ -429,24 +428,6 @@ udf_read(struct vop_read_args *a) return (error); } -/* Convienience routine to dump a block in hex */ -static void -udf_dumpblock(void *data, int len) -{ - int i, j; - - for (i = 0; i < len; i++) { - printf("\noffset= %d: ", i); - for (j = 0; j < 8; j++) { - if (i + j == len) - break; - printf("0x%02x ", (uint8_t)((uint8_t*)(data))[i + j]); - } - i += j - 1; - } - printf("\n"); -} - /* * Call the OSTA routines to translate the name from a CS0 dstring to a * 16-bit Unicode String. Hooks need to be placed in here to translate from @@ -758,7 +739,7 @@ udf_readdir(struct vop_readdir_args *a) /* XXX Should we return an error on a bad fid? */ if (udf_checktag(&fid->tag, TAGID_FID)) { printf("Invalid FID tag\n"); - udf_dumpblock(fid, UDF_FID_SIZE); + hexdump(fid, UDF_FID_SIZE, NULL, 0); error = EIO; break; } diff --git a/sys/geom/geom.h b/sys/geom/geom.h index c592773..8e06d20 100644 --- a/sys/geom/geom.h +++ b/sys/geom/geom.h @@ -178,7 +178,6 @@ void g_dev_print(void); struct g_provider *g_dev_getprovider(dev_t dev); /* geom_dump.c */ -void g_hexdump(void *ptr, int length); void g_trace(int level, const char *, ...); # define G_T_TOPOLOGY 1 # define G_T_BIO 2 diff --git a/sys/geom/geom_dump.c b/sys/geom/geom_dump.c index 365773c..f110ceb 100644 --- a/sys/geom/geom_dump.c +++ b/sys/geom/geom_dump.c @@ -281,34 +281,3 @@ g_trace(int level, const char *fmt, ...) va_end(ap); printf("\n"); } - -void -g_hexdump(void *ptr, int length) -{ - int i, j, k; - unsigned char *cp; - - cp = ptr; - for (i = 0; i < length; i+= 16) { - printf("%04x ", i); - for (j = 0; j < 16; j++) { - k = i + j; - if (k < length) - printf(" %02x", cp[k]); - else - printf(" "); - } - printf(" |"); - for (j = 0; j < 16; j++) { - k = i + j; - if (k >= length) - printf(" "); - else if (cp[k] >= ' ' && cp[k] <= '~') - printf("%c", cp[k]); - else - printf("."); - } - printf("|\n"); - } -} - diff --git a/sys/geom/geom_pc98.c b/sys/geom/geom_pc98.c index 6be3ed9..667e866 100644 --- a/sys/geom/geom_pc98.c +++ b/sys/geom/geom_pc98.c @@ -62,7 +62,7 @@ g_pc98_print(int i, struct pc98_partition *dp) strncpy(sname, dp->dp_name, 16); sname[16] = '\0'; - g_hexdump(dp, sizeof(dp[0])); + hexdump(dp, sizeof(dp[0]), NULL, 0); printf("[%d] mid:%d(0x%x) sid:%d(0x%x)", i, dp->dp_mid, dp->dp_mid, dp->dp_sid, dp->dp_sid); printf(" s:%d/%d/%d", dp->dp_scyl, dp->dp_shd, dp->dp_ssect); 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"); + } + } +} + diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 814cdb2..5ecae0f 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -172,6 +172,12 @@ u_long strtoul(const char *, char **, int) __nonnull(1); quad_t strtoq(const char *, char **, int) __nonnull(1); u_quad_t strtouq(const char *, char **, int) __nonnull(1); void tprintf(struct proc *p, int pri, const char *, ...) __printflike(3, 4); +void hexdump(void *ptr, int length, const char *hdr, int flags); +#define HD_COLUMN_MASK 0xff +#define HD_DELIM_MASK 0xff00 +#define HD_OMIT_COUNT (1 << 16) +#define HD_OMIT_HEX (1 << 17) +#define HD_OMIT_CHARS (1 << 18) #define ovbcopy(f, t, l) bcopy((f), (t), (l)) void bcopy(const void *from, void *to, size_t len) __nonnull(1) __nonnull(2); |