1 /* conf.c 3.12 07/29/80 */ 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 #include "../h/mba.h" 17 18 int nulldev(); 19 int nodev(); 20 21 int hpstrategy(),hpread(),hpwrite(),hpintr(); 22 struct buf hptab; 23 24 int htopen(),htclose(),htstrategy(),htread(),htwrite(); 25 struct buf httab; 26 27 int upstrategy(),upread(),upwrite(),upreset(); 28 struct buf uptab; 29 30 int swstrategy(),swread(),swwrite(); 31 32 struct bdevsw bdevsw[] = 33 { 34 nulldev, nulldev, hpstrategy, &hptab, /*0*/ 35 htopen, htclose, htstrategy, &httab, /*1*/ 36 nulldev, nulldev, upstrategy, &uptab, /*2*/ 37 nodev, nodev, nodev, 0, /*3*/ 38 nodev, nodev, swstrategy, 0, /*4*/ 39 0, 40 }; 41 42 int cnopen(),cnclose(),cnread(),cnwrite(),cnioctl(); 43 44 int dhopen(),dhclose(),dhread(),dhwrite(),dhioctl(),dhstop(),dhreset(); 45 struct tty dh11[]; 46 47 int flopen(),flclose(),flread(),flwrite(); 48 49 int dzopen(),dzclose(),dzread(),dzwrite(),dzioctl(),dzstop(),dzreset(); 50 struct tty dz_tty[]; 51 52 int syopen(),syread(),sywrite(),syioctl(); 53 54 int mmread(),mmwrite(); 55 56 int vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset(); 57 int vaopen(),vaclose(),vawrite(),vaioctl(),vareset(); 58 59 int mxopen(),mxclose(),mxread(),mxwrite(),mxioctl(); 60 int mcread(); 61 char *mcwrite(); 62 63 struct cdevsw cdevsw[] = 64 { 65 cnopen, cnclose, cnread, cnwrite, /*0*/ 66 cnioctl, nulldev, nulldev, 0, 67 dzopen, dzclose, dzread, dzwrite, /*1*/ 68 dzioctl, dzstop, dzreset, dz_tty, 69 syopen, nulldev, syread, sywrite, /*2*/ 70 syioctl, nulldev, nulldev, 0, 71 nulldev, nulldev, mmread, mmwrite, /*3*/ 72 nodev, nulldev, nulldev, 0, 73 nulldev, nulldev, hpread, hpwrite, /*4*/ 74 nodev, nodev, nulldev, 0, 75 htopen, htclose, htread, htwrite, /*5*/ 76 nodev, nodev, nulldev, 0, 77 vpopen, vpclose, nodev, vpwrite, /*6*/ 78 vpioctl, nulldev, vpreset, 0, 79 nulldev, nulldev, swread, swwrite, /*7*/ 80 nodev, nodev, nulldev, 0, 81 flopen, flclose, flread, flwrite, /*8*/ 82 nodev, nodev, nulldev, 0, 83 mxopen, mxclose, mxread, mxwrite, /*9*/ 84 mxioctl, nulldev, nulldev, 0, 85 vaopen, vaclose, nodev, vawrite, /*10*/ 86 vaioctl, nulldev, vareset, 0, 87 nodev, nodev, nodev, nodev, /*11*/ 88 nodev, nodev, nulldev, 0, 89 dhopen, dhclose, dhread, dhwrite, /*12*/ 90 dhioctl, dhstop, dhreset, dh11, 91 nulldev, nulldev, upread, upwrite, /*13*/ 92 nodev, nodev, upreset, 0, 93 0, 94 }; 95 96 int ttyopen(),ttread(),nullioctl(),ttstart(); 97 char *ttwrite(); 98 int ttyinput(),ttyrend(); 99 int bkopen(),bkclose(),bkread(),bkinput(),bkioctl(); 100 int ntyopen(),ntyclose(),ntread(); 101 char *ntwrite(); 102 int ntyinput(),ntyrend(); 103 104 struct linesw linesw[] = 105 { 106 ttyopen, nulldev, ttread, ttwrite, nullioctl, 107 ttyinput, ttyrend, nulldev, nulldev, nulldev, /* 0 */ 108 bkopen, bkclose, bkread, ttwrite, bkioctl, 109 bkinput, nodev, nulldev, ttstart, nulldev, /* 1 */ 110 ntyopen, ntyclose, ntread, ntwrite, nullioctl, 111 ntyinput, ntyrend, nulldev, ttstart, nulldev, /* 2 */ 112 mxopen, mxclose, mcread, mcwrite, mxioctl, 113 nulldev, nulldev, nulldev, nulldev, nulldev, /* 3 */ 114 0 115 }; 116 117 int nldisp = 3; 118 119 struct buf buf[NBUF]; 120 struct file file[NFILE]; 121 struct inode inode[NINODE]; 122 struct text text[NTEXT]; 123 struct proc proc[NPROC]; 124 struct buf bfreelist; 125 struct buf bswlist; /* free list of swap headers */ 126 struct buf *bclnlist; /* header for list of cleaned pages */ 127 struct acct acctbuf; 128 struct inode *acctp; 129 130 int mem_no = 3; /* major device number of memory special file */ 131 132 /* 133 * Swapdev is a fake device implemented 134 * in sw.c used only internally to get to swstrategy. 135 * It cannot be provided to the users, because the 136 * swstrategy routine munches the b_dev and b_blkno entries 137 * before calling the appropriate driver. This would horribly 138 * confuse, e.g. the hashing routines as well as the placement 139 * of the block on the d_tab chains. Instead, /dev/drum is 140 * provided as a character (raw) device. 141 */ 142 dev_t swapdev = makedev(4, 0); 143 144 145 extern struct user u; 146 147 int mbanum[] = { /* mba number of major device */ 148 0, /* disk */ 149 1, /* tape */ 150 9999999, /* unused */ 151 9999999, /* unused */ 152 0, /* disk, raw */ 153 1, /* tape, raw */ 154 }; 155 156 extern struct pte MBA0map[], MBA1map[]; 157 158 struct mba_info mbainfo[] = { 159 MBA0, PHYSMBA0, MBA0map, 160 MBA1, PHYSMBA1, MBA1map 161 }; 162