? atactl Index: atactl.c =================================================================== RCS file: /cvs/src/sbin/atactl/atactl.c,v retrieving revision 1.46 diff -u -p -r1.46 atactl.c --- atactl.c 20 Aug 2015 22:02:20 -0000 1.46 +++ atactl.c 3 Dec 2015 10:58:59 -0000 @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -1589,6 +1590,25 @@ smart_cksum(u_int8_t *data, size_t len) return (sum); } +void +hexdump(const void *data, size_t datalen) +{ + const uint8_t *d = data; + int i, j = 0; + + for (i = 0; i < datalen; i += j) { + printf("% 4d: ", i); + for (j = 0; j < 16 && i+j < datalen; j++) + printf("%02x ", d[i + j]); + while (j++ < 16) + printf(" "); + printf("|"); + for (j = 0; j < 16 && i+j < datalen; j++) + putchar(isprint(d[i + j]) ? d[i + j] : '.'); + printf("|\n"); + } +} + /* * Read device attributes */ @@ -1627,6 +1647,11 @@ device_attr(int argc, char *argv[]) req.databuf = (caddr_t)&attr_thr; req.datalen = sizeof(attr_thr); ata_command(&req); + + printf("attr_val:\n"); + hexdump(&attr_val, sizeof(attr_val)); + printf("attr_thr:\n"); + hexdump(&attr_thr, sizeof(attr_thr)); if (attr_val.revision != attr_thr.revision) { /*