|
|
1.1 ! root 1: #include "scsi.h" ! 2: ! 3: s_capacity(drive, nb, bl) ! 4: long *nb, *bl; ! 5: { ! 6: struct scsi_i input; ! 7: struct scsi_o output; ! 8: long c, l; ! 9: ! 10: input.bus_id = scsi_id; ! 11: input.cmd[0] = 0x25; ! 12: input.cmd[1] = drive<<5; ! 13: input.cmd[2] = 0; ! 14: input.cmd[3] = 0; ! 15: input.cmd[4] = 0; ! 16: input.cmd[5] = 0; ! 17: input.cmd[6] = 0; ! 18: input.cmd[7] = 0; ! 19: input.cmd[8] = 0; ! 20: input.cmd[9] = 0; ! 21: if(scsiio(&input, 0, &output, 8, "capacity") < 0) ! 22: return(1); ! 23: if(CHECK(output)){ ! 24: prcheck(1, &output); ! 25: return(1); ! 26: } else { ! 27: c = ULONG((&output.data[0])); ! 28: l = ULONG((&output.data[4])); ! 29: if(V) ! 30: Fprint(1, "drive %d: capacity %dx%d (%uxx%ux)\n", drive, ! 31: c, l, c, l); ! 32: if(bl) *bl = l; ! 33: if(nb) *nb = c; ! 34: return(0); ! 35: } ! 36: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.