|
|
1.1 root 1: #include "scsi.h"
2:
3: s_sense(drive, extended)
4: {
5: int n;
6: struct scsi_i input;
7: struct scsi_o output;
8: int i;
9: extern char *exstab[];
10:
11: n = s_sensei(&input, drive, extended);
12: if(scsiio(&input, 0, &output, n, "sense") < 0)
13: return(1);
14: prcheck(1, &output);
15: Fprint(1, "\t");
16: for(i = 0; i < 16; i++)
17: Fprint(1, " #%x", output.data[i]);
18: Fprint(1, "\n");
19: return(0);
20: }
21:
22: s_sensei(i, drive, extended)
23: register struct scsi_i *i;
24: {
25: i->bus_id = scsi_id;
26: i->cmd[0] = 0x03;
27: i->cmd[1] = drive<<5;
28: i->cmd[2] = 0;
29: i->cmd[3] = 0;
30: i->cmd[4] = extended? 12:4;
31: i->cmd[5] = 0;
32: return(i->cmd[4]);
33: }
34:
35: char *smsg[16] =
36: {
37: "good", "check", "met/good", "reserved", "busy", "reserved",
38: "reserved", "reserved", "intermediate good", "reserved", "intermediate good/met",
39: "reserved", "reservation conflict", "reserved", "reserved", "reserved",
40: };
41:
42: char *exstab[16] =
43: {
44: "no sense",
45: "recovered error",
46: "not ready",
47: "medium error",
48: "hardware error",
49: "illegal request",
50: "unit attention",
51: "data protect",
52: "blank check",
53: "???",
54: "copy aborted",
55: "???",
56: "???",
57: "???",
58: "???",
59: "???",
60: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.