|
|
1.1 root 1: /*
2: * global definitions for config
3: */
4:
5: #define NULL 0
6: #define NONUM (-1)
7: #define STDERR 2
8:
9:
10: /*
11: * an entry from the master devices file
12: */
13:
14: #define NSTR 10
15:
16: typedef struct mdev {
17: struct mdev *next;
18: char *name;
19: char *tag;
20: char *strs[NSTR];
21: char fstrs[NSTR];
22: short rept; /* repeat count; e.g. 8 dz11s per controller */
23: char atype; /* type of address */
24: char nvec; /* unibus only; number of vector entries */
25: char adptype; /* if i'm an adapter, which kind */
26: char flags;
27: } Mdev;
28:
29: extern Mdev *mlist;
30:
31: /*
32: * flags
33: */
34: #define FTBDONE 01 /* already marked as used in all tables */
35: #define FDUPOK 02 /* duplicate devices supercede */
36: #define FRAWVEC 04 /* raw vector, whatever that may mean */
37:
38: /*
39: * address type
40: * these are indices into acode; see main.c
41: */
42:
43: #define ANONE 0 /* no address */
44: #define ACNT 1 /* unaddressed device, but print the count */
45: #define ASBI 2 /* sbi-style nexus */
46: #define AMBA 3 /* dev on massbus */
47: #define AUBA 4 /* dev on unibus */
48: #define ASUB 5 /* subdevice */
49: #define AVBI 6 /* VAXBI nexus */
50: #define APARAM 7 /* unaddressed; print count without `cnt' */
51: #define AMSCP 8 /* MSCP device */
52: #define ANOBUS 9 /* device adapter attached to no bus */
53:
54: struct acode {
55: int (*syntax)(); /* check Dev when conf file is read */
56: int (*fixup)(); /* fix entry before printing address */
57: int (*putaddr)(); /* put address stuff */
58: int (*putvec)(); /* put vector interrupt routine */
59: } acode[];
60:
61: /*
62: * an entry in the conf file
63: */
64:
65: #define NADDR 4
66:
67: typedef struct dev {
68: struct dev *next;
69: struct dev *parent; /* bus adapter */
70: Mdev *mdev;
71: int id; /* 0 in `dz11 0' */
72: int vecoff; /* vector offset if bus adapter */
73: long addr[NADDR]; /* used in mysterious ways */
74: } Dev;
75:
76: extern Dev *dlist;
77:
78: /*
79: * an entry in the scb/trap vector list
80: */
81:
82: typedef struct scb {
83: struct scb *next;
84: int offset;
85: int type;
86: char *name;
87: } Scb;
88:
89: extern Scb *llist;
90:
91: /*
92: * scb entry types
93: */
94:
95: #define STRAP 0 /* trap onto kernel stack */
96: #define SINTR 1 /* trap onto interrupt stack */
97:
98: /*
99: * device tables
100: */
101:
102: typedef struct devtab {
103: Mdev *dev;
104: int used;
105: } Devtab;
106:
107: extern Devtab bdevsw[], cdevsw[], fstypsw[], ldispsw[], mscpsw[];;
108: extern int nblk, nchr, nfs, nld, nmscp;
109:
110: typedef struct include {
111: struct include *next;
112: Mdev *dev;
113: char *incl;
114: char inuse;
115: } Include;
116:
117: extern Include *inclist;
118:
119: typedef struct swapdev {
120: Mdev *mp;
121: short major, minor;
122: long size;
123: } Swapdev;
124:
125: extern Swapdev swaptab[];
126: extern int nswapdev;
127: extern Mdev *rootfmp, *rootdmp;
128: extern int rootfs, rootmaj, rootmin;
129: extern int swapmaj, swapmin;
130: extern char *dumprout;
131: extern int dumpunit;
132: extern long dumplow, dumpsize;
133:
134: char *ealloc();
135: char *estrdup();
136: Dev *advtype();
137: Mdev *mdlook();
138: long nconv();
139: char *keyread();
140:
141: extern int errs;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.