1 /* conf.c 4.37 81/07/05 */ 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(),hpintr(),hpdump(); 23 #else 24 #define hpstrategy nodev 25 #define hpread nodev 26 #define hpwrite nodev 27 #define hpintr nodev 28 #define hpdump 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 "up.h" 87 #if NSC > 0 88 int upstrategy(),upread(),upwrite(),upreset(),updump(); 89 #else 90 #define upstrategy nodev 91 #define upread nodev 92 #define upwrite nodev 93 #define upreset nulldev 94 #define updump nodev 95 #endif 96 97 int swstrategy(),swread(),swwrite(); 98 99 struct bdevsw bdevsw[] = 100 { 101 nulldev, nulldev, hpstrategy, hpdump, 0, /*0*/ 102 htopen, htclose, htstrategy, htdump, B_TAPE, /*1*/ 103 nulldev, nulldev, upstrategy, updump, 0, /*2*/ 104 nulldev, nulldev, rkstrategy, rkdump, 0, /*3*/ 105 nodev, nodev, swstrategy, nodev, 0, /*4*/ 106 tmopen, tmclose, tmstrategy, tmdump, B_TAPE, /*5*/ 107 tsopen, tsclose, tsstrategy, tsdump, B_TAPE, /*6*/ 108 0, 109 }; 110 111 int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 112 struct tty cons; 113 114 #include "acc.h" 115 #if NACC > 0 116 int accreset(); 117 #else 118 #define accreset nulldev 119 #endif 120 121 #include "ct.h" 122 #if NCT > 0 123 int ctopen(),ctclose(),ctwrite(); 124 #else 125 #define ctopen nulldev 126 #define ctclose nulldev 127 #define ctwrite nulldev 128 #endif 129 130 #include "dh.h" 131 #if NDH == 0 132 #define dhopen nodev 133 #define dhclose nodev 134 #define dhread nodev 135 #define dhwrite nodev 136 #define dhioctl nodev 137 #define dhstop nodev 138 #define dhreset nulldev 139 #define dh11 0 140 #else 141 int dhopen(),dhclose(),dhread(),dhwrite(),dhioctl(),dhstop(),dhreset(); 142 struct tty dh11[]; 143 #endif 144 145 #if VAX780 146 int flopen(),flclose(),flread(),flwrite(); 147 #endif 148 149 #include "dz.h" 150 #if NDZ == 0 151 #define dzopen nodev 152 #define dzclose nodev 153 #define dzread nodev 154 #define dzwrite nodev 155 #define dzioctl nodev 156 #define dzstop nodev 157 #define dzreset nulldev 158 #define dz_tty 0 159 #else 160 int dzopen(),dzclose(),dzread(),dzwrite(),dzioctl(),dzstop(),dzreset(); 161 struct tty dz_tty[]; 162 #endif 163 164 #include "lp.h" 165 #if NLP > 0 166 int lpopen(),lpclose(),lpwrite(),lpreset(); 167 #else 168 #define lpopen nodev 169 #define lpclose nodev 170 #define lpwrite nodev 171 #define lpreset nulldev 172 #endif 173 174 int syopen(),syread(),sywrite(),syioctl(); 175 176 int mmread(),mmwrite(); 177 178 #include "va.h" 179 #if NVA > 0 180 int vaopen(),vaclose(),vawrite(),vaioctl(),vareset(); 181 #else 182 #define vaopen nodev 183 #define vaclose nodev 184 #define vawrite nodev 185 #define vaopen nodev 186 #define vaioctl nodev 187 #define vareset nulldev 188 #endif 189 190 #include "vp.h" 191 #if NVP > 0 192 int vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset(); 193 #else 194 #define vpopen nodev 195 #define vpclose nodev 196 #define vpwrite nodev 197 #define vpioctl nodev 198 #define vpreset nulldev 199 #endif 200 201 int mxopen(),mxclose(),mxread(),mxwrite(),mxioctl(); 202 int mcread(); 203 char *mcwrite(); 204 205 #include "pty.h" 206 #if NPTY > 0 207 int ptsopen(), ptsclose(), ptsread(), ptswrite(); 208 int ptcopen(), ptcclose(), ptcread(), ptcwrite(); 209 int ptyioctl(); 210 struct tty pt_tty[]; 211 #else 212 #define ptsopen nodev 213 #define ptsclose nodev 214 #define ptsread nodev 215 #define ptswrite nodev 216 #define ptcopen nodev 217 #define ptcclose nodev 218 #define ptcread nodev 219 #define ptcwrite nodev 220 #define ptyioctl nodev 221 #define pt_tty 0 222 #endif 223 224 #ifdef CHAOS 225 int chopen(),chclose(),chread(),chwrite(),chioctl(),chreset(); 226 #else 227 #define chopen nodev 228 #define chclose nodev 229 #define chread nodev 230 #define chwrite nodev 231 #define chioctl nodev 232 #define chreset nodev 233 #endif 234 235 #include "en.h" 236 #if (NEN > 0) && !defined(CHAOS) 237 int enopen(),enclose(),enread(),enwrite(),enreset(); 238 #else 239 #define enopen nodev 240 #define enclose nodev 241 #define enread nodev 242 #define enwrite nodev 243 #define enreset nodev 244 #endif 245 246 #include "ca.h" 247 #if NCA > 0 248 int caopen(), caclose(), cawrite(), caioctl(), careset(); 249 #else 250 #define caopen nodev 251 #define caclose nodev 252 #define cawrite nodev 253 #define caioctl nodev 254 #define careset nulldev 255 #endif 256 257 struct cdevsw cdevsw[] = 258 { 259 cnopen, cnclose, cnread, cnwrite, /*0*/ 260 cnioctl, nulldev, nulldev, &cons, 261 dzopen, dzclose, dzread, dzwrite, /*1*/ 262 dzioctl, dzstop, dzreset, dz_tty, 263 syopen, nulldev, syread, sywrite, /*2*/ 264 syioctl, nulldev, nulldev, 0, 265 nulldev, nulldev, mmread, mmwrite, /*3*/ 266 nodev, nulldev, nulldev, 0, 267 nulldev, nulldev, hpread, hpwrite, /*4*/ 268 nodev, nodev, nulldev, 0, 269 htopen, htclose, htread, htwrite, /*5*/ 270 htioctl, nodev, nulldev, 0, 271 vpopen, vpclose, nodev, vpwrite, /*6*/ 272 vpioctl, nulldev, vpreset, 0, 273 nulldev, nulldev, swread, swwrite, /*7*/ 274 nodev, nodev, nulldev, 0, 275 #if VAX780 276 flopen, flclose, flread, flwrite, /*8*/ 277 nodev, nodev, nulldev, 0, 278 #else 279 nodev, nodev, nodev, nodev, /*8*/ 280 nodev, nodev, nodev, 0, 281 #endif 282 mxopen, mxclose, mxread, mxwrite, /*9*/ 283 mxioctl, nulldev, nulldev, 0, 284 vaopen, vaclose, nodev, vawrite, /*10*/ 285 vaioctl, nulldev, vareset, 0, 286 nulldev, nulldev, rkread, rkwrite, /*11*/ 287 nodev, nodev, rkreset, 0, 288 dhopen, dhclose, dhread, dhwrite, /*12*/ 289 dhioctl, dhstop, dhreset, dh11, 290 nulldev, nulldev, upread, upwrite, /*13*/ 291 nodev, nodev, upreset, 0, 292 tmopen, tmclose, tmread, tmwrite, /*14*/ 293 tmioctl, nodev, tmreset, 0, 294 lpopen, lpclose, nodev, lpwrite, /*15*/ 295 nodev, nodev, lpreset, 0, 296 tsopen, tsclose, tsread, tswrite, /*16*/ 297 tsioctl, nodev, tsreset, 0, 298 nodev, nodev, nodev, nodev, /*17*/ 299 nodev, nodev, nulldev, 0, 300 ctopen, ctclose, nodev, ctwrite, /*18*/ 301 nodev, nodev, nulldev, 0, 302 chopen, chclose, chread, chwrite, /*19*/ 303 chioctl, nodev, chreset, 0, 304 ptsopen, ptsclose, ptsread, ptswrite, /*20*/ 305 ptyioctl, nodev, nodev, pt_tty, 306 ptcopen, ptcclose, ptcread, ptcwrite, /*21*/ 307 ptyioctl, nodev, nodev, pt_tty, 308 nodev, nodev, nodev, nodev, /*22*/ 309 nodev, nodev, accreset, 0, 310 enopen, enclose, enread, enwrite, /*23*/ 311 nodev, nodev, enreset, 0, 312 caopen, caclose, nodev, cawrite, /*24*/ 313 nodev, nodev, careset, 0, 314 nodev, nodev, nodev, nodev, /*25*/ 315 nodev, nodev, nodev, 0, 316 /* 25-29 reserved to local sites */ 317 0, 318 }; 319 320 int ttyopen(),ttread(),nullioctl(),ttstart(); 321 char *ttwrite(); 322 int ttyinput(),ttyrend(); 323 324 #include "bk.h" 325 #if NBK > 0 326 int bkopen(),bkclose(),bkread(),bkinput(),bkioctl(); 327 #endif 328 329 int ntyopen(),ntyclose(),ntread(); 330 char *ntwrite(); 331 int ntyinput(),ntyrend(); 332 333 #ifdef CHAOS 334 int ch_lopen(), ch_lclose(), ch_linput(), ch_lstart(); 335 #endif 336 337 struct linesw linesw[] = 338 { 339 ttyopen, nulldev, ttread, ttwrite, nullioctl, 340 ttyinput, ttyrend, nulldev, nulldev, nulldev, /* 0 */ 341 #if NBK > 0 342 bkopen, bkclose, bkread, ttwrite, bkioctl, 343 bkinput, nodev, nulldev, ttstart, nulldev, /* 1 */ 344 #else 345 nodev, nodev, nodev, (char *(*)())nodev, nodev, 346 nodev, nodev, nodev, nodev, nodev, 347 #endif 348 ntyopen, ntyclose, ntread, ntwrite, nullioctl, 349 ntyinput, ntyrend, nulldev, ttstart, nulldev, /* 2 */ 350 #ifdef CHAOS 351 ch_lopen, ch_lclose, nulldev, (char *(*)())nulldev, nullioctl, 352 ch_linput, nulldev, nulldev, ch_lstart, nulldev, /* 3 */ 353 #else 354 nodev, nodev, nodev, (char *(*)())nodev, nodev, 355 nodev, nodev, nodev, nodev, nodev, 356 #endif 357 mxopen, mxclose, mcread, mcwrite, mxioctl, 358 nulldev, nulldev, nulldev, nulldev, nulldev, /* 4 */ 359 0 360 }; 361 362 int nldisp = 4; 363 364 struct buf bfreelist[BQUEUES]; /* buffer chain headers */ 365 struct buf bswlist; /* free list of swap headers */ 366 struct buf *bclnlist; /* header for list of cleaned pages */ 367 struct acct acctbuf; 368 struct inode *acctp; 369 370 int mem_no = 3; /* major device number of memory special file */ 371 372 /* 373 * Swapdev is a fake device implemented 374 * in sw.c used only internally to get to swstrategy. 375 * It cannot be provided to the users, because the 376 * swstrategy routine munches the b_dev and b_blkno entries 377 * before calling the appropriate driver. This would horribly 378 * confuse, e.g. the hashing routines. Instead, /dev/drum is 379 * provided as a character (raw) device. 380 */ 381 dev_t swapdev = makedev(4, 0); 382 383 extern struct user u; 384