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