1 /* 2 * Copyright (c) 1982, 1990 Regents of the University of California. 3 * All rights reserved. 4 * 5 * %sccs.include.redist.c% 6 * 7 * @(#)conf.c 7.3 (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 "ct.h" 20 #if NCT > 0 21 int ctopen(),ctclose(),ctstrategy(),ctread(),ctwrite(),ctdump(),ctioctl(); 22 #else 23 #define ctopen nodev 24 #define ctclose nodev 25 #define ctstrategy nodev 26 #define ctread nodev 27 #define ctwrite nodev 28 #define ctdump nodev 29 #define ctioctl nodev 30 #endif 31 32 #include "rd.h" 33 #if NRD > 0 34 int rdopen(),rdstrategy(),rdread(),rdwrite(),rddump(),rdioctl(),rdsize(); 35 #else 36 #define rdopen nodev 37 #define rdstrategy nodev 38 #define rdread nodev 39 #define rdwrite nodev 40 #define rddump nodev 41 #define rdioctl nodev 42 #define rdsize 0 43 #endif 44 45 #include "sd.h" 46 #if NSD > 0 47 int sdopen(),sdstrategy(),sdread(),sdwrite(),sddump(),sdioctl(),sdsize(); 48 #else 49 #define sdopen nodev 50 #define sdstrategy nodev 51 #define sdread nodev 52 #define sdwrite nodev 53 #define sddump nodev 54 #define sdioctl nodev 55 #define sdsize 0 56 #endif 57 58 #include "cd.h" 59 #if NCD > 0 60 int cdopen(),cdstrategy(),cdread(),cdwrite(),cddump(),cdioctl(),cdsize(); 61 #else 62 #define cdopen nodev 63 #define cdstrategy nodev 64 #define cdread nodev 65 #define cdwrite nodev 66 #define cddump nodev 67 #define cdioctl nodev 68 #define cdsize 0 69 #endif 70 71 #include "fd.h" 72 #if NFD > 0 73 int fdopen(),fdstrategy(),fdread(),fdwrite(),fddump(),fdioctl(),fdsize(); 74 #else 75 #define fdopen nodev 76 #define fdstrategy nodev 77 #define fdread nodev 78 #define fdwrite nodev 79 #define fddump nodev 80 #define fdioctl nodev 81 #define fdsize 0 82 #endif 83 84 struct bdevsw bdevsw[] = 85 { 86 { ctopen, ctclose, ctstrategy, ctioctl, /*0*/ 87 ctdump, 0, B_TAPE }, 88 { nodev, nodev, nodev, nodev, /*1*/ 89 nodev, 0, 0 }, 90 { rdopen, nulldev, rdstrategy, rdioctl, /*2*/ 91 rddump, rdsize, 0 }, 92 { nodev, nodev, swstrategy, nodev, /*3*/ 93 nodev, 0, 0 }, 94 { sdopen, nulldev, sdstrategy, sdioctl, /*4*/ 95 sddump, sdsize, 0 }, 96 { cdopen, nulldev, cdstrategy, cdioctl, /*5*/ 97 cddump, cdsize, 0 }, 98 { fdopen, nulldev, fdstrategy, fdioctl, /*6*/ 99 fddump, fdsize, 0 }, 100 }; 101 int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 102 103 int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(),cnselect(); 104 105 int syopen(),syread(),sywrite(),syioctl(),syselect(); 106 107 int mmrw(); 108 #define mmselect seltrue 109 110 #include "pty.h" 111 #if NPTY > 0 112 int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 113 int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 114 int ptyioctl(); 115 struct tty pt_tty[]; 116 #else 117 #define ptsopen nodev 118 #define ptsclose nodev 119 #define ptsread nodev 120 #define ptswrite nodev 121 #define ptcopen nodev 122 #define ptcclose nodev 123 #define ptcread nodev 124 #define ptcwrite nodev 125 #define ptyioctl nodev 126 #define pt_tty 0 127 #define ptcselect nodev 128 #define ptsstop nulldev 129 #endif 130 131 #include "ppi.h" 132 #if NPPI > 0 133 int ppiopen(),ppiclose(),ppiread(),ppiwrite(),ppiioctl(); 134 #else 135 #define ppiopen nodev 136 #define ppiclose nodev 137 #define ppiread nodev 138 #define ppiwrite nodev 139 #define ppiioctl nodev 140 #endif 141 142 #include "ite.h" 143 #if NITE > 0 144 int iteopen(),iteclose(),iteread(),itewrite(),iteioctl(); 145 struct tty ite_tty[]; 146 #else 147 #define iteopen nodev 148 #define iteclose nodev 149 #define iteread nodev 150 #define itewrite nodev 151 #define itestop nulldev 152 #define iteioctl nodev 153 #define ite_tty 0 154 #endif 155 156 #include "dca.h" 157 #if NDCA > 0 158 int dcaopen(),dcaclose(),dcaread(),dcawrite(),dcastop(),dcaioctl(); 159 struct tty dca_tty[]; 160 #else 161 #define dcaopen nodev 162 #define dcaclose nodev 163 #define dcaread nodev 164 #define dcawrite nodev 165 #define dcastop nulldev 166 #define dcaioctl nodev 167 #define dca_tty 0 168 #endif 169 170 #include "dcm.h" 171 #if NDCM > 0 172 int dcmopen(),dcmclose(),dcmread(),dcmwrite(),dcmstop(),dcmioctl(); 173 struct tty dcm_tty[]; 174 #else 175 #define dcmopen nodev 176 #define dcmclose nodev 177 #define dcmread nodev 178 #define dcmwrite nodev 179 #define dcmstop nulldev 180 #define dcmioctl nodev 181 #define dcm_tty 0 182 #endif 183 184 #include "clock.h" 185 #if NCLOCK > 0 186 int clockopen(),clockclose(),clockioctl(),clockmap(); 187 #else 188 #define clockopen nodev 189 #define clockclose nodev 190 #define clockioctl nodev 191 #define clockmap nodev 192 #endif 193 194 int logopen(),logclose(),logread(),logioctl(),logselect(); 195 196 int ttselect(), seltrue(); 197 198 int grfopen(),grfclose(),grfioctl(),grfselect(),grfmap(); 199 200 int hilopen(),hilclose(),hilioctl(),hilmap(),hilselect(),hilread(); 201 202 struct cdevsw cdevsw[] = 203 { 204 cnopen, cnclose, cnread, cnwrite, /*0*/ 205 cnioctl, nulldev, nulldev, NULL, 206 cnselect, nodev, NULL, 207 syopen, nulldev, syread, sywrite, /*1*/ 208 syioctl, nulldev, nulldev, NULL, 209 syselect, nodev, NULL, 210 nulldev, nulldev, mmrw, mmrw, /*2*/ 211 nodev, nulldev, nulldev, NULL, 212 mmselect, nodev, NULL, 213 nulldev, nulldev, rawread, rawwrite, /*3*/ 214 nodev, nodev, nulldev, NULL, 215 nodev, nodev, swstrategy, 216 ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 217 ptyioctl, ptsstop, nulldev, pt_tty, 218 ttselect, nodev, NULL, 219 ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 220 ptyioctl, nulldev, nulldev, pt_tty, 221 ptcselect, nodev, NULL, 222 logopen, logclose, logread, nodev, /*6*/ 223 logioctl, nodev, nulldev, NULL, 224 logselect, nodev, NULL, 225 ctopen, ctclose, ctread, ctwrite, /*7*/ 226 ctioctl, nodev, nulldev, NULL, 227 seltrue, nodev, ctstrategy, 228 sdopen, nulldev, sdread, sdwrite, /*8*/ 229 sdioctl, nodev, nulldev, NULL, 230 seltrue, nodev, sdstrategy, 231 rdopen, nulldev, rdread, rdwrite, /*9*/ 232 rdioctl, nodev, nulldev, NULL, 233 seltrue, nodev, rdstrategy, 234 grfopen, grfclose, nulldev, nulldev, /*10*/ 235 grfioctl, nodev, nulldev, NULL, 236 grfselect, grfmap, NULL, 237 ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 238 ppiioctl, nodev, nulldev, NULL, 239 nodev, nodev, NULL, 240 dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 241 dcaioctl, dcastop, nulldev, dca_tty, 242 ttselect, nodev, NULL, 243 iteopen, iteclose, iteread, itewrite, /*13*/ 244 iteioctl, nodev, nulldev, ite_tty, 245 ttselect, nodev, NULL, 246 hilopen, hilclose, hilread, nulldev, /*14*/ 247 hilioctl, nodev, nulldev, NULL, 248 hilselect, hilmap, NULL, 249 dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 250 dcmioctl, dcmstop, nulldev, dcm_tty, 251 ttselect, nodev, NULL, 252 nodev, nodev, nodev, nodev, /*16*/ 253 nodev, nodev, nulldev, NULL, 254 seltrue, nodev, NULL, 255 cdopen, nulldev, cdread, cdwrite, /*17*/ 256 cdioctl, nodev, nulldev, NULL, 257 seltrue, nodev, cdstrategy, 258 clockopen, clockclose, nulldev, nulldev, /*18*/ 259 clockioctl, nodev, nulldev, NULL, 260 nulldev, clockmap, NULL, 261 fdopen, nulldev, fdread, fdwrite, /*19*/ 262 fdioctl, nodev, nulldev, NULL, 263 seltrue, nodev, NULL, 264 }; 265 int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 266 267 int mem_no = 2; /* major device number of memory special file */ 268 269 /* 270 * Swapdev is a fake device implemented 271 * in sw.c used only internally to get to swstrategy. 272 * It cannot be provided to the users, because the 273 * swstrategy routine munches the b_dev and b_blkno entries 274 * before calling the appropriate driver. This would horribly 275 * confuse, e.g. the hashing routines. Instead, /dev/drum is 276 * provided as a character (raw) device. 277 */ 278 dev_t swapdev = makedev(3, 0); 279