|
|
1.1 root 1: #include "scsi.h"
2:
3: s_diskset(shelf, side, drive, complain)
4: {
5: struct scsi_i input;
6: struct scsi_o output;
7:
8: input.bus_id = 1<<scsi_id;
9: input.cmd[0] = 0xD6;
10: input.cmd[1] = drive<<5;
11: input.cmd[2] = 0;
12: input.cmd[3] = (shelf<<1)|side;
13: input.cmd[4] = 0;
14: input.cmd[5] = 0;
15: if(scsiio(&input, &output, 0, "set") < 0)
16: return(1);
17: if(CHECK(output)){
18: if(complain)
19: scsidump(&output);
20: return(1);
21: }
22: return(0);
23: }
24:
25: s_diskrelease(shelf, side, drive, complain)
26: {
27: struct scsi_i input;
28: struct scsi_o output;
29:
30: input.bus_id = 1<<scsi_id;
31: input.cmd[0] = 0xD7;
32: input.cmd[1] = (drive<<5)|(shelf >= 0);
33: input.cmd[2] = 0;
34: input.cmd[3] = (shelf<<1)|side;
35: input.cmd[4] = 0;
36: input.cmd[5] = 0;
37: if(scsiio(&input, &output, 0, "release") < 0)
38: return(1);
39: if(CHECK(output)){
40: if(complain) scsidump(&output);
41: return(1);
42: }
43: return(0);
44: }
45:
46: s_diskeject(drive)
47: {
48: struct scsi_i input;
49: struct scsi_o output;
50:
51: input.bus_id = 1<<scsi_id;
52: input.cmd[0] = 0xC0;
53: input.cmd[1] = drive<<5;
54: input.cmd[2] = 0;
55: input.cmd[3] = 0;
56: input.cmd[4] = 0;
57: input.cmd[5] = 0;
58: if(scsiio(&input, &output, 0, "eject") < 0)
59: return(1);
60: if(CHECK(output)){
61: scsidump(&output);
62: return(1);
63: }
64: return(0);
65: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.