|
|
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.