xref: /csrg-svn/sys/tahoe/tahoe/conf.c (revision 49444)
134407Skarels /*
234407Skarels  * Copyright (c) 1988 Regents of the University of California.
334407Skarels  * All rights reserved.
434407Skarels  *
544526Sbostic  * %sccs.include.redist.c%
634407Skarels  *
7*49444Skarels  *	@(#)conf.c	7.9 (Berkeley) 05/08/91
834407Skarels  */
924042Ssam 
1045797Sbostic #include "sys/param.h"
1145797Sbostic #include "sys/systm.h"
1245797Sbostic #include "sys/buf.h"
1345797Sbostic #include "sys/ioctl.h"
1445797Sbostic #include "sys/tty.h"
1545797Sbostic #include "sys/conf.h"
1624042Ssam 
1746628Smckusick int nullop(), enxio(), enodev(), rawread(), rawwrite(), swstrategy();
1824042Ssam 
1929557Ssam #include "dk.h"
2024042Ssam #if NVD > 0
2134495Skarels int	vdopen(),vdclose(),vdstrategy(),vdioctl();
2230675Skarels int	vddump(),vdsize();
2324042Ssam #else
2446628Smckusick #define	vdopen		enxio
2546628Smckusick #define	vdclose		enxio
2646628Smckusick #define	vdstrategy	enxio
2746628Smckusick #define	vdioctl		enxio
2846628Smckusick #define	vddump		enxio
2924042Ssam #define	vdsize		0
3024042Ssam #endif
3124042Ssam 
3237569Sbostic #include "hd.h"
3337569Sbostic #if NHD > 0
3437569Sbostic int	hdopen(),hdclose(),hdstrategy(),hdioctl();
3537569Sbostic int	hddump(),hdsize();
3637569Sbostic #else
3746628Smckusick #define	hdopen		enxio
3846628Smckusick #define	hdclose		enxio
3946628Smckusick #define	hdstrategy	enxio
4046628Smckusick #define	hdioctl		enxio
4146628Smckusick #define	hddump		enxio
4237569Sbostic #define	hdsize		0
4337569Sbostic #endif
4437569Sbostic 
4525981Ssam #include "yc.h"
4624042Ssam #if NCY > 0
4734495Skarels int	cyopen(),cyclose(),cystrategy(),cydump();
4834291Skarels int	cyioctl(),cyreset();
4924042Ssam #else
5046628Smckusick #define	cyopen		enxio
5146628Smckusick #define	cyclose		enxio
5246628Smckusick #define	cystrategy	enxio
5346628Smckusick #define	cydump		enxio
5446628Smckusick #define	cyioctl		enxio
5546628Smckusick #define	cyreset		nullop
5624042Ssam #endif
5724042Ssam 
5824042Ssam struct bdevsw	bdevsw[] =
5924042Ssam {
60*49444Skarels 	{ enodev,	nullop,		enodev,		enodev,		/*0*/
6146628Smckusick 	  enodev,	0,		0 },
6230675Skarels 	{ vdopen,	vdclose,	vdstrategy,	vdioctl,	/*1*/
6330675Skarels 	  vddump,	vdsize,		0 },
6437569Sbostic 	{ hdopen,	hdclose,	hdstrategy,	hdioctl,	/*2*/
6537569Sbostic 	  hddump,	hdsize,		0 },
6630675Skarels 	{ cyopen,	cyclose,	cystrategy,	cyioctl,	/*3*/
6730675Skarels 	  cydump,	0,		B_TAPE },
6846628Smckusick 	{ enodev,	enodev,		swstrategy,	enodev,		/*4*/
6946628Smckusick 	  enodev,	0,		0 },
7024042Ssam };
7124042Ssam int	nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
7224042Ssam 
7324042Ssam int	cnopen(),cnclose(),cnread(),cnwrite(),cnioctl();
7425678Ssam extern	struct tty cons;
7524042Ssam 
7624042Ssam #include "vx.h"
7724042Ssam #if NVX == 0
7846628Smckusick #define	vxopen	enxio
7946628Smckusick #define	vxclose	enxio
8046628Smckusick #define	vxread	enxio
8146628Smckusick #define	vxwrite	enxio
8246628Smckusick #define	vxioctl	enxio
8346628Smckusick #define	vxstop	enxio
8446628Smckusick #define	vxreset	nullop
8524042Ssam #define	vx_tty	0
8624042Ssam #else
8724042Ssam int	vxopen(),vxclose(),vxread(),vxwrite(),vxioctl(),vxstop(),vxreset();
8824042Ssam struct	tty vx_tty[];
8924042Ssam #endif
9024042Ssam 
91*49444Skarels int	cttyopen(),cttyread(),cttywrite(),cttyioctl(),cttyselect();
9224042Ssam 
9337746Smckusick int 	mmrw();
9424042Ssam #define	mmselect	seltrue
9524042Ssam 
9624042Ssam #include "pty.h"
9724042Ssam #if NPTY > 0
9824042Ssam int	ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop();
9924042Ssam int	ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect();
10024042Ssam int	ptyioctl();
10124042Ssam struct	tty pt_tty[];
10224042Ssam #else
10346628Smckusick #define ptsopen		enxio
10446628Smckusick #define ptsclose	enxio
10546628Smckusick #define ptsread		enxio
10646628Smckusick #define ptswrite	enxio
10746628Smckusick #define ptcopen		enxio
10846628Smckusick #define ptcclose	enxio
10946628Smckusick #define ptcread		enxio
11046628Smckusick #define ptcwrite	enxio
11146628Smckusick #define ptyioctl	enxio
11224042Ssam #define	pt_tty		0
11346628Smckusick #define	ptcselect	enxio
11446628Smckusick #define	ptsstop		nullop
11524042Ssam #endif
11624042Ssam 
11734495Skarels #include "mp.h"
11832634Ssam #if NMP > 0
11932634Ssam int	mpopen(), mpclose(), mpread(), mpwrite(), mpioctl(), mpstop();
12032634Ssam int	mpdlopen(), mpdlclose(), mpdlwrite(), mpdlioctl();
12132634Ssam extern	struct tty mp_tty[];
12224042Ssam #else
12346628Smckusick #define	mpopen		enxio
12446628Smckusick #define	mpclose		enxio
12546628Smckusick #define	mpread		enxio
12646628Smckusick #define	mpwrite		enxio
12746628Smckusick #define	mpioctl		enxio
12846628Smckusick #define	mpstop		enxio
12946628Smckusick #define	mpdlopen	enxio
13046628Smckusick #define	mpdlclose	enxio
13146628Smckusick #define	mpdlwrite	enxio
13246628Smckusick #define	mpdlioctl	enxio
13332634Ssam #define	mp_tty		0
13424042Ssam #endif
13524042Ssam 
13624042Ssam #if NII > 0
13724042Ssam int	iiioctl(), iiclose(), iiopen();
13824042Ssam #else
13946628Smckusick #define	iiopen	enxio
14046628Smckusick #define	iiclose	enxio
14146628Smckusick #define	iiioctl	enxio
14224042Ssam #endif
14324042Ssam 
14430173Ssam #include "enp.h"
14530173Ssam #if NENP > 0
14630173Ssam int	enpr_open(), enpr_close(), enpr_read(), enpr_write(), enpr_ioctl();
14730173Ssam #else
14846628Smckusick #define enpr_open	enxio
14946628Smckusick #define enpr_close	enxio
15046628Smckusick #define enpr_read	enxio
15146628Smckusick #define enpr_write	enxio
15246628Smckusick #define enpr_ioctl	enxio
15330173Ssam #endif
15430173Ssam 
15530173Ssam #include "dr.h"
15630173Ssam #if NDR > 0
15730173Ssam int     dropen(),drclose(),drread(),drwrite(),drioctl(),drreset();
15830173Ssam #else
15946628Smckusick #define dropen enxio
16046628Smckusick #define drclose enxio
16146628Smckusick #define drread enxio
16246628Smckusick #define drwrite enxio
16346628Smckusick #define drioctl enxio
16446628Smckusick #define drreset enxio
16530173Ssam #endif
16630173Ssam 
16730173Ssam #include "ik.h"
16830173Ssam #if NIK > 0
16930173Ssam int     ikopen(),ikclose(),ikread(),ikwrite(),ikioctl();
17030173Ssam #else
17146628Smckusick #define ikopen enxio
17246628Smckusick #define ikclose enxio
17346628Smckusick #define ikread enxio
17446628Smckusick #define ikwrite enxio
17546628Smckusick #define ikioctl enxio
17630173Ssam #endif
17730173Ssam 
17825678Ssam int	logopen(),logclose(),logread(),logioctl(),logselect();
17925678Ssam 
18037569Sbostic int	fdopen();
18137569Sbostic 
18224042Ssam int	ttselect(), seltrue();
18324042Ssam 
18424042Ssam struct cdevsw	cdevsw[] =
18524042Ssam {
186*49444Skarels 	{ cnopen,	cnclose,	cnread,		cnwrite,	/*0*/
187*49444Skarels 	  cnioctl,	nullop,		nullop,		&cons,
188*49444Skarels 	  ttselect,	enodev,		NULL },
189*49444Skarels 	{ vxopen,	vxclose,	vxread,		vxwrite,	/*1*/
190*49444Skarels 	  vxioctl,	vxstop,		vxreset,	vx_tty,
191*49444Skarels 	  ttselect,	enodev,		NULL },
192*49444Skarels 	{ cttyopen,	nullop,		cttyread,	cttywrite,	/*2*/
193*49444Skarels 	  cttyioctl,	nullop,		nullop,		NULL,
194*49444Skarels 	  cttyselect,	enodev,		NULL },
195*49444Skarels 	{ nullop,	nullop,		mmrw,		mmrw,		/*3*/
196*49444Skarels 	  enodev,	nullop,		nullop,		NULL,
197*49444Skarels 	  mmselect,	enodev,		NULL },
198*49444Skarels 	{ enodev,	nullop,		enodev,		enodev,		/*4*/
199*49444Skarels 	  enodev,	enodev,		nullop,		NULL,
200*49444Skarels 	  seltrue,	enodev,		NULL },
201*49444Skarels 	{ vdopen,	vdclose,	rawread,	rawwrite,	/*5*/
202*49444Skarels 	  vdioctl,	enodev,		nullop,		NULL,
203*49444Skarels 	  seltrue,	enodev,		vdstrategy },
204*49444Skarels 	{ hdopen,	hdclose,	rawread,	rawwrite,	/*6*/
205*49444Skarels 	  hdioctl,	enodev,		nullop,		NULL,
206*49444Skarels 	  seltrue,	enodev,		hdstrategy },
207*49444Skarels 	{ cyopen,	cyclose,	rawread,	rawwrite,	/*7*/
208*49444Skarels 	  cyioctl,	enodev,		cyreset,	NULL,
209*49444Skarels 	  seltrue,	enodev,		cystrategy },
210*49444Skarels 	{ nullop,	nullop,		rawread,	rawwrite,	/*8*/
211*49444Skarels 	  enodev,	enodev,		nullop,		NULL,
212*49444Skarels 	  enodev,	enodev,		swstrategy },
213*49444Skarels 	{ ptsopen,	ptsclose,	ptsread,	ptswrite,	/*9*/
214*49444Skarels 	  ptyioctl,	ptsstop,	enodev,		pt_tty,
215*49444Skarels 	  ttselect,	enodev,		NULL },
216*49444Skarels 	{ ptcopen,	ptcclose,	ptcread,	ptcwrite,	/*10*/
217*49444Skarels 	  ptyioctl,	nullop,		enodev,		pt_tty,
218*49444Skarels 	  ptcselect,	enodev,		NULL },
219*49444Skarels 	{ mpdlopen,	mpdlclose,	enodev,		mpdlwrite,	/*11*/
220*49444Skarels 	  mpdlioctl,	enodev,		nullop,		NULL,
221*49444Skarels 	  seltrue,	enodev,		NULL },
222*49444Skarels 	{ mpopen,	mpclose,	mpread,		mpwrite,	/*12*/
223*49444Skarels 	  mpioctl,	mpstop,		nullop,		mp_tty,
224*49444Skarels 	  ttselect,	enodev,		NULL },
225*49444Skarels 	{ enodev,	enodev,		enodev,		enodev,		/*13*/
226*49444Skarels 	  enodev,	enodev,		nullop,		NULL,
227*49444Skarels 	  enodev,	enodev,		NULL },
228*49444Skarels 	{ iiopen,	iiclose,	nullop,		nullop,		/*14*/
229*49444Skarels 	  iiioctl,	nullop,		nullop,		NULL,
230*49444Skarels 	  seltrue,	enodev,		NULL },
231*49444Skarels 	{ logopen,	logclose,	logread,	enodev,		/*15*/
232*49444Skarels 	  logioctl,	enodev,		nullop,		NULL,
233*49444Skarels 	  logselect,	enodev,		NULL },
234*49444Skarels 	{ enpr_open,	enpr_close,	enpr_read,	enpr_write,	/*16*/
235*49444Skarels 	  enpr_ioctl,	enodev,		nullop,		NULL,
236*49444Skarels 	  enodev,	enodev,		NULL },
237*49444Skarels 	{ enodev,	enodev,		enodev,		enodev,		/*17*/
238*49444Skarels 	  enodev,	enodev,		nullop,		NULL,
239*49444Skarels 	  enodev,	enodev,		NULL },
240*49444Skarels 	{ dropen,	drclose,	drread,		drwrite,	/*18*/
241*49444Skarels 	  drioctl,	enodev,		drreset,	NULL,
242*49444Skarels 	  enodev,	enodev,		NULL },
243*49444Skarels 	{ fdopen,	enodev,		enodev,		enodev,		/*19*/
244*49444Skarels 	  enodev,	enodev,		enodev,		NULL,
245*49444Skarels 	  enodev,	enodev,		NULL },
24630173Ssam /* 20-30 are reserved for local use */
247*49444Skarels 	{ ikopen,	ikclose,	ikread,		ikwrite,	/*20*/
248*49444Skarels 	  ikioctl,	enodev,		nullop,		NULL,
249*49444Skarels 	  enodev,	enodev,		NULL },
250*49444Skarels 	{ fdopen,	enodev,		enodev,		enodev,		/*21*/
251*49444Skarels 	  enodev,	enodev,		enodev,		NULL,
252*49444Skarels 	  enodev,	enodev,		NULL },
25324042Ssam };
25424042Ssam int	nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
25524042Ssam 
25624042Ssam int	mem_no = 3; 	/* major device number of memory special file */
25724042Ssam 
25824042Ssam /*
25924042Ssam  * Swapdev is a fake device implemented
26024042Ssam  * in sw.c used only internally to get to swstrategy.
26124042Ssam  * It cannot be provided to the users, because the
26224042Ssam  * swstrategy routine munches the b_dev and b_blkno entries
26324042Ssam  * before calling the appropriate driver.  This would horribly
26424042Ssam  * confuse, e.g. the hashing routines. Instead, /dev/drum is
26524042Ssam  * provided as a character (raw) device.
26624042Ssam  */
26724042Ssam dev_t	swapdev = makedev(4, 0);
268