|
|
1.1 ! root 1: #ifndef MDEV_H ! 2: #define MDEV_H ! 3: ! 4: /* ! 5: *-IMPORTS: ! 6: * <sys/compat.h> ! 7: * CONST ! 8: * EXTERN_C_BEGIN ! 9: * EXTERN_C_END ! 10: * PROTO () ! 11: */ ! 12: ! 13: #include <sys/compat.h> ! 14: ! 15: #ifndef SYMBOL_T ! 16: #define SYMBOL_T ! 17: typedef struct symbol symbol_t; ! 18: #endif ! 19: ! 20: #ifndef SDEV_T ! 21: #define SDEV_T ! 22: typedef struct sdevice sdev_t; ! 23: #endif ! 24: ! 25: #ifndef MDEV_T ! 26: #define MDEV_T ! 27: typedef struct mdevice mdev_t; ! 28: #endif ! 29: ! 30: #ifndef MDLIST_T ! 31: #define MDLIST_T ! 32: typedef struct mdlist mdlist_t; ! 33: #endif ! 34: ! 35: ! 36: enum { ! 37: MD_DISABLED, ! 38: MD_INSTALLABLE, ! 39: MD_ENABLED ! 40: }; ! 41: ! 42: ! 43: /* ! 44: * Structure of the data gathered by the mkdev routines. ! 45: */ ! 46: ! 47: typedef unsigned int maj_t; ! 48: typedef unsigned int min_t; ! 49: ! 50: struct mdevice { ! 51: mdev_t * md_next; /* global list of all entries */ ! 52: mdev_t * md_link1; /* for sorts */ ! 53: mdev_t * md_link2; /* for sorts */ ! 54: mdev_t * md_link3; /* for sorts */ ! 55: ! 56: sdev_t * md_sdevices; /* thread of "sdevice" entries */ ! 57: int md_configure; /* See MD_... constants */ ! 58: int md_interrupt; /* has an enabled interrupt */ ! 59: ! 60: symbol_t * md_devname; /* internal module/device name */ ! 61: symbol_t * md_functions; /* present driver entry points */ ! 62: symbol_t * md_flags; /* driver characteristics */ ! 63: symbol_t * md_prefix; /* driver prefix */ ! 64: maj_t md_blk_maj [2]; /* block major number low, high */ ! 65: maj_t md_chr_maj [2]; /* character major number low, high */ ! 66: min_t md_minor_min; /* minor number minimum */ ! 67: min_t md_minor_max; /* minor number maximum */ ! 68: ! 69: /* ! 70: * The following fields are not used in the Coherent system as yet ! 71: * but are defined by mdevice (4) so we read them. ! 72: */ ! 73: ! 74: int md_dma_chan; /* DMA channel number */ ! 75: int md_cpu_id; /* processor-id */ ! 76: }; ! 77: ! 78: ! 79: /* ! 80: * Structure of a list of "mdevice" entries. ! 81: */ ! 82: ! 83: struct mdlist { ! 84: mdev_t * mdl_first; /* first mdevice in list */ ! 85: mdev_t * mdl_last; /* last mdevice in list */ ! 86: int mdl_count; /* count of mdevices */ ! 87: }; ! 88: ! 89: ! 90: /* ! 91: * Types suitable for use as selection and comparison predicates for the ! 92: * mdev_sort () function. ! 93: */ ! 94: ! 95: typedef int (* msel_t) PROTO ((mdev_t * _mdevp)); ! 96: typedef int (* mcmp_t) PROTO ((mdev_t * _left, mdev_t * _right)); ! 97: ! 98: ! 99: /* ! 100: * For Coherent, the first 32 major numbers are reserved for the use of the ! 101: * old-style Coherent device-driver system. ! 102: */ ! 103: ! 104: enum { MAJOR_RESERVED = 32, ! 105: MAX_DEVNAME = 8, ! 106: MAX_PREFIX = 4 ! 107: }; ! 108: ! 109: ! 110: #define MDEV_OPEN 'o' ! 111: #define MDEV_CLOSE 'c' ! 112: #define MDEV_READ 'r' ! 113: #define MDEV_WRITE 'w' ! 114: #define MDEV_IOCTL 'i' ! 115: #define MDEV_STARTUP 's' ! 116: #define MDEV_EXIT 'x' ! 117: #define MDEV_INIT 'I' ! 118: #define MDEV_HALT 'h' ! 119: #define MDEV_CHPOLL 'p' ! 120: ! 121: #define MDEV_MMAP 'M' /* not defined in SVR4 mdevice (4) */ ! 122: #define MDEV_SIZE 'z' /* not defined in SVR4 mdevice (4) */ ! 123: ! 124: #define MDEV_FUNCS "ocrwisxIhpMz" ! 125: ! 126: ! 127: #define MDEV_INSTALLABLE 'i' ! 128: #define MDEV_CHAR 'c' ! 129: #define MDEV_BLOCK 'b' ! 130: #define MDEV_STREAM 'S' ! 131: #define MDEV_DDI_DDK 'f' ! 132: #define MDEV_TTY 't' ! 133: #define MDEV_ONE_SDEVICE 'o' ! 134: #define MDEV_REQUIRED 'r' ! 135: #define MDEV_SAME_MAJORS 'u' ! 136: #define MDEV_HARDWARE 'H' ! 137: #define MDEV_NO_INT 'G' ! 138: #define MDEV_SHARE_DMA 'D' ! 139: #define MDEV_MULTIPLE_MAJORS 'M' ! 140: #define MDEV_ALLOW_IOA_OVERLAP 'O' ! 141: ! 142: #define MDEV_FLAGS "icbSftoruHGDMO" ! 143: ! 144: ! 145: EXTERN_C_BEGIN ! 146: ! 147: mdev_t * find_mdev PROTO ((symbol_t * _sym)); ! 148: mdev_t * mdevices PROTO ((void)); ! 149: int mdev_func PROTO ((mdev_t * _mdevp, char _func)); ! 150: int mdev_flag PROTO ((mdev_t * _mdevp, char _flag)); ! 151: void read_mdev_file PROTO ((CONST char * _name)); ! 152: void mdev_sort PROTO ((mdlist_t * _mlistp, msel_t _selpred, ! 153: mcmp_t _cmppred, size_t ptroff)); ! 154: ! 155: EXTERN_C_END ! 156: ! 157: #endif /* ! defined (MDEV_H) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.