|
|
1.1 root 1: #define SCSICMD 10 /* max cmd size */
2: #define SCSIDATA (4*1024)
3: #define SCSISTATUS 8 /* includes csr&per */
4: #define SCSITOHOST 0x10000
5:
6: #define OPEN 1 /* somebody has the device open */
7: #define USED 2 /* ever opened */
8: #define NEXTWR 4 /* next cmd must be write */
9: #define DONE 8 /* io done */
10: #define PEND 16 /* we expect an interrupt */
11:
12: struct bag
13: {
14: struct { short msg_len; short pad; struct mscmd msg; } cmd;
15: struct { short msg_len; short pad; struct msend msg; } rsp;
16: struct {
17: short ca_cmdint;
18: short ca_rspint;
19: long ca_rspdsc[1];
20: long ca_cmddsc[1];
21: } ca;
22: };
23: /*
24: US design
25: */
26: struct scsipkt
27: {
28: long cmd;
29: long data;
30: long status;
31: long count;
32: short bus_id;
33: };
34: struct playpen
35: {
36: struct scsipkt upkt; /* must be first */
37: unsigned char cmd[SCSICMD];
38: unsigned char data[SCSIDATA];
39: unsigned char status[SCSISTATUS];
40: };
41:
42: struct scsi {
43: int flag;
44: struct udadevice *addr;
45: uaddr_t u1, u2;
46: ubm_t ub1, ub2;
47: struct buf *b1, *b2;
48: struct bag *junk;
49: unsigned char *data;
50: short sa;
51: char status[SCSISTATUS];
52: struct scsireg *reg;
53: struct playpen pp;
54: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.