1 /* 2 * Copyright (c) 1988 Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)conf.c 7.7 (Berkeley) 12/16/90 8 */ 9 10 #include "sys/param.h" 11 #include "sys/systm.h" 12 #include "sys/buf.h" 13 #include "sys/ioctl.h" 14 #include "sys/tty.h" 15 #include "sys/conf.h" 16 17 int nulldev(), nodev(), rawread(), rawwrite(), swstrategy(); 18 19 #include "dk.h" 20 #if NVD > 0 21 int vdopen(),vdclose(),vdstrategy(),vdioctl(); 22 int vddump(),vdsize(); 23 #else 24 #define vdopen nodev 25 #define vdclose nodev 26 #define vdstrategy nodev 27 #define vdioctl nodev 28 #define vddump nodev 29 #define vdsize 0 30 #endif 31 32 #include "hd.h" 33 #if NHD > 0 34 int hdopen(),hdclose(),hdstrategy(),hdioctl(); 35 int hddump(),hdsize(); 36 #else 37 #define hdopen nodev 38 #define hdclose nodev 39 #define hdstrategy nodev 40 #define hdioctl nodev 41 #define hddump nodev 42 #define hdsize 0 43 #endif 44 45 #include "yc.h" 46 #if NCY > 0 47 int cyopen(),cyclose(),cystrategy(),cydump(); 48 int cyioctl(),cyreset(); 49 #else 50 #define cyopen nodev 51 #define cyclose nodev 52 #define cystrategy nodev 53 #define cydump nodev 54 #define cyioctl nodev 55 #define cyreset nulldev 56 #endif 57 58 struct bdevsw bdevsw[] = 59 { 60 { nodev, nulldev, nodev, nodev, /*0*/ 61 nodev, 0, 0 }, 62 { vdopen, vdclose, vdstrategy, vdioctl, /*1*/ 63 vddump, vdsize, 0 }, 64 { hdopen, hdclose, hdstrategy, hdioctl, /*2*/ 65 hddump, hdsize, 0 }, 66 { cyopen, cyclose, cystrategy, cyioctl, /*3*/ 67 cydump, 0, B_TAPE }, 68 { nodev, nodev, swstrategy, nodev, /*4*/ 69 nodev, 0, 0 }, 70 }; 71 int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 72 73 int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 74 extern struct tty cons; 75 76 #include "vx.h" 77 #if NVX == 0 78 #define vxopen nodev 79 #define vxclose nodev 80 #define vxread nodev 81 #define vxwrite nodev 82 #define vxioctl nodev 83 #define vxstop nodev 84 #define vxreset nulldev 85 #define vx_tty 0 86 #else 87 int vxopen(),vxclose(),vxread(),vxwrite(),vxioctl(),vxstop(),vxreset(); 88 struct tty vx_tty[]; 89 #endif 90 91 int syopen(),syread(),sywrite(),syioctl(),syselect(); 92 93 int mmrw(); 94 #define mmselect seltrue 95 96 #include "pty.h" 97 #if NPTY > 0 98 int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 99 int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 100 int ptyioctl(); 101 struct tty pt_tty[]; 102 #else 103 #define ptsopen nodev 104 #define ptsclose nodev 105 #define ptsread nodev 106 #define ptswrite nodev 107 #define ptcopen nodev 108 #define ptcclose nodev 109 #define ptcread nodev 110 #define ptcwrite nodev 111 #define ptyioctl nodev 112 #define pt_tty 0 113 #define ptcselect nodev 114 #define ptsstop nulldev 115 #endif 116 117 #include "mp.h" 118 #if NMP > 0 119 int mpopen(), mpclose(), mpread(), mpwrite(), mpioctl(), mpstop(); 120 int mpdlopen(), mpdlclose(), mpdlwrite(), mpdlioctl(); 121 extern struct tty mp_tty[]; 122 #else 123 #define mpopen nodev 124 #define mpclose nodev 125 #define mpread nodev 126 #define mpwrite nodev 127 #define mpioctl nodev 128 #define mpstop nodev 129 #define mpdlopen nodev 130 #define mpdlclose nodev 131 #define mpdlwrite nodev 132 #define mpdlioctl nodev 133 #define mp_tty 0 134 #endif 135 136 #if NII > 0 137 int iiioctl(), iiclose(), iiopen(); 138 #else 139 #define iiopen nodev 140 #define iiclose nodev 141 #define iiioctl nodev 142 #endif 143 144 #include "enp.h" 145 #if NENP > 0 146 int enpr_open(), enpr_close(), enpr_read(), enpr_write(), enpr_ioctl(); 147 #else 148 #define enpr_open nodev 149 #define enpr_close nodev 150 #define enpr_read nodev 151 #define enpr_write nodev 152 #define enpr_ioctl nodev 153 #endif 154 155 #include "dr.h" 156 #if NDR > 0 157 int dropen(),drclose(),drread(),drwrite(),drioctl(),drreset(); 158 #else 159 #define dropen nodev 160 #define drclose nodev 161 #define drread nodev 162 #define drwrite nodev 163 #define drioctl nodev 164 #define drreset nodev 165 #endif 166 167 #include "ik.h" 168 #if NIK > 0 169 int ikopen(),ikclose(),ikread(),ikwrite(),ikioctl(); 170 #else 171 #define ikopen nodev 172 #define ikclose nodev 173 #define ikread nodev 174 #define ikwrite nodev 175 #define ikioctl nodev 176 #endif 177 178 int logopen(),logclose(),logread(),logioctl(),logselect(); 179 180 int fdopen(); 181 182 int ttselect(), seltrue(); 183 184 struct cdevsw cdevsw[] = 185 { 186 cnopen, cnclose, cnread, cnwrite, /*0*/ 187 cnioctl, nulldev, nulldev, &cons, 188 ttselect, nodev, NULL, 189 vxopen, vxclose, vxread, vxwrite, /*1*/ 190 vxioctl, vxstop, vxreset, vx_tty, 191 ttselect, nodev, NULL, 192 syopen, nulldev, syread, sywrite, /*2*/ 193 syioctl, nulldev, nulldev, NULL, 194 syselect, nodev, NULL, 195 nulldev, nulldev, mmrw, mmrw, /*3*/ 196 nodev, nulldev, nulldev, NULL, 197 mmselect, nodev, NULL, 198 nodev, nulldev, nodev, nodev, /*4*/ 199 nodev, nodev, nulldev, NULL, 200 seltrue, nodev, NULL, 201 vdopen, vdclose, rawread, rawwrite, /*5*/ 202 vdioctl, nodev, nulldev, NULL, 203 seltrue, nodev, vdstrategy, 204 hdopen, hdclose, rawread, rawwrite, /*6*/ 205 hdioctl, nodev, nulldev, NULL, 206 seltrue, nodev, hdstrategy, 207 cyopen, cyclose, rawread, rawwrite, /*7*/ 208 cyioctl, nodev, cyreset, NULL, 209 seltrue, nodev, cystrategy, 210 nulldev, nulldev, rawread, rawwrite, /*8*/ 211 nodev, nodev, nulldev, NULL, 212 nodev, nodev, swstrategy, 213 ptsopen, ptsclose, ptsread, ptswrite, /*9*/ 214 ptyioctl, ptsstop, nodev, pt_tty, 215 ttselect, nodev, NULL, 216 ptcopen, ptcclose, ptcread, ptcwrite, /*10*/ 217 ptyioctl, nulldev, nodev, pt_tty, 218 ptcselect, nodev, NULL, 219 mpdlopen, mpdlclose, nodev, mpdlwrite, /*11*/ 220 mpdlioctl, nodev, nulldev, NULL, 221 seltrue, nodev, NULL, 222 mpopen, mpclose, mpread, mpwrite, /*12*/ 223 mpioctl, mpstop, nulldev, mp_tty, 224 ttselect, nodev, NULL, 225 nodev, nodev, nodev, nodev, /*13*/ 226 nodev, nodev, nulldev, NULL, 227 nodev, nodev, NULL, 228 iiopen, iiclose, nulldev, nulldev, /*14*/ 229 iiioctl, nulldev, nulldev, NULL, 230 seltrue, nodev, NULL, 231 logopen, logclose, logread, nodev, /*15*/ 232 logioctl, nodev, nulldev, NULL, 233 logselect, nodev, NULL, 234 enpr_open, enpr_close, enpr_read, enpr_write, /*16*/ 235 enpr_ioctl, nodev, nulldev, NULL, 236 nodev, nodev, NULL, 237 nodev, nodev, nodev, nodev, /*17*/ 238 nodev, nodev, nulldev, NULL, 239 nodev, nodev, NULL, 240 dropen, drclose, drread, drwrite, /*18*/ 241 drioctl, nodev, drreset, NULL, 242 nodev, nodev, NULL, 243 nodev, nodev, nodev, nodev, /*19*/ 244 nodev, nodev, nulldev, NULL, 245 nodev, nodev, NULL, 246 /* 20-30 are reserved for local use */ 247 ikopen, ikclose, ikread, ikwrite, /*20*/ 248 ikioctl, nodev, nulldev, NULL, 249 nodev, nodev, NULL, 250 fdopen, nodev, nodev, nodev, /*21*/ 251 nodev, nodev, nodev, NULL, 252 nodev, nodev, NULL, 253 }; 254 int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 255 256 int mem_no = 3; /* major device number of memory special file */ 257 258 /* 259 * Swapdev is a fake device implemented 260 * in sw.c used only internally to get to swstrategy. 261 * It cannot be provided to the users, because the 262 * swstrategy routine munches the b_dev and b_blkno entries 263 * before calling the appropriate driver. This would horribly 264 * confuse, e.g. the hashing routines. Instead, /dev/drum is 265 * provided as a character (raw) device. 266 */ 267 dev_t swapdev = makedev(4, 0); 268