/* conf.c 4.32+ 82/12/05 */ #include "../h/param.h" #include "../h/systm.h" #include "../h/buf.h" #include "../h/conf.h" #include "../h/text.h" #include "../h/dir.h" #include "../h/user.h" #include "../h/proc.h" #include "../h/file.h" #include "../h/inode.h" #include "../h/acct.h" #include "../h/pte.h" #include "sparam.h" int nulldev(); int nodev(); #include "hp.h" #if NHP > 0 int hpstrategy(),hpread(),hpwrite(),hpioctl(),hpintr(),hpdump(); #else #define hpstrategy nodev #define hpread nodev #define hpwrite nodev #define hpioctl nodev #define hpintr nodev #define hpdump nodev #endif #include "tu.h" #if NHT > 0 int htopen(),htclose(),htstrategy(),htread(),htwrite(),htdump(),htioctl(); #else #define htopen nodev #define htclose nodev #define htstrategy nodev #define htread nodev #define htwrite nodev #define htdump nodev #define htioctl nodev #endif #include "mu.h" #if NMT > 0 int mtopen(),mtclose(),mtstrategy(),mtread(),mtwrite(); int mtioctl(),mtdump(); #else #define mtopen nodev #define mtclose nodev #define mtstrategy nodev #define mtread nodev #define mtwrite nodev #define mtioctl nodev #define mtdump nodev #endif #include "rk.h" #if NHK > 0 int rkstrategy(),rkread(),rkwrite(),rkintr(),rkdump(),rkreset(); #else #define rkstrategy nodev #define rkread nodev #define rkwrite nodev #define rkintr nodev #define rkdump nodev #define rkreset nodev #endif #include "te.h" #if NTE > 0 int tmopen(),tmclose(),tmstrategy(),tmread(),tmwrite(); int tmioctl(),tmdump(),tmreset(); #else #define tmopen nodev #define tmclose nodev #define tmstrategy nodev #define tmread nodev #define tmwrite nodev #define tmioctl nodev #define tmdump nodev #define tmreset nodev #endif #include "ts.h" #if NTS > 0 int tsopen(),tsclose(),tsstrategy(),tsread(),tswrite(); int tsioctl(),tsdump(),tsreset(); #else #define tsopen nodev #define tsclose nodev #define tsstrategy nodev #define tsread nodev #define tswrite nodev #define tsioctl nodev #define tsdump nodev #define tsreset nodev #endif #include "up.h" #if NSC > 0 int upstrategy(),upread(),upwrite(),upreset(),updump(); #else #define upstrategy nodev #define upread nodev #define upwrite nodev #define upreset nulldev #define updump nodev #endif #include "ra.h" #if NUDA > 0 int udstrategy(), udread(), udwrite(), udioctl(), udreset(), uddump(); #else #define udstrategy nodev #define udread nodev #define udwrite nodev #define udioctl nodev #define udreset nulldev #define uddump nodev #endif int swstrategy(),swread(),swwrite(); struct bdevsw bdevsw[] = { nulldev, nulldev, hpstrategy, hpdump, 0, /*0*/ htopen, htclose, htstrategy, htdump, B_TAPE, /*1*/ nulldev, nulldev, upstrategy, updump, 0, /*2*/ nulldev, nulldev, rkstrategy, rkdump, 0, /*3*/ nodev, nodev, swstrategy, nodev, 0, /*4*/ tmopen, tmclose, tmstrategy, tmdump, B_TAPE, /*5*/ tsopen, tsclose, tsstrategy, tsdump, B_TAPE, /*6*/ nulldev, nulldev, udstrategy, uddump, 0, /*7*/ mtopen, mtclose, mtstrategy, mtdump, B_TAPE, /*8*/ 0, }; extern struct streamtab cninfo; #if VAX780 int flopen(),flclose(),flread(),flwrite(); #endif #include "ctu.h" #if NCTU > 0 extern ctuopen(), ctuclose(), cturead(), ctuwrite(); #else #define ctuopen nodev #define ctuclose nodev #define cturead nodev #define ctuwrite nodev cturint() {printf("cons mass storage stray\n");} ctuxint() {printf("cons mass storage stray\n");} #endif #include "dk.h" #if NDK > 0 extern struct streamtab dkinfo; int dkreset(); #else #define dkinfo NULL #define dkreset nulldev #endif #include "dz.h" #if NDZ > 0 extern struct streamtab dzinfo; #else #define dzinfo NULL #endif #include "inet.h" #if NINET > 0 extern struct streamtab ipdinfo; extern struct streamtab tcpdinfo; #else #define ipdinfo *(struct streamtab *)NULL #define tcpdinfo *(struct streamtab *)NULL #endif #include "il.h" #if NIL > 0 extern struct streamtab ilsinfo; #else #define ilsinfo *(struct streamtab *)NULL #endif #include "lp.h" #if NLP > 0 int lpopen(),lpclose(),lpwrite(),lpreset(); #else #define lpopen nodev #define lpclose nodev #define lpwrite nodev #define lpreset nulldev #endif int mmread(),mmwrite(); #include "va.h" #if NVA > 0 int vaopen(),vaclose(),vawrite(),vaioctl(),vareset(); #else #define vaopen nodev #define vaclose nodev #define vawrite nodev #define vaopen nodev #define vaioctl nodev #define vareset nulldev #endif #include "vp.h" #if NVP > 0 int vpopen(),vpclose(),vpwrite(),vpioctl(),vpreset(); #else #define vpopen nodev #define vpclose nodev #define vpwrite nodev #define vpioctl nodev #define vpreset nulldev #endif #include "sp.h" #if NSP>0 struct streamtab spinfo; #else #define spinfo NULL #endif #include "dn.h" #if NDN > 0 int dnopen(), dnclose(), dnwrite(); #else #define dnopen nodev #define dnclose nodev #define dnwrite nodev #endif #include "tri.h" #if NTRI > 0 int triopen(), triclose(), triwrite(); #else #define triopen nodev #define triclose nodev #define triwrite nodev #endif #include "rtk.h" #if NRTK > 0 int rtkopen(), rtkclose(), rtkread(), rtkwrite(), rtkioctl(); #else #define rtkopen nodev #define rtkclose nodev #define rtkread nodev #define rtkwrite nodev #define rtkioctl nodev #endif #include "ekx.h" #if NEKX > 0 int ekxopen(), ekxclose(), ekxread(), ekxwrite(), ekxioctl(); #else #define ekxopen nodev #define ekxclose nodev #define ekxread nodev #define ekxwrite nodev #define ekxioctl nodev #endif #include "scn.h" #if NSCN > 0 int scnopen(), scnclose(), scnread(), scnwrite(), scnioctl(); #else #define scnopen nodev #define scnclose nodev #define scnread nodev #define scnwrite nodev #define scnioctl nodev #endif #include "cv.h" #if NCV > 0 int cvopen(), cvclose(), cvread(), cvwrite(), cvioctl(), cvreset(); #else #define cvopen nodev #define cvclose nodev #define cvread nodev #define cvwrite nodev #define cvioctl nodev #define cvreset nodev #endif #include "iti.h" #if NITI > 0 int itiopen(), iticlose() , itiioctl(); #else #define itiopen nodev #define iticlose nodev #define itiioctl nodev #endif #include "sn.h" #if NSN > 0 int snopen(), snclose(), snioctl(), snreset(); #else #define snopen nodev #define snclose nodev #define snread nodev #define snwrite nodev #define snioctl nodev #define snreset nodev #endif #include "an.h" #if NAP > 0 int anopen(), anclose(), anread(), anwrite(), anreset(), anioctl(); #else #define anopen nodev #define anclose nodev #define anread nodev #define anwrite nodev #define anreset nodev #define anioctl nodev #endif #include "kmc.h" #if NKMC > 0 int kmcopen(), kmcclose(), kmcread(), kmcwrite(), kmcioctl(); #else #define kmcopen nodev #define kmcclose nodev #define kmcread nodev #define kmcwrite nodev #define kmcioctl nodev #endif #include "ec.h" #if NEC > 0 extern struct streamtab ecsinfo; #else #define ecsinfo *(struct streamtab *)NULL #endif #include "kdi.h" #if NKDI == 0 #define kdi NULL #define kdishutdown nodev #else extern struct streamtab kdiinfo; int kdishutdown(); #define kdi &kdiinfo #endif #include "lex.h" #if NLEX == 0 #define lexopen nodev #define lexclose nodev #define lexread nodev #define lexwrite nodev #define lexioctl nodev #else int lexopen(), lexclose(), lexread(), lexwrite(), lexioctl(); #endif #include "bpd.h" #if NBPD == 0 #define bpdopen nodev #define bpdclose nodev #define bpdread nodev #define bpdioctl nodev #else int bpdopen(), bpdclose(), bpdread(), bpdioctl(); #endif /* merganthaler 202 */ #include "mg.h" #if NMG>0 extern struct streamtab mginfo; #define mg &mginfo #else #define mg NULL #endif #include "ju.h" #if NJU == 0 #define juopen nodev #define juclose nodev #define juread nodev #define juwrite nodev #define juioctl nodev #else int juopen(), juclose(), juread(), juwrite(), juioctl(); #endif #include "om.h" #if NOM > 0 int omopen(),omclose(),omread(),omwrite(),omioctl(); #else #define omopen nodev #define omclose nodev #define omread nodev #define omwrite nodev #define omioctl nodev #endif #include "chaos.h" #if NCHAOS > 0 #define CHDEV_OFFSET 32 long cdevpath = 1L << (34 - CHDEV_OFFSET); int chropen(),chrclose(),chrread(),chrwrite(),chrioctl(),chreset(); #else NCHAOS == 0 #define chropen nodev #define chrclose nodev #define chrread nodev #define chrwrite nodev #define chrioctl nodev #define chreset nodev #endif NCHAOS #include "cht.h" #if NCHT > 0 #if NCHAOS == 0 ***this won't work**** you must have CHAOS to have CHT #endif NCHAOS int chtopen(),chtclose(),chtread(),chtwrite(),chtioctl(); struct tty cht_tty[]; #else NCHT == 0 #define chtopen nodev #define chtclose nodev #define chtread nodev #define chtwrite nodev #define chtioctl nodev #define cht_tty 0 #endif NCHT #include "chil.h" #define chilopen nodev #define chilclose nodev #define chilread nodev #define chilwrite nodev #define chilioctl nodev #define chilreset nulldev #include "ds.h" #if NDS > 0 int dsopen(),dsclose(),dsread(),dswrite(),dsioctl(); #else #define dsopen nodev #define dsclose nodev #define dsread nodev #define dswrite nodev #define dsioctl nodev #endif #include "ch.h" #if NCH > 0 extern struct streamtab chdinfo; #else #define chdinfo *(struct streamtab *)NULL #endif struct cdevsw cdevsw[] = { /*cn*/ nodev, nodev, nodev, nodev, /*0*/ nodev, nulldev, &cninfo, /*dz*/ nodev, nodev, nodev, nodev, /*1*/ nodev, nulldev, &dzinfo, /*ctu*/ ctuopen, ctuclose, cturead, ctuwrite, /*2*/ nodev, nodev, NULL, /*mem*/ nulldev, nulldev, mmread, mmwrite, /*3*/ nodev, nulldev, NULL, /*hp*/ nulldev, nulldev, hpread, hpwrite, /*4*/ hpioctl, nulldev, NULL, /*ht*/ htopen, htclose, htread, htwrite, /*5*/ htioctl, nulldev, NULL, /*vp*/ vpopen, vpclose, nodev, vpwrite, /*6*/ vpioctl, vpreset, NULL, /*sw*/ nulldev, nulldev, swread, swwrite, /*7*/ nodev, nulldev, NULL, #if VAX780 /*fl*/ flopen, flclose, flread, flwrite, /*8*/ nodev, nulldev, NULL, #else /*fl*/ nodev, nodev, nodev, nodev, /*8*/ nodev, nodev, NULL, #endif /*xx*/ nodev, nodev, nodev, nodev, /*9mx*/ nodev, nulldev, NULL, /*va*/ vaopen, vaclose, nodev, vawrite, /*10*/ vaioctl, vareset, NULL, /*rk*/ nulldev, nulldev, rkread, rkwrite, /*11*/ nodev, rkreset, NULL, /*xx*/ nodev, nodev, nodev, nodev, /*12dh*/ nodev, nodev, NULL, /*up*/ nulldev, nulldev, upread, upwrite, /*13*/ nodev, upreset, NULL, /*tm*/ tmopen, tmclose, tmread, tmwrite, /*14*/ tmioctl, tmreset, NULL, /*lp*/ lpopen, lpclose, nodev, lpwrite, /*15*/ nodev, lpreset, NULL, /*ts*/ tsopen, tsclose, tsread, tswrite, /*16*/ tsioctl, tsreset, NULL, /*dk*/ nodev, nodev, nodev, nodev, /*17*/ #if NDK > 0 nodev, nulldev, &dkinfo, #else nodev, dkreset, NULL, #endif /*sp*/ nodev, nodev, nodev, nodev, /*18*/ nodev, nulldev, &spinfo, /*dn*/ dnopen, dnclose, nodev, dnwrite, /*19*/ nodev, nulldev, NULL, /*ptm*/ nodev, nodev, nodev, nodev, /*20pt*/ nodev, nulldev, NULL, /*pts*/ nodev, nodev, nodev, nodev, /*21pt*/ nodev, nulldev, NULL, /*mt*/ mtopen, mtclose, mtread, mtwrite, /*22*/ mtioctl, nulldev, NULL, /*tri*/ triopen, triclose, nodev, triwrite, /*23*/ nodev, nulldev, NULL, /*xx*/ nodev, nodev, nodev, nodev, /*24*/ nodev, nulldev, NULL, /* 25-29 reserved to local sites */ /*rtk*/ rtkopen, rtkclose, rtkread, rtkwrite, /*25*/ rtkioctl, nulldev, NULL, /*kmc*/ kmcopen, kmcclose, kmcread, kmcwrite, /*26*/ kmcioctl, nulldev, NULL, /*ec*/ nodev, nodev, nodev, nodev, /*27*/ nodev, nulldev, &ecsinfo, /*uda*/ nulldev, nulldev, udread, udwrite, /*28*/ udioctl, nulldev, NULL, /*ekx*/ ekxopen, ekxclose, ekxread, ekxwrite, /*29*/ ekxioctl, nulldev, NULL, /*cv*/ cvopen, cvclose, cvread, cvwrite, /*30*/ cvioctl, cvreset, NULL, /*kdi*/ nodev, nodev, nodev, nodev, /*31*/ nodev, kdishutdown, kdi, /*mg*/ nodev, nodev, nodev, nodev, /*32*/ nodev, nulldev, mg, /*ju*/ juopen, juclose, juread, juwrite, /*33*/ juioctl, nulldev, NULL, /*chr*/ chropen, chrclose, chrread, chrwrite, /*34*/ chrioctl, chreset, NULL, /*cht*/ chtopen, chtclose, chtread, chtwrite, /*35*/ chtioctl, nulldev, cht_tty, /*chil*/chilopen, chilclose, chilread, chilwrite, /*36*/ chilioctl, chilreset, NULL, /*lex*/ lexopen, lexclose, lexread, lexwrite, /*37*/ lexioctl, nulldev, NULL, /*bpd*/ bpdopen, bpdclose, bpdread, nulldev, /*38*/ bpdioctl, nulldev, NULL, /*om*/ omopen, omclose, omread, omwrite, /*39*/ omioctl, nulldev, NULL, /*std*/ nodev, nodev, nodev, nodev, /*40*/ nodev, nulldev, NULL, /*ds*/ dsopen, dsclose, dsread, dswrite, /*41*/ dsioctl, nulldev, NULL, /*ip*/ nodev, nodev, nodev, nodev, /*42*/ nodev, nulldev, &ipdinfo, /*tcp*/ nodev, nodev, nodev, nodev, /*43*/ nodev, nulldev, &tcpdinfo, /*il*/ nodev, nodev, nodev, nodev, /*44*/ nodev, nulldev, &ilsinfo, /*scn*/ scnopen, scnclose, scnread, scnwrite, /*45*/ scnioctl, nulldev, NULL, /*sn*/ snopen, snclose, nodev, nodev, /*46*/ snioctl, nulldev, NULL, /*an*/ anopen, anclose, anread, anwrite, /*47*/ anioctl, nulldev, NULL, /*ch*/ nodev, nodev, nodev, nodev, /*48*/ nodev, nodev, &chdinfo, /*iti*/ itiopen, iticlose, nodev, nodev, /*49*/ itiioctl, nulldev, NULL, /*udp*/ nodev, nodev, nodev, nodev, /*50*/ nodev, nulldev, &udpdinfo, 0 }; int nchrdev = sizeof(cdevsw)/sizeof(struct cdevsw) - 1; extern int rnami(), smount(); extern int naput(), nafree(), naupdat(), naread(), nawrite(), natrunc(); extern int nastat(), nanami(), namount(); extern struct inode *naget(); extern int prput(), prfree(), prupdat(), prread(), prwrite(), prtrunc(); extern int prstat(), prnami(), prmount(), prioctl(); extern struct inode *prget(); extern int mpput(), mpfree(), mpupdat(), mpread(), mpwrite(); extern int mptrunc(), mpstat(), mpnami(), mpioctl(); extern struct inode *mpget(); struct fstypsw fstypsw[] = { { 0, 0, 0, 0, 0, 0, 0, 0, rnami, smount, 0}, { naput, naget, nafree, naupdat, naread, nawrite, natrunc, nastat, nanami, namount, 0}, { prput, prget, prfree, prupdat, prread, prwrite, prtrunc, prstat, prnami, prmount, prioctl}, { mpput, mpget, mpfree, mpupdat, mpread, mpwrite, mptrunc, mpstat, mpnami, mpmount, mpioctl} }; int nfstyp = 4; int tty_no = 2; /* major device number of /dev/tty special file */ int mem_no = 3; /* major device number of memory special file */ int stdio_no = 40; /* major device number of stdio special file */ extern struct streamtab ttyinfo; extern struct streamtab rdkinfo; extern struct streamtab pkinfo; extern struct streamtab msginfo; extern struct streamtab dkpinfo; extern struct streamtab cdkpinfo; extern struct streamtab nttyinfo; extern struct streamtab trcinfo; extern struct streamtab bufinfo; extern struct streamtab rmsginfo; extern struct streamtab ipinfo; extern struct streamtab tcpinfo; extern struct streamtab chrouteinfo; extern struct streamtab arpinfo; extern struct streamtab udpinfo; extern struct streamtab chinfo; extern struct streamtab filtinfo; extern struct streamtab dumpinfo; #include "pk.h" #include "dkp.h" #include "cm.h" #include "ntty.h" #include "trc.h" #include "bf.h" #include "inet.h" #include "chroute.h" #include "arp.h" #include "udp.h" #include "ch.h" #include "filter.h" #include "dumpld.h" struct streamtab *streamtab[] = { &ttyinfo, /* 0 */ #if NDKP > 0 &cdkpinfo, /* 1 */ #else NULL, #endif #if NCM > 0 &rdkinfo, /* 2 */ #else NULL, #endif #if NPK > 0 &pkinfo, /* 3 */ #else NULL, #endif &msginfo, /* 4 */ #if NDKP > 0 &dkpinfo, /* 5 */ #else NULL, #endif #if NNTTY > 0 &nttyinfo, /* 6 */ #else NULL, #endif #if NBF > 0 &bufinfo, /* 7 */ #else NULL, #endif #if NTRC > 0 &trcinfo, /* 8 */ #else NULL, #endif &rmsginfo, /* 9 */ #if NINET > 0 &ipinfo, /* 10 */ &tcpinfo, /* 11 */ #else NULL, NULL, #endif #if NCHROUTE > 0 &chrouteinfo, /* 12 */ #else NULL, #endif #if NARP > 0 &arpinfo, /* 13 */ #else NULL, #endif #if NUDP > 0 &udpinfo, /* 14 */ #else NULL, #endif #if NCH > 0 &chinfo, /* 15 */ #else NULL, #endif #if NFILTER > 0 &filtinfo, /* 16 */ #else NULL, #endif #if NDUMPLD > 0 &dumpinfo, /* 17 */ #else NULL, #endif }; int nstream = sizeof(streamtab)/sizeof(struct streamtab *); struct buf bfreelist[BQUEUES]; /* buffer chain headers */ struct buf bswlist; /* free list of swap headers */ struct buf *bclnlist; /* header for list of cleaned pages */ struct acct acctbuf; struct inode *acctp; /* * Swapdev is a fake device implemented * in sw.c used only internally to get to swstrategy. * It cannot be provided to the users, because the * swstrategy routine munches the b_dev and b_blkno entries * before calling the appropriate driver. This would horribly * confuse, e.g. the hashing routines. Instead, /dev/drum is * provided as a character (raw) device. */ dev_t swapdev = makedev(4, 0); extern struct user u; /* * Fetchable stream parameters */ int Nqueue = NQUEUE; int Nstream = NSTREAM; int Nblk64 = NBLK64; int Nblk16 = NBLK16; int Nblk4 = NBLK4; #ifndef NBLKBIG #define NBLKBIG 0 #endif int Nblkbig = NBLKBIG; int Nblock = (NBLKBIG+NBLK64+NBLK16+NBLK4);