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