xref: /original-bsd/sys/vax/vax/conf.c (revision 1f3a482a)
1 /*	conf.c	4.37	81/07/05	*/
2 
3 #include "../h/param.h"
4 #include "../h/systm.h"
5 #include "../h/buf.h"
6 #include "../h/tty.h"
7 #include "../h/conf.h"
8 #include "../h/text.h"
9 #include "../h/dir.h"
10 #include "../h/user.h"
11 #include "../h/proc.h"
12 #include "../h/file.h"
13 #include "../h/inode.h"
14 #include "../h/acct.h"
15 #include "../h/pte.h"
16 
17 int	nulldev();
18 int	nodev();
19 
20 #include "hp.h"
21 #if NHP > 0
22 int	hpstrategy(),hpread(),hpwrite(),hpintr(),hpdump();
23 #else
24 #define	hpstrategy	nodev
25 #define	hpread		nodev
26 #define	hpwrite		nodev
27 #define	hpintr		nodev
28 #define	hpdump		nodev
29 #endif
30 
31 #include "tu.h"
32 #if NHT > 0
33 int	htopen(),htclose(),htstrategy(),htread(),htwrite(),htdump(),htioctl();
34 #else
35 #define	htopen		nodev
36 #define	htclose		nodev
37 #define	htstrategy	nodev
38 #define	htread		nodev
39 #define	htwrite		nodev
40 #define	htdump		nodev
41 #define	htioctl		nodev
42 #endif
43 
44 #include "rk.h"
45 #if NHK > 0
46 int	rkstrategy(),rkread(),rkwrite(),rkintr(),rkdump(),rkreset();
47 #else
48 #define	rkstrategy	nodev
49 #define	rkread		nodev
50 #define	rkwrite		nodev
51 #define	rkintr		nodev
52 #define	rkdump		nodev
53 #define	rkreset		nodev
54 #endif
55 
56 #include "te.h"
57 #if NTE > 0
58 int	tmopen(),tmclose(),tmstrategy(),tmread(),tmwrite();
59 int	tmioctl(),tmdump(),tmreset();
60 #else
61 #define	tmopen		nodev
62 #define	tmclose		nodev
63 #define	tmstrategy	nodev
64 #define	tmread		nodev
65 #define	tmwrite		nodev
66 #define	tmioctl		nodev
67 #define	tmdump		nodev
68 #define	tmreset		nodev
69 #endif
70 
71 #include "ts.h"
72 #if NTS > 0
73 int	tsopen(),tsclose(),tsstrategy(),tsread(),tswrite();
74 int	tsioctl(),tsdump(),tsreset();
75 #else
76 #define	tsopen		nodev
77 #define	tsclose		nodev
78 #define	tsstrategy	nodev
79 #define	tsread		nodev
80 #define	tswrite		nodev
81 #define	tsioctl		nodev
82 #define	tsdump		nodev
83 #define	tsreset		nodev
84 #endif
85 
86 #include "up.h"
87 #if NSC > 0
88 int	upstrategy(),upread(),upwrite(),upreset(),updump();
89 #else
90 #define	upstrategy	nodev
91 #define	upread		nodev
92 #define	upwrite		nodev
93 #define	upreset		nulldev
94 #define	updump		nodev
95 #endif
96 
97 int	swstrategy(),swread(),swwrite();
98 
99 struct bdevsw	bdevsw[] =
100 {
101 	nulldev,	nulldev,	hpstrategy,	hpdump,	0,	/*0*/
102 	htopen,		htclose,	htstrategy,	htdump,	B_TAPE,	/*1*/
103 	nulldev,	nulldev,	upstrategy,	updump,	0,	/*2*/
104 	nulldev,	nulldev,	rkstrategy,	rkdump,	0,	/*3*/
105 	nodev,		nodev,		swstrategy,	nodev,	0,	/*4*/
106 	tmopen,		tmclose,	tmstrategy,	tmdump,	B_TAPE,	/*5*/
107 	tsopen,		tsclose,	tsstrategy,	tsdump,	B_TAPE,	/*6*/
108 	0,
109 };
110 
111 int	cnopen(),cnclose(),cnread(),cnwrite(),cnioctl();
112 struct tty cons;
113 
114 #include "acc.h"
115 #if NACC > 0
116 int     accreset();
117 #else
118 #define accreset nulldev
119 #endif
120 
121 #include "ct.h"
122 #if NCT > 0
123 int	ctopen(),ctclose(),ctwrite();
124 #else
125 #define	ctopen	nulldev
126 #define	ctclose	nulldev
127 #define	ctwrite	nulldev
128 #endif
129 
130 #include "dh.h"
131 #if NDH == 0
132 #define	dhopen	nodev
133 #define	dhclose	nodev
134 #define	dhread	nodev
135 #define	dhwrite	nodev
136 #define	dhioctl	nodev
137 #define	dhstop	nodev
138 #define	dhreset	nulldev
139 #define	dh11	0
140 #else
141 int	dhopen(),dhclose(),dhread(),dhwrite(),dhioctl(),dhstop(),dhreset();
142 struct	tty dh11[];
143 #endif
144 
145 #if VAX780
146 int	flopen(),flclose(),flread(),flwrite();
147 #endif
148 
149 #include "dz.h"
150 #if NDZ == 0
151 #define	dzopen	nodev
152 #define	dzclose	nodev
153 #define	dzread	nodev
154 #define	dzwrite	nodev
155 #define	dzioctl	nodev
156 #define	dzstop	nodev
157 #define	dzreset	nulldev
158 #define	dz_tty	0
159 #else
160 int	dzopen(),dzclose(),dzread(),dzwrite(),dzioctl(),dzstop(),dzreset();
161 struct	tty dz_tty[];
162 #endif
163 
164 #include "lp.h"
165 #if NLP > 0
166 int	lpopen(),lpclose(),lpwrite(),lpreset();
167 #else
168 #define	lpopen		nodev
169 #define	lpclose		nodev
170 #define	lpwrite		nodev
171 #define	lpreset		nulldev
172 #endif
173 
174 int	syopen(),syread(),sywrite(),syioctl();
175 
176 int 	mmread(),mmwrite();
177 
178 #include "va.h"
179 #if NVA > 0
180 int	vaopen(),vaclose(),vawrite(),vaioctl(),vareset();
181 #else
182 #define	vaopen	nodev
183 #define	vaclose	nodev
184 #define	vawrite	nodev
185 #define	vaopen	nodev
186 #define	vaioctl	nodev
187 #define	vareset	nulldev
188 #endif
189 
190 #include "vp.h"
191 #if NVP > 0
192 int	vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset();
193 #else
194 #define	vpopen	nodev
195 #define	vpclose	nodev
196 #define	vpwrite	nodev
197 #define	vpioctl	nodev
198 #define	vpreset	nulldev
199 #endif
200 
201 int	mxopen(),mxclose(),mxread(),mxwrite(),mxioctl();
202 int	mcread();
203 char	*mcwrite();
204 
205 #include "pty.h"
206 #if NPTY > 0
207 int	ptsopen(), ptsclose(), ptsread(), ptswrite();
208 int	ptcopen(), ptcclose(), ptcread(), ptcwrite();
209 int	ptyioctl();
210 struct	tty pt_tty[];
211 #else
212 #define ptsopen nodev
213 #define ptsclose nodev
214 #define ptsread nodev
215 #define ptswrite nodev
216 #define ptcopen nodev
217 #define ptcclose nodev
218 #define ptcread nodev
219 #define ptcwrite nodev
220 #define ptyioctl nodev
221 #define	pt_tty	0
222 #endif
223 
224 #ifdef CHAOS
225 int	chopen(),chclose(),chread(),chwrite(),chioctl(),chreset();
226 #else
227 #define	chopen	nodev
228 #define	chclose	nodev
229 #define	chread	nodev
230 #define	chwrite	nodev
231 #define	chioctl	nodev
232 #define	chreset	nodev
233 #endif
234 
235 #include "en.h"
236 #if	(NEN > 0) && !defined(CHAOS)
237 int	enopen(),enclose(),enread(),enwrite(),enreset();
238 #else
239 #define	enopen	nodev
240 #define	enclose	nodev
241 #define	enread	nodev
242 #define	enwrite	nodev
243 #define	enreset	nodev
244 #endif
245 
246 #include "ca.h"
247 #if NCA > 0
248 int	caopen(), caclose(), cawrite(), caioctl(), careset();
249 #else
250 #define	caopen	nodev
251 #define	caclose	nodev
252 #define	cawrite	nodev
253 #define	caioctl	nodev
254 #define	careset	nulldev
255 #endif
256 
257 struct cdevsw	cdevsw[] =
258 {
259 	cnopen,		cnclose,	cnread,		cnwrite,	/*0*/
260 	cnioctl,	nulldev,	nulldev,	&cons,
261 	dzopen,		dzclose,	dzread,		dzwrite,	/*1*/
262 	dzioctl,	dzstop,		dzreset,	dz_tty,
263 	syopen,		nulldev,	syread,		sywrite,	/*2*/
264 	syioctl,	nulldev,	nulldev,	0,
265 	nulldev,	nulldev,	mmread,		mmwrite,	/*3*/
266 	nodev,		nulldev,	nulldev,	0,
267 	nulldev,	nulldev,	hpread,		hpwrite,	/*4*/
268 	nodev,		nodev,		nulldev,	0,
269 	htopen,		htclose,	htread,		htwrite,	/*5*/
270 	htioctl,	nodev,		nulldev,	0,
271 	vpopen,		vpclose,	nodev,		vpwrite,	/*6*/
272 	vpioctl,	nulldev,	vpreset,	0,
273 	nulldev,	nulldev,	swread,		swwrite,	/*7*/
274 	nodev,		nodev,		nulldev,	0,
275 #if VAX780
276 	flopen,		flclose,	flread,		flwrite,	/*8*/
277 	nodev,		nodev,		nulldev,	0,
278 #else
279 	nodev,		nodev,		nodev,		nodev,		/*8*/
280 	nodev,		nodev,		nodev,		0,
281 #endif
282 	mxopen,		mxclose,	mxread,		mxwrite,	/*9*/
283 	mxioctl,	nulldev,	nulldev,	0,
284 	vaopen,		vaclose,	nodev,		vawrite,	/*10*/
285 	vaioctl,	nulldev,	vareset,	0,
286 	nulldev,	nulldev,	rkread,		rkwrite,	/*11*/
287 	nodev,		nodev,		rkreset,	0,
288 	dhopen,		dhclose,	dhread,		dhwrite,	/*12*/
289 	dhioctl,	dhstop,		dhreset,	dh11,
290 	nulldev,	nulldev,	upread,		upwrite,	/*13*/
291 	nodev,		nodev,		upreset,	0,
292 	tmopen,		tmclose,	tmread,		tmwrite,	/*14*/
293 	tmioctl,	nodev,		tmreset,	0,
294 	lpopen,		lpclose,	nodev,		lpwrite,	/*15*/
295 	nodev,		nodev,		lpreset,	0,
296 	tsopen,		tsclose,	tsread,		tswrite,	/*16*/
297 	tsioctl,	nodev,		tsreset,	0,
298 	nodev,		nodev,		nodev,		nodev,		/*17*/
299 	nodev,		nodev,		nulldev,	0,
300 	ctopen,		ctclose,	nodev,		ctwrite,	/*18*/
301 	nodev,		nodev,		nulldev,	0,
302 	chopen,		chclose,	chread,		chwrite,	/*19*/
303 	chioctl,	nodev,		chreset,	0,
304 	ptsopen,	ptsclose,	ptsread,	ptswrite,	/*20*/
305 	ptyioctl,	nodev,		nodev,		pt_tty,
306 	ptcopen,	ptcclose,	ptcread,	ptcwrite,	/*21*/
307 	ptyioctl,	nodev,		nodev,		pt_tty,
308 	nodev,		nodev,		nodev,		nodev,		/*22*/
309 	nodev,		nodev,		accreset,	0,
310 	enopen,		enclose,	enread,		enwrite,	/*23*/
311 	nodev,		nodev,		enreset,	0,
312 	caopen,		caclose,	nodev,		cawrite,	/*24*/
313 	nodev,		nodev,		careset,	0,
314 	nodev,		nodev,		nodev,		nodev,		/*25*/
315 	nodev,		nodev,		nodev,		0,
316 /* 25-29 reserved to local sites */
317 	0,
318 };
319 
320 int	ttyopen(),ttread(),nullioctl(),ttstart();
321 char	*ttwrite();
322 int	ttyinput(),ttyrend();
323 
324 #include "bk.h"
325 #if NBK > 0
326 int	bkopen(),bkclose(),bkread(),bkinput(),bkioctl();
327 #endif
328 
329 int	ntyopen(),ntyclose(),ntread();
330 char	*ntwrite();
331 int	ntyinput(),ntyrend();
332 
333 #ifdef CHAOS
334 int	ch_lopen(), ch_lclose(), ch_linput(), ch_lstart();
335 #endif
336 
337 struct	linesw linesw[] =
338 {
339 	ttyopen, nulldev, ttread, ttwrite, nullioctl,
340 	ttyinput, ttyrend, nulldev, nulldev, nulldev,		/* 0 */
341 #if NBK > 0
342 	bkopen, bkclose, bkread, ttwrite, bkioctl,
343 	bkinput, nodev, nulldev, ttstart, nulldev,		/* 1 */
344 #else
345 	nodev, nodev, nodev, (char *(*)())nodev, nodev,
346 	nodev, nodev, nodev, nodev, nodev,
347 #endif
348 	ntyopen, ntyclose, ntread, ntwrite, nullioctl,
349 	ntyinput, ntyrend, nulldev, ttstart, nulldev,		/* 2 */
350 #ifdef CHAOS
351 	ch_lopen, ch_lclose, nulldev, (char *(*)())nulldev, nullioctl,
352 	ch_linput, nulldev, nulldev, ch_lstart, nulldev, 	/* 3 */
353 #else
354 	nodev, nodev, nodev, (char *(*)())nodev, nodev,
355 	nodev, nodev, nodev, nodev, nodev,
356 #endif
357 	mxopen, mxclose, mcread, mcwrite, mxioctl,
358 	nulldev, nulldev, nulldev, nulldev, nulldev,		/* 4 */
359 	0
360 };
361 
362 int	nldisp = 4;
363 
364 struct	buf	bfreelist[BQUEUES];	/* buffer chain headers */
365 struct	buf	bswlist;	/* free list of swap headers */
366 struct	buf	*bclnlist;	/* header for list of cleaned pages */
367 struct	acct	acctbuf;
368 struct	inode	*acctp;
369 
370 int	mem_no = 3; 	/* major device number of memory special file */
371 
372 /*
373  * Swapdev is a fake device implemented
374  * in sw.c used only internally to get to swstrategy.
375  * It cannot be provided to the users, because the
376  * swstrategy routine munches the b_dev and b_blkno entries
377  * before calling the appropriate driver.  This would horribly
378  * confuse, e.g. the hashing routines. Instead, /dev/drum is
379  * provided as a character (raw) device.
380  */
381 dev_t	swapdev = makedev(4, 0);
382 
383 extern struct user u;
384