|
|
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.