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.1 (Berkeley) 05/08/90 8 */ 9 10 #include "param.h" 11 #include "systm.h" 12 #include "buf.h" 13 #include "ioctl.h" 14 #include "tty.h" 15 #include "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(); 134 #else 135 #define ppiopen nodev 136 #define ppiclose nodev 137 #define ppiread nodev 138 #define ppiwrite nodev 139 #endif 140 141 #include "ite.h" 142 #if NITE > 0 143 int iteopen(),iteclose(),iteread(),itewrite(),iteioctl(); 144 struct tty ite_tty[]; 145 #else 146 #define iteopen nodev 147 #define iteclose nodev 148 #define iteread nodev 149 #define itewrite nodev 150 #define itestop nulldev 151 #define iteioctl nodev 152 #define ite_tty 0 153 #endif 154 155 #include "dca.h" 156 #if NDCA > 0 157 int dcaopen(),dcaclose(),dcaread(),dcawrite(),dcastop(),dcaioctl(); 158 struct tty dca_tty[]; 159 #else 160 #define dcaopen nodev 161 #define dcaclose nodev 162 #define dcaread nodev 163 #define dcawrite nodev 164 #define dcastop nulldev 165 #define dcaioctl nodev 166 #define dca_tty 0 167 #endif 168 169 #include "dcm.h" 170 #if NDCM > 0 171 int dcmopen(),dcmclose(),dcmread(),dcmwrite(),dcmstop(),dcmioctl(); 172 struct tty dcm_tty[]; 173 #else 174 #define dcmopen nodev 175 #define dcmclose nodev 176 #define dcmread nodev 177 #define dcmwrite nodev 178 #define dcmstop nulldev 179 #define dcmioctl nodev 180 #define dcm_tty 0 181 #endif 182 183 #include "clock.h" 184 #if NCLOCK > 0 185 int clockopen(),clockclose(),clockioctl(),clockmap(); 186 #else 187 #define clockopen nodev 188 #define clockclose nodev 189 #define clockioctl nodev 190 #define clockmap nodev 191 #endif 192 193 int logopen(),logclose(),logread(),logioctl(),logselect(); 194 195 int ttselect(), seltrue(); 196 197 int grfopen(),grfclose(),grfioctl(),grfselect(),grfmap(); 198 199 int hilopen(),hilclose(),hilioctl(),hilmap(),hilselect(),hilread(); 200 201 struct cdevsw cdevsw[] = 202 { 203 cnopen, cnclose, cnread, cnwrite, /*0*/ 204 cnioctl, nulldev, nulldev, NULL, 205 cnselect, nodev, NULL, 206 syopen, nulldev, syread, sywrite, /*1*/ 207 syioctl, nulldev, nulldev, NULL, 208 syselect, nodev, NULL, 209 nulldev, nulldev, mmrw, mmrw, /*2*/ 210 nodev, nulldev, nulldev, NULL, 211 mmselect, nodev, NULL, 212 nulldev, nulldev, rawread, rawwrite, /*3*/ 213 nodev, nodev, nulldev, NULL, 214 nodev, nodev, swstrategy, 215 ptsopen, ptsclose, ptsread, ptswrite, /*4*/ 216 ptyioctl, ptsstop, nulldev, pt_tty, 217 ttselect, nodev, NULL, 218 ptcopen, ptcclose, ptcread, ptcwrite, /*5*/ 219 ptyioctl, nulldev, nulldev, pt_tty, 220 ptcselect, nodev, NULL, 221 logopen, logclose, logread, nodev, /*6*/ 222 logioctl, nodev, nulldev, NULL, 223 logselect, nodev, NULL, 224 ctopen, ctclose, ctread, ctwrite, /*7*/ 225 ctioctl, nodev, nulldev, NULL, 226 seltrue, nodev, ctstrategy, 227 sdopen, nulldev, sdread, sdwrite, /*8*/ 228 sdioctl, nodev, nulldev, NULL, 229 seltrue, nodev, sdstrategy, 230 rdopen, nulldev, rdread, rdwrite, /*9*/ 231 rdioctl, nodev, nulldev, NULL, 232 seltrue, nodev, rdstrategy, 233 grfopen, grfclose, nulldev, nulldev, /*10*/ 234 grfioctl, nodev, nulldev, NULL, 235 grfselect, grfmap, NULL, 236 ppiopen, ppiclose, ppiread, ppiwrite, /*11*/ 237 nodev, nodev, nulldev, NULL, 238 nodev, nodev, NULL, 239 dcaopen, dcaclose, dcaread, dcawrite, /*12*/ 240 dcaioctl, dcastop, nulldev, dca_tty, 241 ttselect, nodev, NULL, 242 iteopen, iteclose, iteread, itewrite, /*13*/ 243 iteioctl, nodev, nulldev, ite_tty, 244 ttselect, nodev, NULL, 245 hilopen, hilclose, hilread, nulldev, /*14*/ 246 hilioctl, nodev, nulldev, NULL, 247 hilselect, hilmap, NULL, 248 dcmopen, dcmclose, dcmread, dcmwrite, /*15*/ 249 dcmioctl, dcmstop, nulldev, dcm_tty, 250 ttselect, nodev, NULL, 251 nodev, nodev, nodev, nodev, /*16*/ 252 nodev, nodev, nulldev, NULL, 253 seltrue, nodev, NULL, 254 cdopen, nulldev, cdread, cdwrite, /*17*/ 255 cdioctl, nodev, nulldev, NULL, 256 seltrue, nodev, cdstrategy, 257 clockopen, clockclose, nulldev, nulldev, /*18*/ 258 clockioctl, nodev, nulldev, NULL, 259 nulldev, clockmap, NULL, 260 fdopen, nulldev, fdread, fdwrite, /*19*/ 261 fdioctl, nodev, nulldev, NULL, 262 seltrue, nodev, NULL, 263 }; 264 int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 265 266 int mem_no = 2; /* 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(3, 0); 278