|
|
1.1 root 1: #ifndef __KERNEL_CONFINFO_H__
2: #define __KERNEL_CONFINFO_H__
3:
4: /*
5: * This file contains definitions used by the automatically-generated
6: * configuration file "conf.c". The generated code makes heavy use of macros
7: * to allow the final result to be precisely tailored to the target system
8: * without modification to the code generator.
9: */
10: /*
11: *-IMPORTS:
12: * <common/ccompat.h>
13: * __EXTERN_C_BEGIN__
14: * __EXTERN_C_END__
15: * __USE_PROTO__
16: * __PROTO ()
17: * <common/xdebug.h>
18: * __LOCAL__
19: * <kernel/ddi_cpu.h>
20: * intmask_t
21: * <kernel/v_types.h>
22: * cred_t
23: * n_dev_t
24: * n_off_t
25: * major_t
26: * minor_t
27: * <sys/inline.h>
28: * _masktab []
29: * __GET_BASE_MASK ()
30: * __SET_BASE_MASK ()
31: * <sys/stream.h>
32: * struct streamtab
33: * <sys/uio.h>
34: * uio_t
35: */
36:
37: #include <common/ccompat.h>
38: #include <common/xdebug.h>
39: #include <kernel/ddi_cpu.h>
40: #include <kernel/v_types.h>
41: #include <sys/inline.h>
42: #include <sys/stream.h>
43: #include <sys/uio.h>
44:
45:
46: #ifdef __USE_PROTO__
47: #define DEF(ansi,k_r) ansi
48: #else
49: #define DEF(ansi,k_r) k_r
50: #endif
51:
52: /*
53: * Since we don't import the definition of "buf", let's create an incomplete
54: * definition at file scope. Same for "pollhead".
55: */
56:
57: struct buf;
58: struct pollhead;
59:
60: #define __OPEN(name) __CONCAT (name, open)
61: #define __CLOSE(name) __CONCAT (name, close)
62: #define __READ(name) __CONCAT (name, read)
63: #define __WRITE(name) __CONCAT (name, write)
64: #define __IOCTL(name) __CONCAT (name, ioctl)
65: #define __STRATEGY(name) __CONCAT (name, strategy)
66: #define __PRINT(name) __CONCAT (name, print)
67: #define __SIZE(name) __CONCAT (name, size)
68: #define __CHPOLL(name) __CONCAT (name, chpoll)
69: #define __MMAP(name) __CONCAT (name, mmap)
70: #define __INTR(name) __CONCAT (name, intr)
71: #define __INIT(name) __CONCAT (name, init)
72: #define __HALT(name) __CONCAT (name, halt)
73: #define __START(name) __CONCAT (name, start)
74: #define __EXIT(name) __CONCAT (name, exit)
75:
76: #define __INFO(name) __CONCAT (name, info)
77: #define __DEVFLAG(name) __CONCAT (name, devflag)
78:
79:
80: typedef int (* ddi_open_t) __PROTO ((n_dev_t * _devp, int _oflag,
81: int _otyp, __cred_t * _credp));
82: #define EXTERN_OPEN(name) __EXTERN_C__ \
83: int __OPEN (name) __PROTO ((n_dev_t * _devp, int _oflag,\
84: int _otyp, __cred_t * _credp))
85:
86: typedef int (* ddi_close_t) __PROTO ((n_dev_t _dev, int _oflag, int _otyp,
87: cred_t * _credp));
88: #define EXTERN_CLOSE(name) __EXTERN_C__ \
89: int __CLOSE (name) __PROTO ((n_dev_t _dev, int _oflag, int _otyp,\
90: cred_t * _credp))
91:
92: typedef int (* ddi_read_t) __PROTO ((n_dev_t _dev, uio_t * _uiop,
93: cred_t * _credp));
94: #define EXTERN_READ(name) __EXTERN_C__ \
95: int __READ (name) __PROTO ((n_dev_t _dev, uio_t * _uiop,\
96: cred_t * _credp))
97:
98: typedef int (* ddi_write_t) __PROTO ((n_dev_t _dev, uio_t * _uiop,
99: cred_t * _credp));
100: #define EXTERN_WRITE(name) __EXTERN_C__ \
101: int __WRITE (name) __PROTO ((n_dev_t _dev, uio_t * _uiop,\
102: cred_t * _credp))
103:
104: typedef int (* ddi_ioctl_t) __PROTO ((n_dev_t _dev, int _cmd, _VOID * _arg,
105: int _mode, cred_t * _credp,
106: int * _rvalp));
107: #define EXTERN_IOCTL(name) __EXTERN_C__ \
108: int __IOCTL (name) __PROTO ((n_dev_t _dev, int _cmd, _VOID * _arg,\
109: int _mode, cred_t * _credp,\
110: int * _rvalp))
111:
112: typedef int (* ddi_strategy_t) __PROTO ((struct buf * _bufp));
113: #define EXTERN_STRATEGY(name) __EXTERN_C__ \
114: int __STRATEGY (name) __PROTO ((struct buf * _bufp))
115:
116: typedef int (* ddi_print_t) __PROTO ((n_dev_t _dev, char * _str));
117: #define EXTERN_PRINT(name) __EXTERN_C__ \
118: int __PRINT (name) __PROTO ((n_dev_t _dev, char * _str))
119:
120: typedef int (* ddi_size_t) __PROTO ((n_dev_t _dev));
121: #define EXTERN_SIZE(name) __EXTERN_C__ \
122: int __SIZE (name) __PROTO ((n_dev_t _dev))
123:
124: typedef int (* ddi_chpoll_t) __PROTO ((n_dev_t _dev, short _events,
125: int _anyyet, short * _reventsp,
126: struct pollhead ** _phpp));
127: #define EXTERN_CHPOLL(name) __EXTERN_C__ \
128: int __CHPOLL (name) __PROTO ((n_dev_t _dev, short _events,\
129: int _anyyet, short * _reventsp,\
130: struct pollhead ** _phpp))
131:
132: typedef int (* ddi_mmap_t) __PROTO ((n_dev_t _dev, off_t _off,
133: int _prot));
134: #define EXTERN_MMAP(name) __EXTERN_C__ \
135: int __MMAP (name) __PROTO ((n_dev_t _dev, off_t _off,\
136: int _prot))
137:
138: typedef int (* ddi_intr_t) __PROTO ((int _ivec));
139: #define EXTERN_INTR(name) __EXTERN_C__ \
140: int __INTR (name) __PROTO ((int _ivec))
141:
142: typedef void (* ddi_init_t) __PROTO ((void));
143: #define EXTERN_INIT(name) __EXTERN_C__ \
144: void __INIT (name) __PROTO ((void))
145:
146: typedef void (* ddi_start_t) __PROTO ((void));
147: #define EXTERN_START(name) __EXTERN_C__ \
148: void __START (name) __PROTO ((void))
149:
150: typedef void (* ddi_exit_t) __PROTO ((void));
151: #define EXTERN_EXIT(name) __EXTERN_C__ \
152: void __EXIT (name) __PROTO ((void))
153:
154: typedef void (* ddi_halt_t) __PROTO ((void));
155: #define EXTERN_HALT(name) __EXTERN_C__ \
156: void __HALT (name) __PROTO ((void))
157:
158: #define NULL_OPEN ((ddi_open_t) 0)
159: #define NULL_CLOSE ((ddi_close_t) 0)
160: #define NULL_READ ((ddi_read_t) 0)
161: #define NULL_WRITE ((ddi_write_t) 0)
162: #define NULL_IOCTL ((ddi_ioctl_t) 0)
163: #define NULL_STRATEGY ((ddi_strategy_t) 0)
164: #define NULL_PRINT ((ddi_print_t) 0)
165: #define NULL_SIZE ((ddi_size_t) 0)
166: #define NULL_CHPOLL ((ddi_chpoll_t) 0)
167: #define NULL_MMAP ((ddi_mmap_t) 0)
168: #define NULL_INTR ((ddi_intr_t) 0)
169: #define NULL_INIT ((ddi_init_t) 0)
170: #define NULL_START ((ddi_start_t) 0)
171: #define NULL_EXIT ((ddi_exit_t) 0)
172: #define NULL_HALT ((ddi_halt_t) 0)
173:
174:
175: #if __COHERENT__ || defined (__MSDOS__)
176:
177: #define __KERNEL__ 2
178:
179: #if defined (__MSDOS__)
180: #include <sys/_con.h>
181: #else
182: #include <sys/buf.h>
183: #include <sys/con.h>
184: #include <sys/reg.h>
185: #endif
186:
187: #include <sys/io.h>
188:
189: #undef __KERNEL__
190:
191: __EXTERN_C_BEGIN__
192:
193: int _forward_open __PROTO ((o_dev_t _dev, int _mode, int _flags,
194: ddi_open_t _funcp));
195: int _forward_close __PROTO ((o_dev_t _dev, int _mode, int _flags,
196: ddi_close_t _funcp));
197: int _forward_read __PROTO ((o_dev_t _dev, IO * _iop,
198: ddi_read_t _funcp));
199: int _forward_write __PROTO ((o_dev_t _dev, IO * _iop,
200: ddi_write_t _funcp));
201: int _forward_ioctl __PROTO ((o_dev_t _dev, int _cmd,
202: _VOID * _arg, int mode,
203: ddi_ioctl_t _funcp));
204: #ifndef __MSDOS__
205: int _forward_strategy __PROTO ((BUF * _buf,
206: ddi_strategy_t _funcp));
207: #endif
208: int _forward_chpoll __PROTO ((o_dev_t _dev, int _events,
209: int _msec, ddi_chpoll_t _funcp));
210:
211: int _streams_open __PROTO ((o_dev_t _dev, int _mode, int _flags,
212: struct streamtab * _infop));
213: int _streams_close __PROTO ((o_dev_t _dev, int _mode, int _flags,
214: struct streamtab * _infop));
215: int _streams_read __PROTO ((o_dev_t _dev, IO * _iop,
216: struct streamtab * _infop));
217: int _streams_write __PROTO ((o_dev_t _dev, IO * _iop,
218: struct streamtab * _infop));
219: int _streams_ioctl __PROTO ((o_dev_t _dev, int _cmd,
220: _VOID * _arg, int mode,
221: struct streamtab * _infop));
222: int _streams_chpoll __PROTO ((o_dev_t _dev, int _events,
223: int _msec,
224: struct streamtab * _infop));
225:
226: __EXTERN_C_END__
227:
228: typedef struct {
229: int * cdev_flag;
230: CON cdev_con;
231: } cdevsw_t;
232:
233: /*
234: * Note that we do not have the DFPOL flag set by default. While most compilers
235: * can evaluate a "(ch) == 0 ? :" type of expression which is a constant in an
236: * initializer, the MWC compiler cannot do so reliably. We fix up the flags at
237: * startup time as a result.
238: */
239:
240: #define CDEVSW_ENTRY(fl,op,cl,re,wr,io,ch,mm) \
241: { (fl), { DFCHR, 0, \
242: (op), (cl), 0, (re), (wr), (io), 0, 0, 0, 0, (ch) } }
243:
244: #define NULL_CDEVSW() \
245: { 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
246:
247: #define STREAMS_ENTRY(name) \
248: { & __DEVFLAG (name), { DFCHR | DFPOL, 0, \
249: __CONCAT (name, openS), __CONCAT (name, closeS), \
250: 0, __CONCAT (name, readS), __CONCAT (name, writeS), \
251: __CONCAT (name, ioctlS), 0, 0, 0, 0, \
252: __CONCAT (name, chpollS) } }
253:
254: #define COH_OPEN(name,s) \
255: __LOCAL__ int __CONCAT3 (name, open, s) \
256: DEF ((o_dev_t dev, int mode, int flag),\
257: (dev, mode, flag) o_dev_t dev; int mode; int flag;)
258:
259: #define COH_CLOSE(name,s) \
260: __LOCAL__ int __CONCAT3 (name, close, s) \
261: DEF ((o_dev_t dev, int mode, int flag), \
262: (dev, mode, flag) o_dev_t dev; int mode; int flag;)
263:
264: #define COH_READ(name,s) \
265: __LOCAL__ int __CONCAT3 (name, read, s) \
266: DEF ((o_dev_t dev, IO * iop), \
267: (dev, iop) o_dev_t dev; IO * iop;)
268:
269: #define COH_WRITE(name,s) \
270: __LOCAL__ int __CONCAT3 (name, write, s) \
271: DEF ((o_dev_t dev, IO * iop), \
272: (dev, iop) o_dev_t dev; IO * iop;)
273:
274: #define COH_IOCTL(name,s) \
275: __LOCAL__ int __CONCAT3 (name, ioctl, s) \
276: DEF ((o_dev_t dev, int cmd, _VOID * arg, int mode), \
277: (dev, cmd, arg, mode) \
278: o_dev_t dev; int cmd; _VOID * arg; int mode;)
279:
280: #define COH_STRATEGY(name,s) \
281: __LOCAL__ int __CONCAT3 (name, strategy, s) \
282: DEF ((BUF * buf), \
283: (buf) BUF * buf;)
284:
285: #define COH_CHPOLL(name,s) \
286: __LOCAL__ int __CONCAT3 (name, chpoll, s) \
287: DEF ((o_dev_t dev, int events, int msec), \
288: (dev, events, msec) o_dev_t dev; int events; int msec;)
289:
290: #define DECLARE_STREAMS(name) \
291: extern struct streamtab __INFO (name); \
292: COH_OPEN (name, S) { \
293: return _streams_open (dev, mode, flag, & __INFO (name)); \
294: } \
295: COH_CLOSE (name, S) { \
296: return _streams_close (dev, mode, flag, & __INFO (name)); \
297: } \
298: COH_READ (name, S) { \
299: return _streams_read (dev, iop, & __INFO (name)); \
300: } \
301: COH_WRITE (name, S) { \
302: return _streams_write (dev, iop, & __INFO (name)); \
303: } \
304: COH_IOCTL (name, S) { \
305: return _streams_ioctl (dev, cmd, arg, mode, & __INFO (name));\
306: } \
307: COH_CHPOLL (name, S) { \
308: return _streams_chpoll (dev, events, msec, & __INFO (name)); \
309: }
310:
311: #define DECLARE_OPEN(name) \
312: COH_OPEN (name,D) { \
313: EXTERN_OPEN (name); \
314: return _forward_open (dev, mode, flag, __OPEN (name)); \
315: }
316:
317: #define DECLARE_CLOSE(name) \
318: COH_CLOSE (name,D) { \
319: EXTERN_CLOSE (name); \
320: return _forward_close (dev, mode, flag, __CLOSE (name)); \
321: }
322:
323: #define DECLARE_READ(name) \
324: COH_READ (name,D) { \
325: EXTERN_READ (name); \
326: return _forward_read (dev, iop, __READ (name)); \
327: }
328:
329: #define DECLARE_WRITE(name) \
330: COH_WRITE (name,D) { \
331: EXTERN_WRITE (name); \
332: return _forward_write (dev, iop, __WRITE (name)); \
333: }
334:
335: #define DECLARE_IOCTL(name) \
336: COH_IOCTL (name,D) { \
337: EXTERN_IOCTL (name); \
338: return _forward_ioctl (dev, cmd, arg, mode, __IOCTL (name)); \
339: }
340:
341: #define DECLARE_STRATEGY(name) \
342: COH_STRATEGY (name,D) { \
343: EXTERN_STRATEGY (name); \
344: return _forward_strategy (buf, __STRATEGY (name)); \
345: }
346:
347: #define DECLARE_CHPOLL(name) \
348: COH_CHPOLL (name,D) { \
349: EXTERN_CHPOLL (name); \
350: return _forward_chpoll (dev, events, msec, __CHPOLL (name)); \
351: }
352:
353: #define OPEN(name) __CONCAT (name, openD)
354: #define CLOSE(name) __CONCAT (name, closeD)
355: #define READ(name) __CONCAT (name, readD)
356: #define WRITE(name) __CONCAT (name, writeD)
357: #define IOCTL(name) __CONCAT (name, ioctlD)
358: #define STRATEGY(name) __CONCAT (name, strategyD)
359: #define CHPOLL(name) __CONCAT (name, chpollD)
360:
361: #endif /* __COHERENT__ || defined (__MSDOS__) */
362:
363:
364: /*
365: * Now default definitions for those things that are not overridden above.
366: */
367:
368: #if ! defined (DECLARE_STREAMS)
369: # define DECLARE_STREAMS(name) extern struct streamtab __INFO (name);
370: #endif
371:
372: #if ! defined (DECLARE_MODULE)
373: # define DECLARE_MODULE(name) extern struct streamtab __INFO (name);
374: #endif
375:
376: #if ! defined (DECLARE_OPEN) || ! defined (OPEN)
377: # define DECLARE_OPEN(name) EXTERN_OPEN (name);
378: # define OPEN(name) __OPEN (name)
379: #endif
380:
381: #if ! defined (DECLARE_CLOSE) || ! defined (CLOSE)
382: # define DECLARE_CLOSE(name) EXTERN_CLOSE (name);
383: # define CLOSE(name) __CLOSE (name)
384: #endif
385:
386: #if ! defined (DECLARE_READ) || ! defined (READ)
387: # define DECLARE_READ(name) EXTERN_READ (name);
388: # define READ(name) __READ (name)
389: #endif
390:
391: #if ! defined (DECLARE_WRITE) || ! defined (WRITE)
392: # define DECLARE_WRITE(name) EXTERN_WRITE (name);
393: # define WRITE(name) __WRITE (name)
394: #endif
395:
396: #if ! defined (DECLARE_IOCTL) || ! defined (IOCTL)
397: # define DECLARE_IOCTL(name) EXTERN_IOCTL (name);
398: # define IOCTL(name) __IOCTL (name)
399: #endif
400:
401: #if ! defined (DECLARE_CHPOLL) || ! defined (CHPOLL)
402: # define DECLARE_CHPOLL(name) EXTERN_CHPOLL (name);
403: # define CHPOLL(name) __CHPOLL (name)
404: #endif
405:
406: #if ! defined (DECLARE_MMAP) || ! defined (MMAP)
407: # define DECLARE_MMAP(name) EXTERN_MMAP (name);
408: # define MMAP(name) __MMAP (name)
409: #endif
410:
411: #if ! defined (DECLARE_STRATEGY) || ! defined (STRATEGY)
412: # define DECLARE_STRATEGY(name) EXTERN_STRATEGY (name);
413: # define STRATEGY(name) __STRATEGY (name)
414: #endif
415:
416: #if ! defined (DECLARE_PRINT) || ! defined (PRINT)
417: # define DECLARE_PRINT(name) EXTERN_PRINT (name);
418: # define PRINT(name) __PRINT (name)
419: #endif
420:
421: #if ! defined (DECLARE_SIZE) || ! defined (SIZE)
422: # define DECLARE_SIZE(name) EXTERN_SIZE (name);
423: # define SIZE(name) __SIZE (name)
424: #endif
425:
426: #if ! defined (DECLARE_INTR) || ! defined (INTR)
427: # define DECLARE_INTR(name) EXTERN_INTR (name);
428: # define INTR(name) __INTR (name)
429: #endif
430:
431: #if ! defined (DECLARE_INIT) || ! defined (INIT)
432: # define DECLARE_INIT(name) EXTERN_INIT (name);
433: # define INIT(name) __INIT (name)
434: #endif
435:
436: #if ! defined (DECLARE_START) || ! defined (START)
437: # define DECLARE_START(name) EXTERN_START (name);
438: # define START(name) __START (name)
439: #endif
440:
441: #if ! defined (DECLARE_EXIT) || ! defined (EXIT)
442: # define DECLARE_EXIT(name) EXTERN_EXIT (name);
443: # define EXIT(name) __EXIT (name)
444: #endif
445:
446: #if ! defined (DECLARE_HALT) || ! defined (HALT)
447: # define DECLARE_HALT(name) EXTERN_HALT (name);
448: # define HALT(name) __EXIT (halt)
449: #endif
450:
451: #ifndef CDEVSW_ENTRY
452:
453: typedef struct {
454: int * cdev_flag;
455: struct streamtab
456: * cdev_stream;
457: ddi_open_t cdev_open;
458: ddi_close_t cdev_close;
459: ddi_read_t cdev_read;
460: ddi_write_t cdev_write;
461: ddi_ioctl_t cdev_ioctl;
462: ddi_chpoll_t cdev_chpoll;
463: ddi_mmap_t cdev_mmap;
464: } cdevsw_t;
465:
466: #define CDEVSW_ENTRY(fl,op,cl,re,wr,io,ch,mm) \
467: { (fl), 0, (op), (cl), (re), (wr), (io), (ch), (mm) }
468:
469: #define STREAMS_ENTRY(name) \
470: { & __DEVFLAG (name), & __INFO (name), 0, 0, 0, 0, 0, 0 }
471:
472: #define NULL_CDEVSW() \
473: { 0, 0, 0, 0, 0, 0, 0, 0 }
474:
475: #endif /* ! defined (CDEVSW_ENTRY) */
476:
477: #ifndef BDEVSW_ENTRY
478:
479: typedef struct {
480: int * bdev_flag;
481: ddi_open_t bdev_open;
482: ddi_close_t bdev_close;
483: ddi_strategy_t bdev_strategy;
484: ddi_print_t bdev_print;
485: ddi_size_t bdev_size;
486: } bdevsw_t;
487:
488: #define BDEVSW_ENTRY(fl,op,cl,st,pr,si) \
489: { (fl), (op), (cl), (st), (pr), (si) }
490:
491: #define NULL_BDEVSW() \
492: { 0, 0, 0, 0, 0, 0 }
493:
494: #endif /* ! defined (BDEVSW_ENTRY) */
495:
496:
497: #ifndef MODSW_ENTRY
498:
499: typedef struct {
500: int * mod_flag;
501: struct streamtab
502: * mod_stream;
503: } modsw_t;
504:
505: #define MODSW_ENTRY(name) { & __DEVFLAG (name), & __INFO (name) }
506:
507: #define NULL_MODSW() { 0, 0 }
508:
509: #endif /* ! defined (MODSW_ENTRY) */
510:
511:
512: #define __VECTOR(vec) __CONCAT (vector, vec)
513: #define __PREV(vec) __CONCAT3 (vector, vec, _prev)
514:
515:
516: #ifdef __BORLANDC__
517:
518: /*
519: * Under MS-DOS, we have to avoid disrupting the existing software. That means
520: * we have to take care to chain to the appropriate previous handlers; given
521: * that Borland C++ has support for this, interrupts under C++ are supported
522: * using native facilities rather than a generic trap layer. A generic trap
523: * layer should be doing similar things, of course.
524: */
525:
526: typedef interrupt void (* intthunk_t) __PROTO ((__ANY_ARGS__));
527:
528: __EXTERN_C_BEGIN__
529:
530: void _chain_intr (intthunk_t _prev_int); /* Borland C++ library */
531: void CHECK_DEFER (void);
532:
533: __EXTERN_C_END__
534:
535:
536: typedef struct {
537: int int_vector;
538: intthunk_t int_thunk;
539: intthunk_t * int_prev;
540: } intr_t;
541:
542: #define BEGIN_THUNK(vec,mask) \
543: __LOCAL__ intthunk_t __PREV (vec); \
544: __LOCAL__ interrupt void __VECTOR (vec) \
545: DEF ((__ANY_ARGS__), __ARGS (())) { \
546: intmask_t oldmask = __GET_BASE_MASK (); \
547: pl_t prev_pl; \
548: if (__PREV (vec) != 0) \
549: (* __PREV (vec)) (); \
550: __SET_BASE_MASK (oldmask | (mask)); \
551: ddi_cpu_data ()->dc_int_level ++; \
552: prev_pl = spltimeout (); \
553: __SEND_EOI (vec); \
554: __CHEAP_ENABLE_INTS ();
555:
556: #define CALL_INTR(vec,name) (void) __INTR (name) (vec);
557:
558: #define END_THUNK(vec) \
559: __CHEAP_DISABLE_INTS (); \
560: __SET_BASE_MASK (oldmask); \
561: splx (prev_pl); \
562: if (ddi_cpu_data ()->dc_int_level == 1 && \
563: ddi_cpu_data ()->dc_ipl == plbase) \
564: CHECK_DEFER (); \
565: ddi_cpu_data ()->dc_int_level --; \
566: }
567:
568: #define INTR_THUNK(vec) { vec, __VECTOR (vec), & __PREV (vec) }
569:
570: #else
571:
572: typedef void (* intthunk_t) __PROTO ((__ANY_ARGS__));
573:
574: typedef struct {
575: int int_vector;
576: intthunk_t int_thunk;
577: } intr_t;
578:
579: #define BEGIN_THUNK(vec,mask) \
580: __LOCAL__ void __VECTOR (vec) \
581: DEF ((void), __ARGS (())) { \
582: intmask_t oldmask = __GET_BASE_MASK (); \
583: __SET_BASE_MASK (oldmask | (mask)); \
584: ddi_cpu_data ()->dc_int_level ++;
585:
586: #define CALL_INTR(vec,name) (void) __INTR (name) (vec);
587:
588: #define END_THUNK(vec) \
589: ddi_cpu_data ()->dc_int_level --; \
590: __SET_BASE_MASK (oldmask); \
591: }
592:
593: #define INTR_THUNK(vec) { vec, __VECTOR (vec) }
594:
595: #endif
596:
597:
598: typedef ddi_init_t init_t;
599: typedef ddi_start_t start_t;
600: typedef ddi_exit_t exit_t;
601: typedef ddi_halt_t halt_t;
602:
603: extern init_t inittab [];
604: extern unsigned int ninit;
605:
606: extern start_t starttab [];
607: extern unsigned int nstart;
608:
609: extern exit_t exittab [];
610: extern unsigned int nexit;
611:
612: extern halt_t halttab [];
613: extern unsigned int nhalt;
614:
615: extern cdevsw_t cdevsw [];
616: extern unsigned int ncdevsw;
617:
618: extern bdevsw_t bdevsw [];
619: extern unsigned int nbdevsw;
620:
621: extern modsw_t modsw [];
622: extern unsigned int nmodsw;
623:
624: extern major_t _maxmajor;
625: extern major_t _major [];
626: extern minor_t _minor [];
627:
628: extern intr_t inttab [];
629: extern unsigned int nintr;
630:
631: #endif /* ! defined (__KERNEL_CONFINFO_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.