|
|
1.1 root 1: /*
2: * Mach Operating System
3: * Copyright (c) 1993-1989 Carnegie Mellon University
4: * All Rights Reserved.
5: *
6: * Permission to use, copy, modify and distribute this software and its
7: * documentation is hereby granted, provided that both the copyright
8: * notice and this permission notice appear in all copies of the
9: * software, derivative works or modified versions, and any portions
10: * thereof, and that both notices appear in supporting documentation.
11: *
12: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15: *
16: * Carnegie Mellon requests users of this software to return to
17: *
18: * Software Distribution Coordinator or [email protected]
19: * School of Computer Science
20: * Carnegie Mellon University
21: * Pittsburgh PA 15213-3890
22: *
23: * any improvements or extensions that they make and grant Carnegie Mellon
24: * the rights to redistribute these changes.
25: */
26: /*
27: * Device switch for i386 AT bus.
28: */
29:
30: #include <mach/machine/vm_types.h>
31: #include <device/conf.h>
32:
33: extern vm_offset_t block_io_mmap();
34:
35: extern int timeopen(), timeclose();
36: extern vm_offset_t timemmap();
37: #define timename "time"
38:
39: #include <hd.h>
40: #if NHD > 0
41: extern int hdopen(), hdclose(), hdread(), hdwrite();
42: extern int hdgetstat(), hdsetstat(), hddevinfo();
43: #define hdname "hd"
44:
45: #if 0
46: extern int pchdopen(),pchdread(),pchdwrite(),pchdgetstat(),pchdsetstat();
47: #define pchdname "pchd"
48: #endif
49:
50: #endif NHD > 0
51:
52: #include <aha.h>
53: #if NAHA > 0
54: int rz_open(), rz_close(), rz_read(), rz_write();
55: int rz_get_status(), rz_set_status(), rz_devinfo();
56: int cd_open(), cd_close(), cd_read(), cd_write();
57: #define rzname "sd"
58: #define tzname "st"
59: #define scname "sc" /* processors */
60: #define cdname "cd_audio" /* CD-ROM DA */
61:
62: #endif /*NAHA > 0*/
63:
64: #include <fd.h>
65: #if NFD > 0
66: extern int fdopen(), fdclose(), fdread(), fdwrite();
67: extern int fdgetstat(), fdsetstat(), fddevinfo();
68: #define fdname "fd"
69: #endif NFD > 0
70:
71: #include <wt.h>
72: #if NWT > 0
73: extern int wtopen(), wtread(), wtwrite(), wtclose();
74: #define wtname "wt"
75: #endif NWT > 0
76:
77: #include <pc586.h>
78: #if NPC586 > 0
79: extern int pc586open(), pc586output(), pc586getstat(), pc586setstat(),
80: pc586setinput();
81: #define pc586name "pc"
82: #endif NPC586 > 0
83:
84: #include <ne.h>
85: #if NNE > 0
86: extern int neopen(), neoutput(), negetstat(), nesetstat(), nesetinput();
87: #ifdef FIPC
88: extern int nefoutput();
89: #endif /* FIPC */
90: #define nename "ne"
91: #endif NNE > 0
92:
93: #include <ns8390.h>
94: #if NNS8390 > 0
95: extern int wd8003open(), eliiopen();
96: extern int ns8390output(), ns8390getstat(), ns8390setstat(),
97: ns8390setinput();
98: #define ns8390wdname "wd"
99: #define ns8390elname "el"
100: #endif NNS8390 > 0
101:
102: #include <at3c501.h>
103: #if NAT3C501 > 0
104: extern int at3c501open(), at3c501output(),
105: at3c501getstat(), at3c501setstat(),
106: at3c501setinput();
107: #define at3c501name "et"
108: #endif NAT3C501 > 0
109:
110: #include <ul.h>
111: #if NUL > 0
112: extern int ulopen(), uloutput(), ulgetstat(), ulsetstat(),
113: ulsetinput();
114: #define ulname "ul"
115: #endif NUL > 0
116:
117: #include <wd.h>
118: #if NWD > 0
119: extern int wdopen(), wdoutput(), wdgetstat(), wdsetstat(),
120: wdsetinput();
121: #define wdname "wd"
122: #endif NWD > 0
123:
124: #include <hpp.h>
125: #if NHPP > 0
126: extern int hppopen(), hppoutput(), hppgetstat(), hppsetstat(),
127: hppsetinput();
128: #define hppname "hpp"
129: #endif /* NHPP > 0 */
130:
131: #include <par.h>
132: #if NPAR > 0
133: extern int paropen(), paroutput(), pargetstat(), parsetstat(),
134: parsetinput();
135: #define parname "par"
136: #endif NPAR > 0
137:
138: #include <de6c.h>
139: #if NDE6C > 0
140: extern int de6copen(), de6coutput(), de6cgetstat(), de6csetstat(),
141: de6csetinput();
142: #define de6cname "de"
143: #endif NDE6C > 0
144:
145: extern int kdopen(), kdclose(), kdread(), kdwrite();
146: extern int kdgetstat(), kdsetstat(), kdportdeath();
147: extern vm_offset_t kdmmap();
148: #define kdname "kd"
149:
150: #include <com.h>
151: #if NCOM > 0
152: extern int comopen(), comclose(), comread(), comwrite();
153: extern int comgetstat(), comsetstat(), comportdeath();
154: #define comname "com"
155: #endif NCOM > 0
156:
157: #include <lpr.h>
158: #if NLPR > 0
159: extern int lpropen(), lprclose(), lprread(), lprwrite();
160: extern int lprgetstat(), lprsetstat(), lprportdeath();
161: #define lprname "lpr"
162: #endif NLPR > 0
163:
164: #include <blit.h>
165: #if NBLIT > 0
166: extern int blitopen(), blitclose(), blit_get_stat();
167: extern vm_offset_t blitmmap();
168: #define blitname "blit"
169:
170: extern int mouseinit(), mouseopen(), mouseclose();
171: extern int mouseioctl(), mouseselect(), mouseread();
172: #endif
173:
174: extern int kbdopen(), kbdclose(), kbdread();
175: extern int kbdgetstat(), kbdsetstat();
176: #define kbdname "kbd"
177:
178: extern int mouseopen(), mouseclose(), mouseread();
179: #define mousename "mouse"
180:
181: extern int ioplopen(), ioplclose();
182: extern vm_offset_t ioplmmap();
183: #define ioplname "iopl"
184:
185: /*
186: * List of devices - console must be at slot 0
187: */
188: struct dev_ops dev_name_list[] =
189: {
190: /*name, open, close, read,
191: write, getstat, setstat, mmap,
192: async_in, reset, port_death, subdev,
193: dev_info */
194:
195: /* We don't assign a console here, when we find one via
196: cninit() we stick something appropriate here through the
197: indirect list */
198: { "cn", nulldev, nulldev, nulldev,
199: nulldev, nulldev, nulldev, nulldev,
200: nodev, nulldev, nulldev, 0,
201: nodev },
202:
203: { kdname, kdopen, kdclose, kdread,
204: kdwrite, kdgetstat, kdsetstat, kdmmap,
205: nodev, nulldev, kdportdeath, 0,
206: nodev },
207:
208: { timename, timeopen, timeclose, nulldev,
209: nulldev, nulldev, nulldev, timemmap,
210: nodev, nulldev, nulldev, 0,
211: nodev },
212:
213: #ifndef LINUX_DEV
214: #if NHD > 0
215: { hdname, hdopen, hdclose, hdread,
216: hdwrite, hdgetstat, hdsetstat, nomap,
217: nodev, nulldev, nulldev, 1024,
218: hddevinfo },
219: #endif NHD > 0
220:
221: #if NAHA > 0
222: { rzname, rz_open, rz_close, rz_read,
223: rz_write, rz_get_status, rz_set_status, nomap,
224: nodev, nulldev, nulldev, 1024, /* 8 */
225: rz_devinfo },
226:
227: { tzname, rz_open, rz_close, rz_read,
228: rz_write, rz_get_status, rz_set_status, nomap,
229: nodev, nulldev, nulldev, 8,
230: nodev },
231:
232: { cdname, cd_open, cd_close, cd_read,
233: cd_write, nodev, nodev, nomap,
234: nodev, nulldev, nulldev, 8,
235: nodev },
236:
237: { scname, rz_open, rz_close, rz_read,
238: rz_write, rz_get_status, rz_set_status, nomap,
239: nodev, nulldev, nulldev, 8,
240: nodev },
241:
242: #endif /*NAHA > 0*/
243:
244: #if NFD > 0
245: { fdname, fdopen, fdclose, fdread,
246: fdwrite, fdgetstat, fdsetstat, nomap,
247: nodev, nulldev, nulldev, 64,
248: fddevinfo },
249: #endif NFD > 0
250:
251: #if NWT > 0
252: { wtname, wtopen, wtclose, wtread,
253: wtwrite, nulldev, nulldev, nomap,
254: nodev, nulldev, nulldev, 0,
255: nodev },
256: #endif NWT > 0
257:
258: #if NPC586 > 0
259: { pc586name, pc586open, nulldev, nulldev,
260: pc586output, pc586getstat, pc586setstat, nomap,
261: pc586setinput,nulldev, nulldev, 0,
262: nodev },
263: #endif
264:
265: #if NNE > 0
266: { nename, neopen, nulldev, nulldev,
267: neoutput, negetstat, nesetstat, nulldev,
268: #ifdef FIPC
269: nesetinput, nulldev, nefoutput, 0,
270: #else
271: nesetinput, nulldev, nulldev, 0,
272: #endif /* FIPC */
273: nodev },
274: #endif
275:
276: #if NAT3C501 > 0
277: { at3c501name, at3c501open, nulldev, nulldev,
278: at3c501output,at3c501getstat, at3c501setstat, nomap,
279: at3c501setinput, nulldev, nulldev, 0,
280: nodev },
281: #endif
282:
283: #if NNS8390 > 0
284: { ns8390wdname, wd8003open, nulldev, nulldev,
285: ns8390output, ns8390getstat, ns8390setstat, nomap,
286: ns8390setinput, nulldev, nulldev, 0,
287: nodev },
288:
289: { ns8390elname, eliiopen, nulldev, nulldev,
290: ns8390output, ns8390getstat, ns8390setstat, nomap,
291: ns8390setinput, nulldev, nulldev, 0,
292: nodev },
293: #endif
294:
295: #if NUL > 0
296: { ulname, ulopen, nulldev, nulldev,
297: uloutput, ulgetstat, ulsetstat, nulldev,
298: ulsetinput, nulldev, nulldev, 0,
299: nodev },
300: #endif
301:
302: #if NWD > 0
303: { wdname, wdopen, nulldev, nulldev,
304: wdoutput, wdgetstat, wdsetstat, nulldev,
305: wdsetinput, nulldev, nulldev, 0,
306: nodev },
307: #endif
308:
309: #if NHPP > 0
310: { hppname, hppopen, nulldev, nulldev,
311: hppoutput, hppgetstat, hppsetstat, nulldev,
312: hppsetinput, nulldev, nulldev, 0,
313: nodev },
314: #endif
315:
316: #if NPAR > 0
317: { parname, paropen, nulldev, nulldev,
318: paroutput, pargetstat, parsetstat, nomap,
319: parsetinput, nulldev, nulldev, 0,
320: nodev },
321: #endif
322:
323: #if NDE6C > 0
324: { de6cname, de6copen, nulldev, nulldev,
325: de6coutput, de6cgetstat, de6csetstat, nomap,
326: de6csetinput, nulldev, nulldev, 0,
327: nodev },
328: #endif
329: #endif /* ! LINUX_DEV */
330:
331: #if NCOM > 0
332: { comname, comopen, comclose, comread,
333: comwrite, comgetstat, comsetstat, nomap,
334: nodev, nulldev, comportdeath, 0,
335: nodev },
336: #endif
337:
338: #ifndef LINUX_DEV
339: #if NLPR > 0
340: { lprname, lpropen, lprclose, lprread,
341: lprwrite, lprgetstat, lprsetstat, nomap,
342: nodev, nulldev, lprportdeath, 0,
343: nodev },
344: #endif
345: #endif /* ! LINUX_DEV */
346:
347: #if NBLIT > 0
348: { blitname, blitopen, blitclose, nodev,
349: nodev, blit_get_stat, nodev, blitmmap,
350: nodev, nodev, nodev, 0,
351: nodev },
352: #endif
353:
354: { mousename, mouseopen, mouseclose, mouseread,
355: nodev, nulldev, nulldev, nomap,
356: nodev, nulldev, nulldev, 0,
357: nodev },
358:
359: { kbdname, kbdopen, kbdclose, kbdread,
360: nodev, kbdgetstat, kbdsetstat, nomap,
361: nodev, nulldev, nulldev, 0,
362: nodev },
363:
364: { ioplname, ioplopen, ioplclose, nodev,
365: nodev, nodev, nodev, ioplmmap,
366: nodev, nulldev, nulldev, 0,
367: nodev },
368:
369: #if 0
370: #if NHD > 0
371: { pchdname, pchdopen, hdclose, pchdread,
372: pchdwrite, pchdgetstat, pchdsetstat, nomap,
373: nodev, nulldev, nulldev, 16,
374: hddevinfo },
375: #endif NHD > 0
376: #endif
377:
378: #if 0
379: #if NHD > 0
380: { hdname, hdopen, hdclose, hdread,
381: hdwrite, hdgetstat, hdsetstat, nomap,
382: nodev, nulldev, nulldev, 16,
383: hddevinfo },
384: #endif NHD > 0
385: #endif 0 /* Kevin doesn't know why this was here. */
386:
387: };
388: int dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]);
389:
390: /*
391: * Indirect list.
392: */
393: struct dev_indirect dev_indirect_list[] = {
394:
395: /* console */
396: { "console", &dev_name_list[0], 0 }
397: };
398: int dev_indirect_count = sizeof(dev_indirect_list)
399: / sizeof(dev_indirect_list[0]);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.