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