xref: /original-bsd/sys/vax/vax/conf.c (revision 24f1d79f)
1 /*	conf.c	4.50	82/05/04	*/
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(),hpdump(),hpioctl();
23 #else
24 #define	hpstrategy	nodev
25 #define	hpread		nodev
26 #define	hpwrite		nodev
27 #define	hpdump		nodev
28 #define	hpioctl		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 "mu.h"
87 #if NMT > 0
88 int	mtopen(),mtclose(),mtstrategy(),mtread(),mtwrite();
89 int	mtioctl(),mtdump();
90 #else
91 #define	mtopen		nodev
92 #define	mtclose		nodev
93 #define	mtstrategy	nodev
94 #define	mtread		nodev
95 #define	mtwrite		nodev
96 #define	mtioctl		nodev
97 #define	mtdump		nodev
98 #endif
99 
100 #include "ra.h"
101 #if NUDA > 0
102 int	udopen(),udstrategy(),udread(),udwrite(),udreset(),uddump();
103 #else
104 #define	udopen		nodev
105 #define	udstrategy	nodev
106 #define	udread		nodev
107 #define	udwrite		nodev
108 #define	udreset		nulldev
109 #define	uddump		nodev
110 #endif
111 
112 #include "up.h"
113 #if NSC > 0
114 int	upstrategy(),upread(),upwrite(),upreset(),updump();
115 #else
116 #define	upstrategy	nodev
117 #define	upread		nodev
118 #define	upwrite		nodev
119 #define	upreset		nulldev
120 #define	updump		nodev
121 #endif
122 
123 #include "tj.h"
124 #if NUT > 0
125 int	utopen(),utclose(),utstrategy(),utread(),utwrite(),utioctl();
126 int	utreset(),utdump();
127 #else
128 #define	utopen		nodev
129 #define	utclose		nodev
130 #define	utread		nodev
131 #define	utstrategy	nodev
132 #define	utwrite		nodev
133 #define	utreset		nulldev
134 #define	utioctl		nodev
135 #define	utdump		nodev
136 #endif
137 
138 #if defined(VAX750) || defined(VAX7ZZ)
139 int	tuopen(),tuclose(),tustrategy();
140 #else
141 #define	tuopen		nodev
142 #define	tuclose		nodev
143 #define	tustrategy	nodev
144 #endif
145 
146 int	swstrategy(),swread(),swwrite();
147 
148 struct bdevsw	bdevsw[] =
149 {
150 	nulldev,	nulldev,	hpstrategy,	hpdump,	0,	/*0*/
151 	htopen,		htclose,	htstrategy,	htdump,	B_TAPE,	/*1*/
152 	nulldev,	nulldev,	upstrategy,	updump,	0,	/*2*/
153 	nulldev,	nulldev,	rkstrategy,	rkdump,	0,	/*3*/
154 	nodev,		nodev,		swstrategy,	nodev,	0,	/*4*/
155 	tmopen,		tmclose,	tmstrategy,	tmdump,	B_TAPE,	/*5*/
156 	tsopen,		tsclose,	tsstrategy,	tsdump,	B_TAPE,	/*6*/
157 	mtopen,		mtclose,	mtstrategy,	mtdump,	B_TAPE,	/*7*/
158 	tuopen,		tuclose,	tustrategy,	nodev,	B_TAPE,	/*8*/
159 	udopen,		nulldev,	udstrategy,	uddump,	0,	/*9*/
160 	utopen,		utclose,	utstrategy,	utdump,	B_TAPE,	/*10*/
161 	0,
162 };
163 
164 int	cnopen(),cnclose(),cnread(),cnwrite(),cnioctl();
165 struct tty cons;
166 
167 #include "acc.h"
168 #if NACC > 0
169 int     accreset();
170 #else
171 #define accreset nulldev
172 #endif
173 
174 #include "ct.h"
175 #if NCT > 0
176 int	ctopen(),ctclose(),ctwrite();
177 #else
178 #define	ctopen	nulldev
179 #define	ctclose	nulldev
180 #define	ctwrite	nulldev
181 #endif
182 
183 #include "dh.h"
184 #if NDH == 0
185 #define	dhopen	nodev
186 #define	dhclose	nodev
187 #define	dhread	nodev
188 #define	dhwrite	nodev
189 #define	dhioctl	nodev
190 #define	dhstop	nodev
191 #define	dhreset	nulldev
192 #define	dh11	0
193 #else
194 int	dhopen(),dhclose(),dhread(),dhwrite(),dhioctl(),dhstop(),dhreset();
195 struct	tty dh11[];
196 #endif
197 
198 #if VAX780
199 int	flopen(),flclose(),flread(),flwrite();
200 #endif
201 
202 #include "dz.h"
203 #if NDZ == 0
204 #define	dzopen	nodev
205 #define	dzclose	nodev
206 #define	dzread	nodev
207 #define	dzwrite	nodev
208 #define	dzioctl	nodev
209 #define	dzstop	nodev
210 #define	dzreset	nulldev
211 #define	dz_tty	0
212 #else
213 int	dzopen(),dzclose(),dzread(),dzwrite(),dzioctl(),dzstop(),dzreset();
214 struct	tty dz_tty[];
215 #endif
216 
217 #include "lp.h"
218 #if NLP > 0
219 int	lpopen(),lpclose(),lpwrite(),lpreset();
220 #else
221 #define	lpopen		nodev
222 #define	lpclose		nodev
223 #define	lpwrite		nodev
224 #define	lpreset		nulldev
225 #endif
226 
227 int	syopen(),syread(),sywrite(),syioctl(),syselect();
228 
229 int 	mmread(),mmwrite();
230 #define	mmselect	seltrue
231 
232 #include "va.h"
233 #if NVA > 0
234 int	vaopen(),vaclose(),vawrite(),vaioctl(),vareset(),vaselect();
235 #else
236 #define	vaopen		nodev
237 #define	vaclose		nodev
238 #define	vawrite		nodev
239 #define	vaopen		nodev
240 #define	vaioctl		nodev
241 #define	vareset		nulldev
242 #define	vaselect	nodev
243 #endif
244 
245 #include "vp.h"
246 #if NVP > 0
247 int	vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset(),vpselect();
248 #else
249 #define	vpopen		nodev
250 #define	vpclose		nodev
251 #define	vpwrite		nodev
252 #define	vpioctl		nodev
253 #define	vpreset		nulldev
254 #define	vpselect	nodev
255 #endif
256 
257 #include "pty.h"
258 #if NPTY > 0
259 int	ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop();
260 int	ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect();
261 int	ptyioctl();
262 struct	tty pt_tty[];
263 #else
264 #define ptsopen		nodev
265 #define ptsclose	nodev
266 #define ptsread		nodev
267 #define ptswrite	nodev
268 #define ptcopen		nodev
269 #define ptcclose	nodev
270 #define ptcread		nodev
271 #define ptcwrite	nodev
272 #define ptyioctl	nodev
273 #define	pt_tty		0
274 #define	ptcselect	nodev
275 #define	ptsstop		nulldev
276 #endif
277 
278 #include "dn.h"
279 #if NDN > 0
280 int	dnopen(), dnclose(), dnwrite();
281 #else
282 #define	dnopen		nodev
283 #define	dnclose		nodev
284 #define	dnwrite		nodev
285 #endif
286 
287 #include "gpib.h"
288 #if NGPIB > 0
289 int	gpibopen(),gpibclose(),gpibread(),gpibwrite(),gpibioctl();
290 #else
291 #define	gpibopen	nodev
292 #define	gpibclose	nodev
293 #define	gpibread	nodev
294 #define	gpibwrite	nodev
295 #define	gpibioctl	nodev
296 #endif
297 
298 int	ttselect(), seltrue();
299 
300 struct cdevsw	cdevsw[] =
301 {
302 	cnopen,		cnclose,	cnread,		cnwrite,	/*0*/
303 	cnioctl,	nulldev,	nulldev,	&cons,
304 	ttselect,
305 	dzopen,		dzclose,	dzread,		dzwrite,	/*1*/
306 	dzioctl,	dzstop,		dzreset,	dz_tty,
307 	ttselect,
308 	syopen,		nulldev,	syread,		sywrite,	/*2*/
309 	syioctl,	nulldev,	nulldev,	0,
310 	syselect,
311 	nulldev,	nulldev,	mmread,		mmwrite,	/*3*/
312 	nodev,		nulldev,	nulldev,	0,
313 	mmselect,
314 	nulldev,	nulldev,	hpread,		hpwrite,	/*4*/
315 	hpioctl,	nodev,		nulldev,	0,
316 	seltrue,
317 	htopen,		htclose,	htread,		htwrite,	/*5*/
318 	htioctl,	nodev,		nulldev,	0,
319 	seltrue,
320 	vpopen,		vpclose,	nodev,		vpwrite,	/*6*/
321 	vpioctl,	nulldev,	vpreset,	0,
322 	vpselect,
323 	nulldev,	nulldev,	swread,		swwrite,	/*7*/
324 	nodev,		nodev,		nulldev,	0,
325 	nodev,
326 #if VAX780
327 	flopen,		flclose,	flread,		flwrite,	/*8*/
328 	nodev,		nodev,		nulldev,	0,
329 	seltrue,
330 #else
331 	nodev,		nodev,		nodev,		nodev,		/*8*/
332 	nodev,		nodev,		nodev,		0,
333 	nodev,
334 #endif
335 	nodev,		nodev,		nodev,		nodev,		/*9*/
336 	nodev,		nodev,		nodev,		0,
337 	nodev,
338 	vaopen,		vaclose,	nodev,		vawrite,	/*10*/
339 	vaioctl,	nulldev,	vareset,	0,
340 	vaselect,
341 	nulldev,	nulldev,	rkread,		rkwrite,	/*11*/
342 	nodev,		nodev,		rkreset,	0,
343 	seltrue,
344 	dhopen,		dhclose,	dhread,		dhwrite,	/*12*/
345 	dhioctl,	dhstop,		dhreset,	dh11,
346 	ttselect,
347 	nulldev,	nulldev,	upread,		upwrite,	/*13*/
348 	nodev,		nodev,		upreset,	0,
349 	seltrue,
350 	tmopen,		tmclose,	tmread,		tmwrite,	/*14*/
351 	tmioctl,	nodev,		tmreset,	0,
352 	seltrue,
353 	lpopen,		lpclose,	nodev,		lpwrite,	/*15*/
354 	nodev,		nodev,		lpreset,	0,
355 	seltrue,
356 	tsopen,		tsclose,	tsread,		tswrite,	/*16*/
357 	tsioctl,	nodev,		tsreset,	0,
358 	seltrue,
359 	utopen,		utclose,	utread,		utwrite,	/*17*/
360 	utioctl,	nodev,		utreset,	0,
361 	seltrue,
362 	ctopen,		ctclose,	nodev,		ctwrite,	/*18*/
363 	nodev,		nodev,		nulldev,	0,
364 	seltrue,
365 	nodev,		nodev,		nodev,		nodev,		/*19*/
366 	nodev,		nodev,		nulldev,	0,
367 	nodev,
368 	ptsopen,	ptsclose,	ptsread,	ptswrite,	/*20*/
369 	ptyioctl,	ptsstop,	nodev,		pt_tty,
370 	ttselect,
371 	ptcopen,	ptcclose,	ptcread,	ptcwrite,	/*21*/
372 	ptyioctl,	nulldev,	nodev,		pt_tty,
373 	ptcselect,
374 	nodev,		nodev,		nodev,		nodev,		/*22*/
375 	nodev,		nodev,		nodev,		0,
376 	nodev,
377 	nodev,		nodev,		nodev,		nodev,		/*23*/
378 	nodev,		nodev,		nodev,		0,
379 	nodev,
380 	dnopen,		dnclose,	nodev,		dnwrite,	/*24*/
381 	nodev,		nodev,		nodev,		0,
382 	seltrue,
383 /* 25-29 reserved to local sites */
384 	gpibopen,	gpibclose,	gpibread,	gpibwrite,	/*25*/
385 	gpibioctl,	nulldev,	nodev,		0,
386 	seltrue,
387 	0,
388 };
389 
390 int	ttyopen(),ttyclose(),ttread(),nullioctl(),ttstart();
391 char	*ttwrite();
392 int	ttyinput();
393 
394 #include "bk.h"
395 #if NBK > 0
396 int	bkopen(),bkclose(),bkread(),bkinput(),bkioctl();
397 #endif
398 
399 struct	linesw linesw[] =
400 {
401 	ttyopen, nodev, ttread, ttwrite, nullioctl,
402 	ttyinput, nodev, nulldev, ttstart, nulldev,
403 #if NBK > 0
404 	bkopen, bkclose, bkread, ttwrite, bkioctl,
405 	bkinput, nodev, nulldev, ttstart, nulldev,
406 #else
407 	nodev, nodev, nodev, (char *(*)())nodev, nodev,
408 	nodev, nodev, nodev, nodev, nodev,
409 #endif
410 	ttyopen, ttyclose, ttread, ttwrite, nullioctl,
411 	ttyinput, nodev, nulldev, ttstart, nulldev,
412 	0
413 };
414 
415 int	nldisp = 3;
416 
417 struct	buf	bfreelist[BQUEUES];	/* buffer chain headers */
418 struct	buf	bswlist;	/* free list of swap headers */
419 struct	buf	*bclnlist;	/* header for list of cleaned pages */
420 struct	acct	acctbuf;
421 struct	inode	*acctp;
422 
423 int	mem_no = 3; 	/* major device number of memory special file */
424 
425 /*
426  * Swapdev is a fake device implemented
427  * in sw.c used only internally to get to swstrategy.
428  * It cannot be provided to the users, because the
429  * swstrategy routine munches the b_dev and b_blkno entries
430  * before calling the appropriate driver.  This would horribly
431  * confuse, e.g. the hashing routines. Instead, /dev/drum is
432  * provided as a character (raw) device.
433  */
434 dev_t	swapdev = makedev(4, 0);
435 
436 extern struct user u;
437