|
|
1.1 root 1: /*
2: * per-channel structure
3: */
4:
5: struct kdi {
6: struct queue *dkrq;
7: struct block *ibp;
8: struct block *obp;
9: ubm_t imap;
10: ubm_t omap;
11: unsigned short rsize; /* # bytes in last read */
12: unsigned char chan;
13: unsigned char ostate;
14: unsigned char kno;
15: unsigned char lastctl;
16: };
17:
18: /*
19: * per-kmc structure
20: */
21:
22: struct kdikmc {
23: struct kdi *kdi; /* per-channel structures */
24: char *state; /* per-channel state */
25: struct buf *buf; /* where the data above is stashed */
26: ubm_t umap; /* map token for kmc stuff below */
27: uaddr_t ubad; /* unibus addr of device data */
28: struct dkmodule *modp;
29: time_t badtime;
30: char init;
31: char bad;
32: char ubno;
33: };
34:
35: /*
36: * format of UB addresses sent to KMC
37: */
38: struct kmaddr {
39: unsigned short hi;
40: unsigned short lo;
41: };
42:
43: /*
44: * KMC init packet
45: */
46: struct kinit {
47: struct kmaddr cmdaddr; /* UB addr of cmd buf */
48: struct kmaddr stataddr; /* UB addr of statbuf */
49: struct kmaddr bufaddr; /* UB addr of KMC workspace */
50: struct kmaddr csraddr; /* for DR11C - unused */
51: };
52:
53: /*
54: * command/status packets
55: */
56: struct kin { /* KMC command buffer */
57: unsigned char type; /* command type */
58: unsigned char serno; /* probably seq number */
59: unsigned char chan; /* channel number */
60: unsigned char fill2; /* probably seq number */
61: unsigned short len; /* byte count */
62: char ctl; /* possible control byte */
63: char mode; /* command variant */
64: struct kmaddr addr; /* UB location of buffer */
65: };
66:
67: /*
68: * Big structure with stuff that needs to be accessible on the unibus
69: * one per kmc
70: */
71:
72: #define NKMB 10 /* number of cmd/status packets */
73:
74: struct kmcdk {
75: struct kinit kinit; /* the init packet */
76: struct kin cmd[NKMB]; /* KMC command buffer */
77: struct kin stat[NKMB]; /* KMC status buffer */
78: char kmcbuf[16*1024]; /* temp space for KMC */
79: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.