xref: /original-bsd/sys/i386/i386/conf.c (revision 95a66346)
1 /*-
2  * Copyright (c) 1990 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * William Jolitz.
7  *
8  * %sccs.include.386.c%
9  *
10  *	@(#)conf.c	5.5 (Berkeley) 01/19/91
11  */
12 
13 #include "param.h"
14 #include "systm.h"
15 #include "buf.h"
16 #include "ioctl.h"
17 #include "tty.h"
18 #include "conf.h"
19 
20 int	nulldev();
21 int	nodev();
22 int	rawread(), rawwrite(), swstrategy();
23 
24 #include "wd.h"
25 #if NWD > 0
26 int	wdopen(),wdclose(),wdstrategy(),wdread(),wdwrite(),wdioctl();
27 int	wddump(),wdsize();
28 #else
29 #define	wdopen		nodev
30 #define	wdclose		nodev
31 #define	wdstrategy	nodev
32 #define	wdread		nodev
33 #define	wdwrite		nodev
34 #define	wdioctl		nodev
35 #define	wddump		nodev
36 #define	wdsize		NULL
37 #endif
38 
39 #include "xd.h"
40 #if NXD > 0
41 int	xdopen(),xdclose(),xdstrategy(),xdread(),xdwrite(),xdioctl();
42 int	xddump(),xdsize();
43 #else
44 #define	xdopen		nodev
45 #define	xdclose		nodev
46 #define	xdstrategy	nodev
47 #define	xdread		nodev
48 #define	xdwrite		nodev
49 #define	xdioctl		nodev
50 #define	xddump		nodev
51 #define	xdsize		NULL
52 #endif
53 
54 #include "wt.h"
55 #if NWT > 0
56 int	wtopen(),wtclose(),wtstrategy(),wtread(),wtwrite(),wtioctl();
57 int	wtdump(),wtsize();
58 #else
59 #define	wtopen		nodev
60 #define	wtclose		nodev
61 #define	wtstrategy	nodev
62 #define	wtread		nodev
63 #define	wtwrite		nodev
64 #define	wtioctl		nodev
65 #define	wtdump		nodev
66 #define	wtsize		NULL
67 #endif
68 
69 #include "fd.h"
70 #if NFD > 0
71 int	Fdopen(),fdclose(),fdstrategy(),fdread(),fdwrite();
72 #define	fdioctl		nodev
73 #define	fddump		nodev
74 #define	fdsize		NULL
75 #else
76 #define	Fdopen		nodev
77 #define	fdclose		nodev
78 #define	fdstrategy	nodev
79 #define	fdread		nodev
80 #define	fdwrite		nodev
81 #define	fdioctl		nodev
82 #define	fddump		nodev
83 #define	fdsize		NULL
84 #endif
85 
86 int	swstrategy(),swread(),swwrite();
87 
88 struct bdevsw	bdevsw[] =
89 {
90 	{ wdopen,	wdclose,	wdstrategy,	wdioctl,	/*0*/
91 	  wddump,	wdsize,		NULL },
92 	{ nodev,	nodev,		swstrategy,	nodev,		/*1*/
93 	  nodev,	nodev,		NULL },
94 	{ Fdopen,	fdclose,	fdstrategy,	fdioctl,	/*2*/
95 	  fddump,	fdsize,		NULL },
96 	{ wtopen,	wtclose,	wtstrategy,	wtioctl,	/*3*/
97 	  wtdump,	wtsize,		B_TAPE },
98 	{ xdopen,	xdclose,	xdstrategy,	xdioctl,	/*4*/
99 	  xddump,	xdsize,		NULL },
100 };
101 int	nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]);
102 
103 int	cnopen(),cnclose(),cnread(),cnwrite(),cnioctl();
104 extern	struct tty cons;
105 
106 int	syopen(),syread(),sywrite(),syioctl(),syselect();
107 
108 int 	mmrw();
109 #define	mmselect	seltrue
110 
111 #include "pty.h"
112 #if NPTY > 0
113 int	ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop();
114 int	ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect();
115 int	ptyioctl();
116 struct	tty pt_tty[];
117 #else
118 #define ptsopen		nodev
119 #define ptsclose	nodev
120 #define ptsread		nodev
121 #define ptswrite	nodev
122 #define ptcopen		nodev
123 #define ptcclose	nodev
124 #define ptcread		nodev
125 #define ptcwrite	nodev
126 #define ptyioctl	nodev
127 #define	pt_tty		NULL
128 #define	ptcselect	nodev
129 #define	ptsstop		nulldev
130 #endif
131 
132 #include "com.h"
133 #if NCOM > 0
134 int	comopen(),comclose(),comread(),comwrite(),comioctl();
135 #define comreset	nodev
136 extern	struct tty com_tty[];
137 #else
138 #define comopen		nodev
139 #define comclose	nodev
140 #define comread		nodev
141 #define comwrite	nodev
142 #define comioctl	nodev
143 #define comreset	nodev
144 #define	com_tty		NULL
145 #endif
146 
147 int	logopen(),logclose(),logread(),logioctl(),logselect();
148 
149 int	ttselect(), seltrue();
150 
151 
152 struct cdevsw	cdevsw[] =
153 {
154 	cnopen,		cnclose,	cnread,		cnwrite,	/*0*/
155 	cnioctl,	nulldev,	nulldev,	&cons,
156 	ttselect,	nodev,		NULL,
157 	syopen,		nulldev,	syread,		sywrite,	/*1*/
158 	syioctl,	nulldev,	nulldev,	NULL,
159 	syselect,	nodev,		NULL,
160 	nulldev,	nulldev,	mmrw,		mmrw,		/*2*/
161 	nodev,		nulldev,	nulldev,	NULL,
162 	mmselect,	nodev,		NULL,
163 	wdopen,		wdclose,	wdread,		wdwrite,	/*3*/
164 	wdioctl,	nodev,		nulldev,	NULL,
165 	seltrue,	nodev,		wdstrategy,
166 	nulldev,	nulldev,	rawread,	rawwrite,	/*4*/
167 	nodev,		nodev,		nulldev,	NULL,
168 	nodev,		nodev,		swstrategy,
169 	ptsopen,	ptsclose,	ptsread,	ptswrite,	/*5*/
170 	ptyioctl,	ptsstop,	nulldev,	pt_tty,
171 	ttselect,	nodev,		NULL,
172 	ptcopen,	ptcclose,	ptcread,	ptcwrite,	/*6*/
173 	ptyioctl,	nulldev,	nulldev,	pt_tty,
174 	ptcselect,	nodev,		NULL,
175 	logopen,	logclose,	logread,	nodev,		/*7*/
176 	logioctl,	nodev,		nulldev,	NULL,
177 	logselect,	nodev,		NULL,
178 	comopen,	comclose,	comread,	comwrite,	/*8*/
179 	comioctl,	nodev,		comreset,	com_tty,
180 	ttselect,	nodev,		NULL,
181 	Fdopen,		fdclose,	fdread,		fdwrite,	/*9*/
182 	fdioctl,	nodev,		nulldev,	NULL,
183 	seltrue,	nodev,		fdstrategy,
184 	wtopen,		wtclose,	wtread,		wtwrite,	/*A*/
185 	wtioctl,	nodev,		nulldev,	NULL,
186 	seltrue,	nodev,		wtstrategy,
187 	xdopen,		xdclose,	xdread,		xdwrite,	/*B*/
188 	xdioctl,	nodev,		nulldev,	NULL,
189 	seltrue,	nodev,		xdstrategy,
190 };
191 int	nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]);
192 
193 int	mem_no = 2; 	/* major device number of memory special file */
194 
195 /*
196  * Swapdev is a fake device implemented
197  * in sw.c used only internally to get to swstrategy.
198  * It cannot be provided to the users, because the
199  * swstrategy routine munches the b_dev and b_blkno entries
200  * before calling the appropriate driver.  This would horribly
201  * confuse, e.g. the hashing routines. Instead, /dev/drum is
202  * provided as a character (raw) device.
203  */
204 dev_t	swapdev = makedev(1, 0);
205