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