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