|
|
1.1 root 1: #include <stdio.h>
2: #include "../scsi.h"
3: #include "../scsish.h"
4: #include "fns.h"
5:
6: extern char *gen_rmb[2];
7: extern char *gen_devtype[256];
8:
9: int
10: gen_display(int niargs, int *iargs, int ncargs, char **cargs, char *err)
11: {
12: struct scsi_cmd cmd;
13: struct scsi_return ret;
14: int n, i, old_id;
15: int retv = 0;
16: char rev[100], vendor[100], product[100];
17:
18: #pragma ref niargs
19: #pragma ref iargs
20: #pragma ref ncargs
21: #pragma ref cargs
22:
23: old_id = s_id;
24: for(s_id = 0; s_id < 8; s_id++){
25: printf("target %d:\n");
26: set6(cmd, 0x00, 0, 0, 0, 0, 0);
27: if(s_io(0, &cmd, 0, &ret, 0, err))
28: continue;
29: printf("responded to test unit ready\n");
30: continue;
31: for(i = 0; i < 8; i++){
32: set6(cmd, 0x12, i<<5, 0, 0, 36, 0);
33: if(n = s_io(0, &cmd, 0, &ret, -36, err)){
34: retv = n;
35: break;
36: }
37: if(ret.nread >= 16)
38: fixedstr(&ret.data[8], 8, vendor);
39: else
40: sprintf(vendor, "??");
41: if(ret.nread >= 32)
42: fixedstr(&ret.data[16], 16, product);
43: else
44: sprintf(product, "??");
45: if(ret.nread >= 16)
46: fixedstr(&ret.data[32], 4, rev);
47: else
48: sprintf(vendor, "??");
49: printf("\tlun(%d): %s %s, %s/%s rev=%s\n", i,
50: gen_rmb[ret.data[1]>>7], gen_devtype[ret.data[0]],
51: vendor, product, rev);
52: }
53: }
54: s_id = old_id;
55: return(retv);
56: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.