1 /* conf.c 4.49 82/03/14 */ 2 3 #include "../h/param.h" 4 #include "../h/systm.h" 5 #include "../h/buf.h" 6 #include "../h/tty.h" 7 #include "../h/conf.h" 8 #include "../h/text.h" 9 #include "../h/dir.h" 10 #include "../h/user.h" 11 #include "../h/proc.h" 12 #include "../h/file.h" 13 #include "../h/inode.h" 14 #include "../h/acct.h" 15 #include "../h/pte.h" 16 17 int nulldev(); 18 int nodev(); 19 20 #include "hp.h" 21 #if NHP > 0 22 int hpstrategy(),hpread(),hpwrite(),hpdump(),hpioctl(); 23 #else 24 #define hpstrategy nodev 25 #define hpread nodev 26 #define hpwrite nodev 27 #define hpdump nodev 28 #define hpioctl nodev 29 #endif 30 31 #include "tu.h" 32 #if NHT > 0 33 int htopen(),htclose(),htstrategy(),htread(),htwrite(),htdump(),htioctl(); 34 #else 35 #define htopen nodev 36 #define htclose nodev 37 #define htstrategy nodev 38 #define htread nodev 39 #define htwrite nodev 40 #define htdump nodev 41 #define htioctl nodev 42 #endif 43 44 #include "rk.h" 45 #if NHK > 0 46 int rkstrategy(),rkread(),rkwrite(),rkintr(),rkdump(),rkreset(); 47 #else 48 #define rkstrategy nodev 49 #define rkread nodev 50 #define rkwrite nodev 51 #define rkintr nodev 52 #define rkdump nodev 53 #define rkreset nodev 54 #endif 55 56 #include "te.h" 57 #if NTE > 0 58 int tmopen(),tmclose(),tmstrategy(),tmread(),tmwrite(); 59 int tmioctl(),tmdump(),tmreset(); 60 #else 61 #define tmopen nodev 62 #define tmclose nodev 63 #define tmstrategy nodev 64 #define tmread nodev 65 #define tmwrite nodev 66 #define tmioctl nodev 67 #define tmdump nodev 68 #define tmreset nodev 69 #endif 70 71 #include "ts.h" 72 #if NTS > 0 73 int tsopen(),tsclose(),tsstrategy(),tsread(),tswrite(); 74 int tsioctl(),tsdump(),tsreset(); 75 #else 76 #define tsopen nodev 77 #define tsclose nodev 78 #define tsstrategy nodev 79 #define tsread nodev 80 #define tswrite nodev 81 #define tsioctl nodev 82 #define tsdump nodev 83 #define tsreset nodev 84 #endif 85 86 #include "mu.h" 87 #if NMT > 0 88 int mtopen(),mtclose(),mtstrategy(),mtread(),mtwrite(); 89 int mtioctl(),mtdump(); 90 #else 91 #define mtopen nodev 92 #define mtclose nodev 93 #define mtstrategy nodev 94 #define mtread nodev 95 #define mtwrite nodev 96 #define mtioctl nodev 97 #define mtdump nodev 98 #endif 99 100 #include "ra.h" 101 #if NUDA > 0 102 int udopen(),udstrategy(),udread(),udwrite(),udreset(),uddump(); 103 #else 104 #define udopen nodev 105 #define udstrategy nodev 106 #define udread nodev 107 #define udwrite nodev 108 #define udreset nulldev 109 #define uddump nodev 110 #endif 111 112 #include "up.h" 113 #if NSC > 0 114 int upstrategy(),upread(),upwrite(),upreset(),updump(); 115 #else 116 #define upstrategy nodev 117 #define upread nodev 118 #define upwrite nodev 119 #define upreset nulldev 120 #define updump nodev 121 #endif 122 123 #include "tj.h" 124 #if NUT > 0 125 int utopen(),utclose(),utstrategy(),utread(),utwrite(),utioctl(); 126 int utreset(),utdump(); 127 #else 128 #define utopen nodev 129 #define utclose nodev 130 #define utread nodev 131 #define utstrategy nodev 132 #define utwrite nodev 133 #define utreset nulldev 134 #define utioctl nodev 135 #define utdump nodev 136 #endif 137 138 #if defined(VAX750) || defined(VAX7ZZ) 139 int tuopen(),tuclose(),tustrategy(); 140 #else 141 #define tuopen nodev 142 #define tuclose nodev 143 #define tustrategy nodev 144 #endif 145 146 int swstrategy(),swread(),swwrite(); 147 148 struct bdevsw bdevsw[] = 149 { 150 nulldev, nulldev, hpstrategy, hpdump, 0, /*0*/ 151 htopen, htclose, htstrategy, htdump, B_TAPE, /*1*/ 152 nulldev, nulldev, upstrategy, updump, 0, /*2*/ 153 nulldev, nulldev, rkstrategy, rkdump, 0, /*3*/ 154 nodev, nodev, swstrategy, nodev, 0, /*4*/ 155 tmopen, tmclose, tmstrategy, tmdump, B_TAPE, /*5*/ 156 tsopen, tsclose, tsstrategy, tsdump, B_TAPE, /*6*/ 157 mtopen, mtclose, mtstrategy, mtdump, B_TAPE, /*7*/ 158 tuopen, tuclose, tustrategy, nodev, B_TAPE, /*8*/ 159 udopen, nulldev, udstrategy, uddump, 0, /*9*/ 160 utopen, utclose, utstrategy, utdump, B_TAPE, /*10*/ 161 0, 162 }; 163 164 int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 165 struct tty cons; 166 167 #include "acc.h" 168 #if NACC > 0 169 int accreset(); 170 #else 171 #define accreset nulldev 172 #endif 173 174 #include "ct.h" 175 #if NCT > 0 176 int ctopen(),ctclose(),ctwrite(); 177 #else 178 #define ctopen nulldev 179 #define ctclose nulldev 180 #define ctwrite nulldev 181 #endif 182 183 #include "dh.h" 184 #if NDH == 0 185 #define dhopen nodev 186 #define dhclose nodev 187 #define dhread nodev 188 #define dhwrite nodev 189 #define dhioctl nodev 190 #define dhstop nodev 191 #define dhreset nulldev 192 #define dh11 0 193 #else 194 int dhopen(),dhclose(),dhread(),dhwrite(),dhioctl(),dhstop(),dhreset(); 195 struct tty dh11[]; 196 #endif 197 198 #if VAX780 199 int flopen(),flclose(),flread(),flwrite(); 200 #endif 201 202 #include "dz.h" 203 #if NDZ == 0 204 #define dzopen nodev 205 #define dzclose nodev 206 #define dzread nodev 207 #define dzwrite nodev 208 #define dzioctl nodev 209 #define dzstop nodev 210 #define dzreset nulldev 211 #define dz_tty 0 212 #else 213 int dzopen(),dzclose(),dzread(),dzwrite(),dzioctl(),dzstop(),dzreset(); 214 struct tty dz_tty[]; 215 #endif 216 217 #include "lp.h" 218 #if NLP > 0 219 int lpopen(),lpclose(),lpwrite(),lpreset(); 220 #else 221 #define lpopen nodev 222 #define lpclose nodev 223 #define lpwrite nodev 224 #define lpreset nulldev 225 #endif 226 227 int syopen(),syread(),sywrite(),syioctl(),syselect(); 228 229 int mmread(),mmwrite(); 230 #define mmselect seltrue 231 232 #include "va.h" 233 #if NVA > 0 234 int vaopen(),vaclose(),vawrite(),vaioctl(),vareset(),vaselect(); 235 #else 236 #define vaopen nodev 237 #define vaclose nodev 238 #define vawrite nodev 239 #define vaopen nodev 240 #define vaioctl nodev 241 #define vareset nulldev 242 #define vaselect nodev 243 #endif 244 245 #include "vp.h" 246 #if NVP > 0 247 int vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset(),vpselect(); 248 #else 249 #define vpopen nodev 250 #define vpclose nodev 251 #define vpwrite nodev 252 #define vpioctl nodev 253 #define vpreset nulldev 254 #define vpselect nodev 255 #endif 256 257 #include "pty.h" 258 #if NPTY > 0 259 int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 260 int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 261 int ptyioctl(); 262 struct tty pt_tty[]; 263 #else 264 #define ptsopen nodev 265 #define ptsclose nodev 266 #define ptsread nodev 267 #define ptswrite nodev 268 #define ptcopen nodev 269 #define ptcclose nodev 270 #define ptcread nodev 271 #define ptcwrite nodev 272 #define ptyioctl nodev 273 #define pt_tty 0 274 #define ptcselect nodev 275 #define ptsstop nulldev 276 #endif 277 278 #include "dn.h" 279 #if NDN > 0 280 int dnopen(), dnclose(), dnwrite(); 281 #else 282 #define dnopen nodev 283 #define dnclose nodev 284 #define dnwrite nodev 285 #endif 286 287 /* 288 #include "un.h" 289 #if NUN > 0 290 int unopen(), unclose(), unread(), unwrite(), unioctl(), unreset(); 291 #else 292 */ 293 #define unopen nodev 294 #define unclose nodev 295 #define unread nodev 296 #define unwrite nodev 297 #define unioctl nodev 298 #define unreset nulldev 299 /* 300 #endif 301 */ 302 303 int ttselect(), seltrue(); 304 305 struct cdevsw cdevsw[] = 306 { 307 cnopen, cnclose, cnread, cnwrite, /*0*/ 308 cnioctl, nulldev, nulldev, &cons, 309 ttselect, 310 dzopen, dzclose, dzread, dzwrite, /*1*/ 311 dzioctl, dzstop, dzreset, dz_tty, 312 ttselect, 313 syopen, nulldev, syread, sywrite, /*2*/ 314 syioctl, nulldev, nulldev, 0, 315 syselect, 316 nulldev, nulldev, mmread, mmwrite, /*3*/ 317 nodev, nulldev, nulldev, 0, 318 mmselect, 319 nulldev, nulldev, hpread, hpwrite, /*4*/ 320 hpioctl, nodev, nulldev, 0, 321 seltrue, 322 htopen, htclose, htread, htwrite, /*5*/ 323 htioctl, nodev, nulldev, 0, 324 seltrue, 325 vpopen, vpclose, nodev, vpwrite, /*6*/ 326 vpioctl, nulldev, vpreset, 0, 327 vpselect, 328 nulldev, nulldev, swread, swwrite, /*7*/ 329 nodev, nodev, nulldev, 0, 330 nodev, 331 #if VAX780 332 flopen, flclose, flread, flwrite, /*8*/ 333 nodev, nodev, nulldev, 0, 334 seltrue, 335 #else 336 nodev, nodev, nodev, nodev, /*8*/ 337 nodev, nodev, nodev, 0, 338 nodev, 339 #endif 340 nodev, nodev, nodev, nodev, /*9*/ 341 nodev, nodev, nodev, 0, 342 nodev, 343 vaopen, vaclose, nodev, vawrite, /*10*/ 344 vaioctl, nulldev, vareset, 0, 345 vaselect, 346 nulldev, nulldev, rkread, rkwrite, /*11*/ 347 nodev, nodev, rkreset, 0, 348 seltrue, 349 dhopen, dhclose, dhread, dhwrite, /*12*/ 350 dhioctl, dhstop, dhreset, dh11, 351 ttselect, 352 nulldev, nulldev, upread, upwrite, /*13*/ 353 nodev, nodev, upreset, 0, 354 seltrue, 355 tmopen, tmclose, tmread, tmwrite, /*14*/ 356 tmioctl, nodev, tmreset, 0, 357 seltrue, 358 lpopen, lpclose, nodev, lpwrite, /*15*/ 359 nodev, nodev, lpreset, 0, 360 seltrue, 361 tsopen, tsclose, tsread, tswrite, /*16*/ 362 tsioctl, nodev, tsreset, 0, 363 seltrue, 364 utopen, utclose, utread, utwrite, /*17*/ 365 utioctl, nodev, utreset, 0, 366 seltrue, 367 ctopen, ctclose, nodev, ctwrite, /*18*/ 368 nodev, nodev, nulldev, 0, 369 seltrue, 370 nodev, nodev, nodev, nodev, /*19*/ 371 nodev, nodev, nulldev, 0, 372 nodev, 373 ptsopen, ptsclose, ptsread, ptswrite, /*20*/ 374 ptyioctl, ptsstop, nodev, pt_tty, 375 ttselect, 376 ptcopen, ptcclose, ptcread, ptcwrite, /*21*/ 377 ptyioctl, nulldev, nodev, pt_tty, 378 ptcselect, 379 nodev, nodev, nodev, nodev, /*22*/ 380 nodev, nodev, accreset, 0, 381 nodev, 382 nodev, nodev, nodev, nodev, /*23*/ 383 nodev, nodev, nodev, 0, 384 nodev, 385 dnopen, dnclose, nodev, dnwrite, /*24*/ 386 nodev, nodev, nodev, 0, 387 seltrue, 388 unopen, unclose, unread, unwrite, /*25*/ 389 unioctl, nodev, unreset, 0, 390 seltrue, 391 /* 25-29 reserved to local sites */ 392 0, 393 }; 394 395 int ttyopen(),ttyclose(),ttread(),nullioctl(),ttstart(); 396 char *ttwrite(); 397 int ttyinput(); 398 399 #include "bk.h" 400 #if NBK > 0 401 int bkopen(),bkclose(),bkread(),bkinput(),bkioctl(); 402 #endif 403 404 struct linesw linesw[] = 405 { 406 ttyopen, nodev, ttread, ttwrite, nullioctl, 407 ttyinput, nodev, nulldev, ttstart, nulldev, 408 #if NBK > 0 409 bkopen, bkclose, bkread, ttwrite, bkioctl, 410 bkinput, nodev, nulldev, ttstart, nulldev, 411 #else 412 nodev, nodev, nodev, (char *(*)())nodev, nodev, 413 nodev, nodev, nodev, nodev, nodev, 414 #endif 415 ttyopen, ttyclose, ttread, ttwrite, nullioctl, 416 ttyinput, nodev, nulldev, ttstart, nulldev, 417 0 418 }; 419 420 int nldisp = 3; 421 422 struct buf bfreelist[BQUEUES]; /* buffer chain headers */ 423 struct buf bswlist; /* free list of swap headers */ 424 struct buf *bclnlist; /* header for list of cleaned pages */ 425 struct acct acctbuf; 426 struct inode *acctp; 427 428 int mem_no = 3; /* major device number of memory special file */ 429 430 /* 431 * Swapdev is a fake device implemented 432 * in sw.c used only internally to get to swstrategy. 433 * It cannot be provided to the users, because the 434 * swstrategy routine munches the b_dev and b_blkno entries 435 * before calling the appropriate driver. This would horribly 436 * confuse, e.g. the hashing routines. Instead, /dev/drum is 437 * provided as a character (raw) device. 438 */ 439 dev_t swapdev = makedev(4, 0); 440 441 extern struct user u; 442