ref: 9861f1a92b373a16939fd6f3c167e5dad9f253d3
dir: /sys/src/cmd/scuzz/sense.c/
#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"); }