1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #include <u.h>
- #include <libc.h>
- #include <bio.h>
- #include <disk.h>
- #include "scsireq.h"
- extern Biobuf bout;
- static char* key[16] = {
- "no sense",
- "recovered error",
- "not ready",
- "medium error",
- "hardware error",
- "illegal request",
- "unit attention",
- "data protect",
- "blank check",
- "vendor specific",
- "copy aborted",
- "aborted command",
- "equal",
- "volume overflow",
- "miscompare",
- "reserved",
- };
- /*
- * use libdisk to read /sys/lib/scsicodes
- */
- void
- makesense(ScsiReq *rp)
- {
- char *s;
- int i;
- Bprint(&bout, "sense data: %s", key[rp->sense[2] & 0x0F]);
- if(rp->sense[7] >= 5 && (s = scsierror(rp->sense[0xc], rp->sense[0xd])))
- Bprint(&bout, ": %s", s);
- Bprint(&bout, "\n\t");
- for(i = 0; i < 8+rp->sense[7]; i++)
- Bprint(&bout, " %2.2ux", rp->sense[i]);
- Bprint(&bout, "\n");
- }
|