1 /* conf.c 4.50 82/05/04 */ 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 #include "gpib.h" 288 #if NGPIB > 0 289 int gpibopen(),gpibclose(),gpibread(),gpibwrite(),gpibioctl(); 290 #else 291 #define gpibopen nodev 292 #define gpibclose nodev 293 #define gpibread nodev 294 #define gpibwrite nodev 295 #define gpibioctl nodev 296 #endif 297 298 int ttselect(), seltrue(); 299 300 struct cdevsw cdevsw[] = 301 { 302 cnopen, cnclose, cnread, cnwrite, /*0*/ 303 cnioctl, nulldev, nulldev, &cons, 304 ttselect, 305 dzopen, dzclose, dzread, dzwrite, /*1*/ 306 dzioctl, dzstop, dzreset, dz_tty, 307 ttselect, 308 syopen, nulldev, syread, sywrite, /*2*/ 309 syioctl, nulldev, nulldev, 0, 310 syselect, 311 nulldev, nulldev, mmread, mmwrite, /*3*/ 312 nodev, nulldev, nulldev, 0, 313 mmselect, 314 nulldev, nulldev, hpread, hpwrite, /*4*/ 315 hpioctl, nodev, nulldev, 0, 316 seltrue, 317 htopen, htclose, htread, htwrite, /*5*/ 318 htioctl, nodev, nulldev, 0, 319 seltrue, 320 vpopen, vpclose, nodev, vpwrite, /*6*/ 321 vpioctl, nulldev, vpreset, 0, 322 vpselect, 323 nulldev, nulldev, swread, swwrite, /*7*/ 324 nodev, nodev, nulldev, 0, 325 nodev, 326 #if VAX780 327 flopen, flclose, flread, flwrite, /*8*/ 328 nodev, nodev, nulldev, 0, 329 seltrue, 330 #else 331 nodev, nodev, nodev, nodev, /*8*/ 332 nodev, nodev, nodev, 0, 333 nodev, 334 #endif 335 nodev, nodev, nodev, nodev, /*9*/ 336 nodev, nodev, nodev, 0, 337 nodev, 338 vaopen, vaclose, nodev, vawrite, /*10*/ 339 vaioctl, nulldev, vareset, 0, 340 vaselect, 341 nulldev, nulldev, rkread, rkwrite, /*11*/ 342 nodev, nodev, rkreset, 0, 343 seltrue, 344 dhopen, dhclose, dhread, dhwrite, /*12*/ 345 dhioctl, dhstop, dhreset, dh11, 346 ttselect, 347 nulldev, nulldev, upread, upwrite, /*13*/ 348 nodev, nodev, upreset, 0, 349 seltrue, 350 tmopen, tmclose, tmread, tmwrite, /*14*/ 351 tmioctl, nodev, tmreset, 0, 352 seltrue, 353 lpopen, lpclose, nodev, lpwrite, /*15*/ 354 nodev, nodev, lpreset, 0, 355 seltrue, 356 tsopen, tsclose, tsread, tswrite, /*16*/ 357 tsioctl, nodev, tsreset, 0, 358 seltrue, 359 utopen, utclose, utread, utwrite, /*17*/ 360 utioctl, nodev, utreset, 0, 361 seltrue, 362 ctopen, ctclose, nodev, ctwrite, /*18*/ 363 nodev, nodev, nulldev, 0, 364 seltrue, 365 nodev, nodev, nodev, nodev, /*19*/ 366 nodev, nodev, nulldev, 0, 367 nodev, 368 ptsopen, ptsclose, ptsread, ptswrite, /*20*/ 369 ptyioctl, ptsstop, nodev, pt_tty, 370 ttselect, 371 ptcopen, ptcclose, ptcread, ptcwrite, /*21*/ 372 ptyioctl, nulldev, nodev, pt_tty, 373 ptcselect, 374 nodev, nodev, nodev, nodev, /*22*/ 375 nodev, nodev, nodev, 0, 376 nodev, 377 nodev, nodev, nodev, nodev, /*23*/ 378 nodev, nodev, nodev, 0, 379 nodev, 380 dnopen, dnclose, nodev, dnwrite, /*24*/ 381 nodev, nodev, nodev, 0, 382 seltrue, 383 /* 25-29 reserved to local sites */ 384 gpibopen, gpibclose, gpibread, gpibwrite, /*25*/ 385 gpibioctl, nulldev, nodev, 0, 386 seltrue, 387 0, 388 }; 389 390 int ttyopen(),ttyclose(),ttread(),nullioctl(),ttstart(); 391 char *ttwrite(); 392 int ttyinput(); 393 394 #include "bk.h" 395 #if NBK > 0 396 int bkopen(),bkclose(),bkread(),bkinput(),bkioctl(); 397 #endif 398 399 struct linesw linesw[] = 400 { 401 ttyopen, nodev, ttread, ttwrite, nullioctl, 402 ttyinput, nodev, nulldev, ttstart, nulldev, 403 #if NBK > 0 404 bkopen, bkclose, bkread, ttwrite, bkioctl, 405 bkinput, nodev, nulldev, ttstart, nulldev, 406 #else 407 nodev, nodev, nodev, (char *(*)())nodev, nodev, 408 nodev, nodev, nodev, nodev, nodev, 409 #endif 410 ttyopen, ttyclose, ttread, ttwrite, nullioctl, 411 ttyinput, nodev, nulldev, ttstart, nulldev, 412 0 413 }; 414 415 int nldisp = 3; 416 417 struct buf bfreelist[BQUEUES]; /* buffer chain headers */ 418 struct buf bswlist; /* free list of swap headers */ 419 struct buf *bclnlist; /* header for list of cleaned pages */ 420 struct acct acctbuf; 421 struct inode *acctp; 422 423 int mem_no = 3; /* major device number of memory special file */ 424 425 /* 426 * Swapdev is a fake device implemented 427 * in sw.c used only internally to get to swstrategy. 428 * It cannot be provided to the users, because the 429 * swstrategy routine munches the b_dev and b_blkno entries 430 * before calling the appropriate driver. This would horribly 431 * confuse, e.g. the hashing routines. Instead, /dev/drum is 432 * provided as a character (raw) device. 433 */ 434 dev_t swapdev = makedev(4, 0); 435 436 extern struct user u; 437