|
|
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:
1.1.1.2 ! root 178: extern int mouseopen(), mouseclose(), mouseread(), mousegetstat();
1.1 root 179: #define mousename "mouse"
180:
181: extern int ioplopen(), ioplclose();
182: extern vm_offset_t ioplmmap();
183: #define ioplname "iopl"
184:
1.1.1.2 ! root 185: extern int kmsgopen(), kmsgclose(), kmsgread(), kmsggetstat();
! 186: #define kmsgname "kmsg"
! 187:
1.1 root 188: /*
189: * List of devices - console must be at slot 0
190: */
191: struct dev_ops dev_name_list[] =
192: {
193: /*name, open, close, read,
194: write, getstat, setstat, mmap,
195: async_in, reset, port_death, subdev,
196: dev_info */
197:
198: /* We don't assign a console here, when we find one via
199: cninit() we stick something appropriate here through the
200: indirect list */
201: { "cn", nulldev, nulldev, nulldev,
202: nulldev, nulldev, nulldev, nulldev,
203: nodev, nulldev, nulldev, 0,
204: nodev },
205:
206: { kdname, kdopen, kdclose, kdread,
207: kdwrite, kdgetstat, kdsetstat, kdmmap,
208: nodev, nulldev, kdportdeath, 0,
209: nodev },
210:
211: { timename, timeopen, timeclose, nulldev,
212: nulldev, nulldev, nulldev, timemmap,
213: nodev, nulldev, nulldev, 0,
214: nodev },
215:
216: #ifndef LINUX_DEV
217: #if NHD > 0
218: { hdname, hdopen, hdclose, hdread,
219: hdwrite, hdgetstat, hdsetstat, nomap,
220: nodev, nulldev, nulldev, 1024,
221: hddevinfo },
222: #endif NHD > 0
223:
224: #if NAHA > 0
225: { rzname, rz_open, rz_close, rz_read,
226: rz_write, rz_get_status, rz_set_status, nomap,
227: nodev, nulldev, nulldev, 1024, /* 8 */
228: rz_devinfo },
229:
230: { tzname, rz_open, rz_close, rz_read,
231: rz_write, rz_get_status, rz_set_status, nomap,
232: nodev, nulldev, nulldev, 8,
233: nodev },
234:
235: { cdname, cd_open, cd_close, cd_read,
236: cd_write, nodev, nodev, nomap,
237: nodev, nulldev, nulldev, 8,
238: nodev },
239:
240: { scname, rz_open, rz_close, rz_read,
241: rz_write, rz_get_status, rz_set_status, nomap,
242: nodev, nulldev, nulldev, 8,
243: nodev },
244:
245: #endif /*NAHA > 0*/
246:
247: #if NFD > 0
248: { fdname, fdopen, fdclose, fdread,
249: fdwrite, fdgetstat, fdsetstat, nomap,
250: nodev, nulldev, nulldev, 64,
251: fddevinfo },
252: #endif NFD > 0
253:
254: #if NWT > 0
255: { wtname, wtopen, wtclose, wtread,
256: wtwrite, nulldev, nulldev, nomap,
257: nodev, nulldev, nulldev, 0,
258: nodev },
259: #endif NWT > 0
260:
261: #if NPC586 > 0
262: { pc586name, pc586open, nulldev, nulldev,
263: pc586output, pc586getstat, pc586setstat, nomap,
264: pc586setinput,nulldev, nulldev, 0,
265: nodev },
266: #endif
267:
268: #if NNE > 0
269: { nename, neopen, nulldev, nulldev,
270: neoutput, negetstat, nesetstat, nulldev,
271: #ifdef FIPC
272: nesetinput, nulldev, nefoutput, 0,
273: #else
274: nesetinput, nulldev, nulldev, 0,
275: #endif /* FIPC */
276: nodev },
277: #endif
278:
279: #if NAT3C501 > 0
280: { at3c501name, at3c501open, nulldev, nulldev,
281: at3c501output,at3c501getstat, at3c501setstat, nomap,
282: at3c501setinput, nulldev, nulldev, 0,
283: nodev },
284: #endif
285:
286: #if NNS8390 > 0
287: { ns8390wdname, wd8003open, nulldev, nulldev,
288: ns8390output, ns8390getstat, ns8390setstat, nomap,
289: ns8390setinput, nulldev, nulldev, 0,
290: nodev },
291:
292: { ns8390elname, eliiopen, nulldev, nulldev,
293: ns8390output, ns8390getstat, ns8390setstat, nomap,
294: ns8390setinput, nulldev, nulldev, 0,
295: nodev },
296: #endif
297:
298: #if NUL > 0
299: { ulname, ulopen, nulldev, nulldev,
300: uloutput, ulgetstat, ulsetstat, nulldev,
301: ulsetinput, nulldev, nulldev, 0,
302: nodev },
303: #endif
304:
305: #if NWD > 0
306: { wdname, wdopen, nulldev, nulldev,
307: wdoutput, wdgetstat, wdsetstat, nulldev,
308: wdsetinput, nulldev, nulldev, 0,
309: nodev },
310: #endif
311:
312: #if NHPP > 0
313: { hppname, hppopen, nulldev, nulldev,
314: hppoutput, hppgetstat, hppsetstat, nulldev,
315: hppsetinput, nulldev, nulldev, 0,
316: nodev },
317: #endif
318:
319: #if NPAR > 0
320: { parname, paropen, nulldev, nulldev,
321: paroutput, pargetstat, parsetstat, nomap,
322: parsetinput, nulldev, nulldev, 0,
323: nodev },
324: #endif
325:
326: #if NDE6C > 0
327: { de6cname, de6copen, nulldev, nulldev,
328: de6coutput, de6cgetstat, de6csetstat, nomap,
329: de6csetinput, nulldev, nulldev, 0,
330: nodev },
331: #endif
332: #endif /* ! LINUX_DEV */
333:
1.1.1.2 ! root 334: #ifdef MACH_COM
1.1 root 335: { comname, comopen, comclose, comread,
336: comwrite, comgetstat, comsetstat, nomap,
337: nodev, nulldev, comportdeath, 0,
338: nodev },
339: #endif
340:
1.1.1.2 ! root 341: #ifdef MACH_LPR
1.1 root 342: { lprname, lpropen, lprclose, lprread,
343: lprwrite, lprgetstat, lprsetstat, nomap,
344: nodev, nulldev, lprportdeath, 0,
345: nodev },
346: #endif
347:
348: #if NBLIT > 0
349: { blitname, blitopen, blitclose, nodev,
350: nodev, blit_get_stat, nodev, blitmmap,
351: nodev, nodev, nodev, 0,
352: nodev },
353: #endif
354:
355: { mousename, mouseopen, mouseclose, mouseread,
1.1.1.2 ! root 356: nodev, mousegetstat, nulldev, nomap,
1.1 root 357: nodev, nulldev, nulldev, 0,
358: nodev },
359:
360: { kbdname, kbdopen, kbdclose, kbdread,
361: nodev, kbdgetstat, kbdsetstat, nomap,
362: nodev, nulldev, nulldev, 0,
363: nodev },
364:
365: { ioplname, ioplopen, ioplclose, nodev,
366: nodev, nodev, nodev, ioplmmap,
367: nodev, nulldev, nulldev, 0,
368: nodev },
369:
370: #if 0
371: #if NHD > 0
372: { pchdname, pchdopen, hdclose, pchdread,
373: pchdwrite, pchdgetstat, pchdsetstat, nomap,
374: nodev, nulldev, nulldev, 16,
375: hddevinfo },
376: #endif NHD > 0
377: #endif
378:
379: #if 0
380: #if NHD > 0
381: { hdname, hdopen, hdclose, hdread,
382: hdwrite, hdgetstat, hdsetstat, nomap,
383: nodev, nulldev, nulldev, 16,
384: hddevinfo },
385: #endif NHD > 0
386: #endif 0 /* Kevin doesn't know why this was here. */
387:
1.1.1.2 ! root 388: #ifdef MACH_KMSG
! 389: { kmsgname, kmsgopen, kmsgclose, kmsgread,
! 390: nodev, kmsggetstat, nodev, nomap,
! 391: nodev, nulldev, nulldev, 0,
! 392: nodev },
! 393: #endif
! 394:
1.1 root 395: };
396: int dev_name_count = sizeof(dev_name_list)/sizeof(dev_name_list[0]);
397:
398: /*
399: * Indirect list.
400: */
401: struct dev_indirect dev_indirect_list[] = {
402:
403: /* console */
404: { "console", &dev_name_list[0], 0 }
405: };
406: int dev_indirect_count = sizeof(dev_indirect_list)
407: / sizeof(dev_indirect_list[0]);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.