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