1 /* conf.c 4.69 83/05/18 */ 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 9 int nulldev(); 10 int nodev(); 11 12 #include "hp.h" 13 #if NHP > 0 14 int hpopen(),hpstrategy(),hpread(),hpwrite(),hpdump(),hpioctl(),hpsize(); 15 #else 16 #define hpopen nodev 17 #define hpstrategy nodev 18 #define hpread nodev 19 #define hpwrite nodev 20 #define hpdump nodev 21 #define hpioctl nodev 22 #define hpsize 0 23 #endif 24 25 #include "tu.h" 26 #if NHT > 0 27 int htopen(),htclose(),htstrategy(),htread(),htwrite(),htdump(),htioctl(); 28 #else 29 #define htopen nodev 30 #define htclose nodev 31 #define htstrategy nodev 32 #define htread nodev 33 #define htwrite nodev 34 #define htdump nodev 35 #define htioctl nodev 36 #endif 37 38 #include "rk.h" 39 #if NHK > 0 40 int rkopen(),rkstrategy(),rkread(),rkwrite(),rkintr(); 41 int rkdump(),rkreset(),rksize(); 42 #else 43 #define rkopen nodev 44 #define rkstrategy nodev 45 #define rkread nodev 46 #define rkwrite nodev 47 #define rkintr nodev 48 #define rkdump nodev 49 #define rkreset nodev 50 #define rksize 0 51 #endif 52 53 #include "te.h" 54 #if NTE > 0 55 int tmopen(),tmclose(),tmstrategy(),tmread(),tmwrite(); 56 int tmioctl(),tmdump(),tmreset(); 57 #else 58 #define tmopen nodev 59 #define tmclose nodev 60 #define tmstrategy nodev 61 #define tmread nodev 62 #define tmwrite nodev 63 #define tmioctl nodev 64 #define tmdump nodev 65 #define tmreset nodev 66 #endif 67 68 #include "ts.h" 69 #if NTS > 0 70 int tsopen(),tsclose(),tsstrategy(),tsread(),tswrite(); 71 int tsioctl(),tsdump(),tsreset(); 72 #else 73 #define tsopen nodev 74 #define tsclose nodev 75 #define tsstrategy nodev 76 #define tsread nodev 77 #define tswrite nodev 78 #define tsioctl nodev 79 #define tsdump nodev 80 #define tsreset nodev 81 #endif 82 83 #include "mu.h" 84 #if NMT > 0 85 int mtopen(),mtclose(),mtstrategy(),mtread(),mtwrite(); 86 int mtioctl(),mtdump(); 87 #else 88 #define mtopen nodev 89 #define mtclose nodev 90 #define mtstrategy nodev 91 #define mtread nodev 92 #define mtwrite nodev 93 #define mtioctl nodev 94 #define mtdump nodev 95 #endif 96 97 #include "ra.h" 98 #if NUDA > 0 99 int udopen(),udstrategy(),udread(),udwrite(),udreset(),uddump(),udsize(); 100 #else 101 #define udopen nodev 102 #define udstrategy nodev 103 #define udread nodev 104 #define udwrite nodev 105 #define udreset nulldev 106 #define uddump nodev 107 #define udsize 0 108 #endif 109 110 #include "up.h" 111 #if NSC > 0 112 int upopen(),upstrategy(),upread(),upwrite(),upreset(),updump(),upsize(); 113 #else 114 #define upopen nodev 115 #define upstrategy nodev 116 #define upread nodev 117 #define upwrite nodev 118 #define upreset nulldev 119 #define updump nodev 120 #define upsize 0 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 #include "rb.h" 139 #if NIDC > 0 140 int idcopen(),idcstrategy(),idcread(),idcwrite(); 141 int idcreset(),idcdump(),idcsize();; 142 #else 143 #define idcopen nodev 144 #define idcstrategy nodev 145 #define idcread nodev 146 #define idcwrite nodev 147 #define idcreset nulldev 148 #define idcdump nodev 149 #define idcsize 0 150 #endif 151 152 #if defined(VAX750) || defined(VAX730) 153 int tuopen(),tuclose(),tustrategy(); 154 #else 155 #define tuopen nodev 156 #define tuclose nodev 157 #define tustrategy nodev 158 #endif 159 160 #include "rx.h" 161 #if NFX > 0 162 int rxopen(),rxstrategy(),rxclose(),rxread(),rxwrite(),rxreset(),rxioctl(); 163 #else 164 #define rxopen nodev 165 #define rxstrategy nodev 166 #define rxclose nodev 167 #define rxread nodev 168 #define rxwrite nodev 169 #define rxreset nulldev 170 #define rxioctl nodev 171 #endif 172 173 #include "uu.h" 174 #if NUU > 0 175 int uuopen(),uustrategy(),uuclose(),uureset(),uuioctl(); 176 #else 177 #define uuopen nodev 178 #define uustrategy nodev 179 #define uuclose nodev 180 #define uureset nulldev 181 #define uuioctl nodev 182 #endif 183 184 #include "rl.h" 185 #if NRL > 0 186 int rlopen(),rlstrategy(),rlclose(),rlread(),rlwrite(); 187 int rlreset(),rlioctl(),rldump(),rlsize(); 188 #else 189 #define rlopen nodev 190 #define rlstrategy nodev 191 #define rlclose nodev 192 #define rlread nodev 193 #define rlwrite nodev 194 #define rlreset nulldev 195 #define rlioctl nodev 196 #define rldump nodev 197 #define rlsize 0 198 #endif 199 200 int swstrategy(),swread(),swwrite(); 201 202 struct bdevsw bdevsw[] = 203 { 204 { hpopen, nulldev, hpstrategy, hpdump, /*0*/ 205 hpsize, 0 }, 206 { htopen, htclose, htstrategy, htdump, /*1*/ 207 0, B_TAPE }, 208 { upopen, nulldev, upstrategy, updump, /*2*/ 209 upsize, 0 }, 210 { rkopen, nulldev, rkstrategy, rkdump, /*3*/ 211 rksize, 0 }, 212 { nodev, nodev, swstrategy, nodev, /*4*/ 213 0, 0 }, 214 { tmopen, tmclose, tmstrategy, tmdump, /*5*/ 215 0, B_TAPE }, 216 { tsopen, tsclose, tsstrategy, tsdump, /*6*/ 217 0, B_TAPE }, 218 { mtopen, mtclose, mtstrategy, mtdump, /*7*/ 219 0, B_TAPE }, 220 { tuopen, tuclose, tustrategy, nodev, /*8*/ 221 0, B_TAPE }, 222 { udopen, nulldev, udstrategy, uddump, /*9*/ 223 udsize, 0 }, 224 { utopen, utclose, utstrategy, utdump, /*10*/ 225 0, B_TAPE }, 226 { idcopen, nodev, idcstrategy, idcdump, /*11*/ 227 idcsize, 0 }, 228 { rxopen, rxclose, rxstrategy, nodev, /*12*/ 229 0, 0 }, 230 { uuopen, uuclose, uustrategy, nodev, /*13*/ 231 0, 0 }, 232 { rlopen, rlclose, rlstrategy, rldump, /*14*/ 233 rlsize, 0 }, 234 }; 235 int nblkdev = sizeof (bdevsw) / sizeof (bdevsw[0]); 236 237 int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 238 struct tty cons; 239 240 #include "acc.h" 241 #if NACC > 0 242 int accreset(); 243 #else 244 #define accreset nulldev 245 #endif 246 247 #include "ct.h" 248 #if NCT > 0 249 int ctopen(),ctclose(),ctwrite(); 250 #else 251 #define ctopen nulldev 252 #define ctclose nulldev 253 #define ctwrite nulldev 254 #endif 255 256 #include "dh.h" 257 #if NDH == 0 258 #define dhopen nodev 259 #define dhclose nodev 260 #define dhread nodev 261 #define dhwrite nodev 262 #define dhioctl nodev 263 #define dhstop nodev 264 #define dhreset nulldev 265 #define dh11 0 266 #else 267 int dhopen(),dhclose(),dhread(),dhwrite(),dhioctl(),dhstop(),dhreset(); 268 struct tty dh11[]; 269 #endif 270 271 #include "dmf.h" 272 #if NDMF == 0 273 #define dmfopen nodev 274 #define dmfclose nodev 275 #define dmfread nodev 276 #define dmfwrite nodev 277 #define dmfioctl nodev 278 #define dmfstop nodev 279 #define dmfreset nulldev 280 #define dmf_tty 0 281 #else 282 int dmfopen(),dmfclose(),dmfread(),dmfwrite(),dmfioctl(),dmfstop(),dmfreset(); 283 struct tty dmf_tty[]; 284 #endif 285 286 #if VAX780 287 int flopen(),flclose(),flread(),flwrite(); 288 #endif 289 290 #include "dz.h" 291 #if NDZ == 0 292 #define dzopen nodev 293 #define dzclose nodev 294 #define dzread nodev 295 #define dzwrite nodev 296 #define dzioctl nodev 297 #define dzstop nodev 298 #define dzreset nulldev 299 #define dz_tty 0 300 #else 301 int dzopen(),dzclose(),dzread(),dzwrite(),dzioctl(),dzstop(),dzreset(); 302 struct tty dz_tty[]; 303 #endif 304 305 #include "lp.h" 306 #if NLP > 0 307 int lpopen(),lpclose(),lpwrite(),lpreset(); 308 #else 309 #define lpopen nodev 310 #define lpclose nodev 311 #define lpwrite nodev 312 #define lpreset nulldev 313 #endif 314 315 int syopen(),syread(),sywrite(),syioctl(),syselect(); 316 317 int mmread(),mmwrite(); 318 #define mmselect seltrue 319 320 #include "va.h" 321 #if NVA > 0 322 int vaopen(),vaclose(),vawrite(),vaioctl(),vareset(),vaselect(); 323 #else 324 #define vaopen nodev 325 #define vaclose nodev 326 #define vawrite nodev 327 #define vaopen nodev 328 #define vaioctl nodev 329 #define vareset nulldev 330 #define vaselect nodev 331 #endif 332 333 #include "vp.h" 334 #if NVP > 0 335 int vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset(),vpselect(); 336 #else 337 #define vpopen nodev 338 #define vpclose nodev 339 #define vpwrite nodev 340 #define vpioctl nodev 341 #define vpreset nulldev 342 #define vpselect nodev 343 #endif 344 345 #include "pty.h" 346 #if NPTY > 0 347 int ptsopen(),ptsclose(),ptsread(),ptswrite(),ptsstop(); 348 int ptcopen(),ptcclose(),ptcread(),ptcwrite(),ptcselect(); 349 int ptyioctl(); 350 struct tty pt_tty[]; 351 #else 352 #define ptsopen nodev 353 #define ptsclose nodev 354 #define ptsread nodev 355 #define ptswrite nodev 356 #define ptcopen nodev 357 #define ptcclose nodev 358 #define ptcread nodev 359 #define ptcwrite nodev 360 #define ptyioctl nodev 361 #define pt_tty 0 362 #define ptcselect nodev 363 #define ptsstop nulldev 364 #endif 365 366 #include "lpa.h" 367 #if NLPA > 0 368 int lpaopen(),lpaclose(),lparead(),lpawrite(),lpaioctl(); 369 #else 370 #define lpaopen nodev 371 #define lpaclose nodev 372 #define lparead nodev 373 #define lpawrite nodev 374 #define lpaioctl nodev 375 #endif 376 377 #include "dn.h" 378 #if NDN > 0 379 int dnopen(),dnclose(),dnwrite(); 380 #else 381 #define dnopen nodev 382 #define dnclose nodev 383 #define dnwrite nodev 384 #endif 385 386 #include "gpib.h" 387 #if NGPIB > 0 388 int gpibopen(),gpibclose(),gpibread(),gpibwrite(),gpibioctl(); 389 #else 390 #define gpibopen nodev 391 #define gpibclose nodev 392 #define gpibread nodev 393 #define gpibwrite nodev 394 #define gpibioctl nodev 395 #endif 396 397 #include "ik.h" 398 #if NIK > 0 399 int ikopen(),ikclose(),ikread(),ikwrite(),ikioctl(),ikreset(); 400 #else 401 #define ikopen nodev 402 #define ikclose nodev 403 #define ikread nodev 404 #define ikwrite nodev 405 #define ikioctl nodev 406 #define ikreset nodev 407 #endif 408 409 #include "ps.h" 410 #if NPS > 0 411 int psopen(),psclose(),psread(),pswrite(),psioctl(),psreset(); 412 #else 413 #define psopen nodev 414 #define psclose nodev 415 #define psread nodev 416 #define pswrite nodev 417 #define psopen nodev 418 #define psioctl nodev 419 #define psreset nodev 420 #endif 421 422 #include "ib.h" 423 #if NIB > 0 424 int ibopen(),ibclose(),ibread(),ibwrite(),ibioctl(); 425 #else 426 #define ibopen nodev 427 #define ibclose nodev 428 #define ibread nodev 429 #define ibwrite nodev 430 #define ibioctl nodev 431 #endif 432 433 #include "ad.h" 434 #if NAD > 0 435 int adopen(),adclose(),adioctl(),adreset(); 436 #else 437 #define adopen nodev 438 #define adclose nodev 439 #define adioctl nodev 440 #define adreset nodev 441 #endif 442 443 int ttselect(), seltrue(); 444 445 struct cdevsw cdevsw[] = 446 { 447 cnopen, cnclose, cnread, cnwrite, /*0*/ 448 cnioctl, nulldev, nulldev, &cons, 449 ttselect, nodev, 450 dzopen, dzclose, dzread, dzwrite, /*1*/ 451 dzioctl, dzstop, dzreset, dz_tty, 452 ttselect, nodev, 453 syopen, nulldev, syread, sywrite, /*2*/ 454 syioctl, nulldev, nulldev, 0, 455 syselect, nodev, 456 nulldev, nulldev, mmread, mmwrite, /*3*/ 457 nodev, nulldev, nulldev, 0, 458 mmselect, nodev, 459 hpopen, nulldev, hpread, hpwrite, /*4*/ 460 hpioctl, nodev, nulldev, 0, 461 seltrue, nodev, 462 htopen, htclose, htread, htwrite, /*5*/ 463 htioctl, nodev, nulldev, 0, 464 seltrue, nodev, 465 vpopen, vpclose, nodev, vpwrite, /*6*/ 466 vpioctl, nulldev, vpreset, 0, 467 vpselect, nodev, 468 nulldev, nulldev, swread, swwrite, /*7*/ 469 nodev, nodev, nulldev, 0, 470 nodev, nodev, 471 #if VAX780 472 flopen, flclose, flread, flwrite, /*8*/ 473 nodev, nodev, nulldev, 0, 474 seltrue, nodev, 475 #else 476 nodev, nodev, nodev, nodev, /*8*/ 477 nodev, nodev, nodev, 0, 478 nodev, nodev, 479 #endif 480 udopen, nulldev, udread, udwrite, /*9*/ 481 nodev, nodev, udreset, 0, 482 seltrue, nodev, 483 vaopen, vaclose, nodev, vawrite, /*10*/ 484 vaioctl, nulldev, vareset, 0, 485 vaselect, nodev, 486 rkopen, nulldev, rkread, rkwrite, /*11*/ 487 nodev, nodev, rkreset, 0, 488 seltrue, nodev, 489 dhopen, dhclose, dhread, dhwrite, /*12*/ 490 dhioctl, dhstop, dhreset, dh11, 491 ttselect, nodev, 492 upopen, nulldev, upread, upwrite, /*13*/ 493 nodev, nodev, upreset, 0, 494 seltrue, nodev, 495 tmopen, tmclose, tmread, tmwrite, /*14*/ 496 tmioctl, nodev, tmreset, 0, 497 seltrue, nodev, 498 lpopen, lpclose, nodev, lpwrite, /*15*/ 499 nodev, nodev, lpreset, 0, 500 seltrue, nodev, 501 tsopen, tsclose, tsread, tswrite, /*16*/ 502 tsioctl, nodev, tsreset, 0, 503 seltrue, nodev, 504 utopen, utclose, utread, utwrite, /*17*/ 505 utioctl, nodev, utreset, 0, 506 seltrue, nodev, 507 ctopen, ctclose, nodev, ctwrite, /*18*/ 508 nodev, nodev, nulldev, 0, 509 seltrue, nodev, 510 mtopen, mtclose, mtread, mtwrite, /*19*/ 511 mtioctl, nodev, nodev, 0, 512 seltrue, nodev, 513 ptsopen, ptsclose, ptsread, ptswrite, /*20*/ 514 ptyioctl, ptsstop, nodev, pt_tty, 515 ttselect, nodev, 516 ptcopen, ptcclose, ptcread, ptcwrite, /*21*/ 517 ptyioctl, nulldev, nodev, pt_tty, 518 ptcselect, nodev, 519 dmfopen, dmfclose, dmfread, dmfwrite, /*22*/ 520 dmfioctl, dmfstop, dmfreset, dmf_tty, 521 ttselect, nodev, 522 idcopen, nulldev, idcread, idcwrite, /*23*/ 523 nodev, nodev, idcreset, 0, 524 seltrue, nodev, 525 dnopen, dnclose, nodev, dnwrite, /*24*/ 526 nodev, nodev, nodev, 0, 527 seltrue, nodev, 528 /* 25-29 reserved to local sites */ 529 gpibopen, gpibclose, gpibread, gpibwrite, /*25*/ 530 gpibioctl, nulldev, nodev, 0, 531 seltrue, nodev, 532 lpaopen, lpaclose, lparead, lpawrite, /*26*/ 533 lpaioctl, nodev, nulldev, 0, 534 seltrue, nodev, 535 psopen, psclose, psread, pswrite, /*27*/ 536 psioctl, nodev, psreset, 0, 537 seltrue, nodev, 538 ibopen, ibclose, ibread, ibwrite, /*28*/ 539 ibioctl, nodev, nodev, 0, 540 seltrue, nodev, 541 adopen, adclose, nodev, nodev, /*29*/ 542 adioctl, nodev, adreset, 0, 543 seltrue, nodev, 544 rxopen, rxclose, rxread, rxwrite, /*30*/ 545 rxioctl, nodev, rxreset, 0, 546 seltrue, nodev, 547 ikopen, ikclose, ikread, ikwrite, /*31*/ 548 ikioctl, nodev, ikreset, 0, 549 seltrue, nodev, 550 rlopen, rlclose, rlread, rlwrite, /* 32 */ 551 rlioctl, nodev, rlreset, 0, 552 seltrue, nodev, 553 }; 554 int nchrdev = sizeof (cdevsw) / sizeof (cdevsw[0]); 555 556 int mem_no = 3; /* major device number of memory special file */ 557 558 /* 559 * Swapdev is a fake device implemented 560 * in sw.c used only internally to get to swstrategy. 561 * It cannot be provided to the users, because the 562 * swstrategy routine munches the b_dev and b_blkno entries 563 * before calling the appropriate driver. This would horribly 564 * confuse, e.g. the hashing routines. Instead, /dev/drum is 565 * provided as a character (raw) device. 566 */ 567 dev_t swapdev = makedev(4, 0); 568