13e12c5d1SDavid du Colombier #include <u.h>
23e12c5d1SDavid du Colombier #include <libc.h>
33e12c5d1SDavid du Colombier #include <bio.h>
4*43aadf5eSDavid du Colombier #include <disk.h>
53e12c5d1SDavid du Colombier #include "scsireq.h"
63e12c5d1SDavid du Colombier
7*43aadf5eSDavid du Colombier extern Biobuf bout;
8*43aadf5eSDavid du Colombier
9e29d4813SDavid du Colombier static char* key[16] = {
103e12c5d1SDavid du Colombier "no sense",
113e12c5d1SDavid du Colombier "recovered error",
123e12c5d1SDavid du Colombier "not ready",
133e12c5d1SDavid du Colombier "medium error",
14219b2ee8SDavid du Colombier "hardware error",
153e12c5d1SDavid du Colombier "illegal request",
163e12c5d1SDavid du Colombier "unit attention",
173e12c5d1SDavid du Colombier "data protect",
183e12c5d1SDavid du Colombier "blank check",
193e12c5d1SDavid du Colombier "vendor specific",
203e12c5d1SDavid du Colombier "copy aborted",
213e12c5d1SDavid du Colombier "aborted command",
223e12c5d1SDavid du Colombier "equal",
233e12c5d1SDavid du Colombier "volume overflow",
243e12c5d1SDavid du Colombier "miscompare",
253e12c5d1SDavid du Colombier "reserved",
263e12c5d1SDavid du Colombier };
273e12c5d1SDavid du Colombier
28*43aadf5eSDavid du Colombier /*
29*43aadf5eSDavid du Colombier * use libdisk to read /sys/lib/scsicodes
30*43aadf5eSDavid du Colombier */
313e12c5d1SDavid du Colombier void
makesense(ScsiReq * rp)323e12c5d1SDavid du Colombier makesense(ScsiReq *rp)
333e12c5d1SDavid du Colombier {
34*43aadf5eSDavid du Colombier char *s;
3559cc4ca5SDavid du Colombier int i;
363e12c5d1SDavid du Colombier
373e12c5d1SDavid du Colombier Bprint(&bout, "sense data: %s", key[rp->sense[2] & 0x0F]);
38*43aadf5eSDavid du Colombier if(rp->sense[7] >= 5 && (s = scsierror(rp->sense[0xc], rp->sense[0xd])))
39*43aadf5eSDavid du Colombier Bprint(&bout, ": %s", s);
403e12c5d1SDavid du Colombier Bprint(&bout, "\n\t");
413e12c5d1SDavid du Colombier for(i = 0; i < 8+rp->sense[7]; i++)
423e12c5d1SDavid du Colombier Bprint(&bout, " %2.2ux", rp->sense[i]);
433e12c5d1SDavid du Colombier Bprint(&bout, "\n");
443e12c5d1SDavid du Colombier }
45