xref: /original-bsd/sys/tahoe/tahoe/conf.c (revision 9eb838fd)
1 /*
2  * Copyright (c) 1988 Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms are permitted
6  * provided that the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  *	@(#)conf.c	7.5 (Berkeley) 05/09/89
18  */
19 
20 #include "param.h"
21 #include "systm.h"
22 #include "buf.h"
23 #include "ioctl.h"
24 #include "tty.h"
25 #include "conf.h"
26 
27 int nulldev(), nodev(), rawread(), rawwrite(), swstrategy();
28 
29 #include "dk.h"
30 #if NVD > 0
31 int	vdopen(),vdclose(),vdstrategy(),vdioctl();
32 int	vddump(),vdsize();
33 #else
34 #define	vdopen		nodev
35 #define	vdclose		nodev
36 #define	vdstrategy	nodev
37 #define	vdioctl		nodev
38 #define	vddump		nodev
39 #define	vdsize		0
40 #endif
41 
42 #include "hd.h"
43 #if NHD > 0
44 int	hdopen(),hdclose(),hdstrategy(),hdioctl();
45 int	hddump(),hdsize();
46 #else
47 #define	hdopen		nodev
48 #define	hdclose		nodev
49 #define	hdstrategy	nodev
50 #define	hdioctl		nodev
51 #define	hddump		nodev
52 #define	hdsize		0
53 #endif
54 
55 #include "yc.h"
56 #if NCY > 0
57 int	cyopen(),cyclose(),cystrategy(),cydump();
58 int	cyioctl(),cyreset();
59 #else
60 #define	cyopen		nodev
61 #define	cyclose		nodev
62 #define	cystrategy	nodev
63 #define	cydump		nodev
64 #define	cyioctl		nodev
65 #define	cyreset		nulldev
66 #endif
67 
68 struct bdevsw	bdevsw[] =
69 {
70 	{ nodev,	nulldev,	nodev,		nodev,		/*0*/
71 	  nodev,	0,		0 },
72 	{ vdopen,	vdclose,	vdstrategy,	vdioctl,	/*1*/
73 	  vddump,	vdsize,		0 },
74 	{ hdopen,	hdclose,	hdstrategy,	hdioctl,	/*2*/
75 	  hddump,	hdsize,		0 },
76 	{ cyopen,	cyclose,	cystrategy,	cyioctl,	/*3*/
77 	  cydump,	0,		B_TAPE },
78 	{ nodev,	nodev,		swstrategy,	nodev,		/*4*/
79 	  nodev,	0,		0 },
80 };
81 int	nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
82 
83 int	cnopen(),cnclose(),cnread(),cnwrite(),cnioctl();
84 extern	struct tty cons;
85 
86 #include "vx.h"
87 #if NVX == 0
88 #define	vxopen	nodev
89 #define	vxclose	nodev
90 #define	vxread	nodev
91 #define	vxwrite	nodev
92 #define	vxioctl	nodev
93 #define	vxstop	nodev
94 #define	vxreset	nulldev
95 #define	vx_tty	0
96 #else
97 int	vxopen(),vxclose(),vxread(),vxwrite(),vxioctl(),vxstop(),vxreset();
98 struct	tty vx_tty[];
99 #endif
100 
101 int	syopen(),syread(),sywrite(),syioctl(),syselect();
102 
103 int 	mmrw();
104 #define	mmselect	seltrue
105 
106 #include "pty.h"
107 #if NPTY > 0
108 int	ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop();
109 int	ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect();
110 int	ptyioctl();
111 struct	tty pt_tty[];
112 #else
113 #define ptsopen		nodev
114 #define ptsclose	nodev
115 #define ptsread		nodev
116 #define ptswrite	nodev
117 #define ptcopen		nodev
118 #define ptcclose	nodev
119 #define ptcread		nodev
120 #define ptcwrite	nodev
121 #define ptyioctl	nodev
122 #define	pt_tty		0
123 #define	ptcselect	nodev
124 #define	ptsstop		nulldev
125 #endif
126 
127 #include "mp.h"
128 #if NMP > 0
129 int	mpopen(), mpclose(), mpread(), mpwrite(), mpioctl(), mpstop();
130 int	mpdlopen(), mpdlclose(), mpdlwrite(), mpdlioctl();
131 extern	struct tty mp_tty[];
132 #else
133 #define	mpopen		nodev
134 #define	mpclose		nodev
135 #define	mpread		nodev
136 #define	mpwrite		nodev
137 #define	mpioctl		nodev
138 #define	mpstop		nodev
139 #define	mpdlopen	nodev
140 #define	mpdlclose	nodev
141 #define	mpdlwrite	nodev
142 #define	mpdlioctl	nodev
143 #define	mp_tty		0
144 #endif
145 
146 #if NII > 0
147 int	iiioctl(), iiclose(), iiopen();
148 #else
149 #define	iiopen	nodev
150 #define	iiclose	nodev
151 #define	iiioctl	nodev
152 #endif
153 
154 #include "enp.h"
155 #if NENP > 0
156 int	enpr_open(), enpr_close(), enpr_read(), enpr_write(), enpr_ioctl();
157 #else
158 #define enpr_open	nodev
159 #define enpr_close	nodev
160 #define enpr_read	nodev
161 #define enpr_write	nodev
162 #define enpr_ioctl	nodev
163 #endif
164 
165 #include "dr.h"
166 #if NDR > 0
167 int     dropen(),drclose(),drread(),drwrite(),drioctl(),drreset();
168 #else
169 #define dropen nodev
170 #define drclose nodev
171 #define drread nodev
172 #define drwrite nodev
173 #define drioctl nodev
174 #define drreset nodev
175 #endif
176 
177 #include "ik.h"
178 #if NIK > 0
179 int     ikopen(),ikclose(),ikread(),ikwrite(),ikioctl();
180 #else
181 #define ikopen nodev
182 #define ikclose nodev
183 #define ikread nodev
184 #define ikwrite nodev
185 #define ikioctl nodev
186 #endif
187 
188 int	logopen(),logclose(),logread(),logioctl(),logselect();
189 
190 int	fdopen();
191 
192 int	ttselect(), seltrue();
193 
194 struct cdevsw	cdevsw[] =
195 {
196 	cnopen,		cnclose,	cnread,		cnwrite,	/*0*/
197 	cnioctl,	nulldev,	nulldev,	&cons,
198 	ttselect,	nodev,		NULL,
199 	vxopen,		vxclose,	vxread,		vxwrite,	/*1*/
200 	vxioctl,	vxstop,		vxreset,	vx_tty,
201 	ttselect,	nodev,		NULL,
202 	syopen,		nulldev,	syread,		sywrite,	/*2*/
203 	syioctl,	nulldev,	nulldev,	NULL,
204 	syselect,	nodev,		NULL,
205 	nulldev,	nulldev,	mmrw,		mmrw,		/*3*/
206 	nodev,		nulldev,	nulldev,	NULL,
207 	mmselect,	nodev,		NULL,
208 	nodev,		nulldev,	nodev,		nodev,		/*4*/
209 	nodev,		nodev,		nulldev,	NULL,
210 	seltrue,	nodev,		NULL,
211 	vdopen,		vdclose,	rawread,	rawwrite,	/*5*/
212 	vdioctl,	nodev,		nulldev,	NULL,
213 	seltrue,	nodev,		vdstrategy,
214 	hdopen,		hdclose,	rawread,	rawwrite,	/*6*/
215 	hdioctl,	nodev,		nulldev,	NULL,
216 	seltrue,	nodev,		hdstrategy,
217 	cyopen,		cyclose,	rawread,	rawwrite,	/*7*/
218 	cyioctl,	nodev,		cyreset,	NULL,
219 	seltrue,	nodev,		cystrategy,
220 	nulldev,	nulldev,	rawread,	rawwrite,	/*8*/
221 	nodev,		nodev,		nulldev,	NULL,
222 	nodev,		nodev,		swstrategy,
223 	ptsopen,	ptsclose,	ptsread,	ptswrite,	/*9*/
224 	ptyioctl,	ptsstop,	nodev,		pt_tty,
225 	ttselect,	nodev,		NULL,
226 	ptcopen,	ptcclose,	ptcread,	ptcwrite,	/*10*/
227 	ptyioctl,	nulldev,	nodev,		pt_tty,
228 	ptcselect,	nodev,		NULL,
229 	mpdlopen,	mpdlclose,	nodev,		mpdlwrite,	/*11*/
230 	mpdlioctl,	nodev,		nulldev,	NULL,
231 	seltrue,	nodev,		NULL,
232 	mpopen,		mpclose,	mpread,		mpwrite,	/*12*/
233 	mpioctl,	mpstop,		nulldev,	mp_tty,
234 	ttselect,	nodev,		NULL,
235 	nodev,		nodev,		nodev,		nodev,		/*13*/
236 	nodev,		nodev,		nulldev,	NULL,
237 	nodev,		nodev,		NULL,
238 	iiopen,		iiclose,	nulldev,	nulldev,	/*14*/
239 	iiioctl,	nulldev,	nulldev,	NULL,
240 	seltrue,	nodev,		NULL,
241 	logopen,	logclose,	logread,	nodev,		/*15*/
242 	logioctl,	nodev,		nulldev,	NULL,
243 	logselect,	nodev,		NULL,
244 	enpr_open,	enpr_close,	enpr_read,	enpr_write,	/*16*/
245 	enpr_ioctl,	nodev,		nulldev,	NULL,
246 	nodev,		nodev,		NULL,
247 	nodev,		nodev,		nodev,		nodev,		/*17*/
248 	nodev,		nodev,		nulldev,	NULL,
249 	nodev,		nodev,		NULL,
250 	dropen,		drclose,	drread,		drwrite,	/*18*/
251 	drioctl,	nodev,		drreset,	NULL,
252 	nodev,		nodev,		NULL,
253 	nodev,		nodev,		nodev,		nodev,		/*19*/
254 	nodev,		nodev,		nulldev,	NULL,
255 	nodev,		nodev,		NULL,
256 /* 20-30 are reserved for local use */
257 	ikopen,		ikclose,	ikread,		ikwrite,	/*20*/
258 	ikioctl,	nodev,		nulldev,	NULL,
259 	nodev,		nodev,		NULL,
260 	fdopen,		nodev,		nodev,		nodev,		/*21*/
261 	nodev,		nodev,		nodev,		NULL,
262 	nodev,		nodev,		NULL,
263 };
264 int	nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
265 
266 int	mem_no = 3; 	/* major device number of memory special file */
267 
268 /*
269  * Swapdev is a fake device implemented
270  * in sw.c used only internally to get to swstrategy.
271  * It cannot be provided to the users, because the
272  * swstrategy routine munches the b_dev and b_blkno entries
273  * before calling the appropriate driver.  This would horribly
274  * confuse, e.g. the hashing routines. Instead, /dev/drum is
275  * provided as a character (raw) device.
276  */
277 dev_t	swapdev = makedev(4, 0);
278