|
|
1.1 ! root 1: /* ! 2: * write config tables and addresses ! 3: */ ! 4: ! 5: #include <libc.h> ! 6: #include "mkconf.h" ! 7: ! 8: writconf(f) ! 9: char *f; ! 10: { ! 11: int fd; ! 12: register Dev *dp; ! 13: register int i; ! 14: register int max; ! 15: register Include *ip; ! 16: Dev *putaddr(); ! 17: ! 18: if ((fd = creat(f, 0666)) < 0) { ! 19: perror(f); ! 20: exit(1); ! 21: } ! 22: fprint(fd, "/*\n * config data\n */\n\n"); ! 23: fprint(fd, "#include \"sys/param.h\"\n"); ! 24: fprint(fd, "#include \"sys/conf.h\"\n"); ! 25: for (ip = inclist; ip; ip = ip->next) ! 26: if (ip->inuse) { ! 27: fprint(fd, "#include \"%s\"\n", ip->incl); ! 28: while (ip->next && ip->next->incl == ip->incl) ! 29: ip = ip->next; ! 30: } ! 31: /* ! 32: * device switches ! 33: */ ! 34: max = 0; ! 35: for (i = 0; i <= nblk; i++) ! 36: if (bdevsw[i].used) { ! 37: fprint(fd, "extern struct bdevsw %sbdev;\n", bdevsw[i].dev->tag); ! 38: max = i; ! 39: } ! 40: fprint(fd, "int nblkdev = %d;\n", max + 1); ! 41: nblk = max; ! 42: max = 0; ! 43: for (i = 0; i <= nchr; i++) ! 44: if (cdevsw[i].used) { ! 45: fprint(fd, "extern struct cdevsw %scdev;\n", cdevsw[i].dev->tag); ! 46: max = i; ! 47: } ! 48: fprint(fd, "int nchrdev = %d;\n", max + 1); ! 49: nchr = max; ! 50: max = 0; ! 51: for (i = 0; i <= nfs; i++) ! 52: if (fstypsw[i].used) { ! 53: fprint(fd, "extern struct fstypsw %sfs;\n", fstypsw[i].dev->tag); ! 54: max = i; ! 55: } ! 56: fprint(fd, "int nfstyp = %d;\n", max + 1); ! 57: nfs = max; ! 58: max = 0; ! 59: for (i = 0; i <= nld; i++) ! 60: if (ldispsw[i].used) { ! 61: fprint(fd, "extern struct streamtab %sstream;\n", ldispsw[i].dev->tag); ! 62: max = i; ! 63: } ! 64: fprint(fd, "int nstreamtab = %d;\n", max + 1); ! 65: nld = max; ! 66: fprint(fd, "\nstruct bdevsw *bdevsw[] = {\n"); ! 67: for (i = 0; i <= nblk; i++) ! 68: if (bdevsw[i].used) ! 69: fprint(fd, "\t&%sbdev,\t/* %d */\n", bdevsw[i].dev->tag, i); ! 70: else ! 71: fprint(fd, "\tNULL,\n"); ! 72: fprint(fd, "};\nstruct cdevsw *cdevsw[] = {\n"); ! 73: for (i = 0; i <= nchr; i++) ! 74: if (cdevsw[i].used) ! 75: fprint(fd, "\t&%scdev,\t/* %d */\n", cdevsw[i].dev->tag, i); ! 76: else ! 77: fprint(fd, "\tNULL,\n"); ! 78: fprint(fd, "};\nstruct fstypsw *fstypsw[] = {\n"); ! 79: for (i = 0; i <= nfs; i++) ! 80: if (fstypsw[i].used) ! 81: fprint(fd, "\t&%sfs,\t/* %d */\n", fstypsw[i].dev->tag, i); ! 82: else ! 83: fprint(fd, "\tNULL,\n"); ! 84: fprint(fd, "};\nstruct streamtab *streamtab[] = {\n"); ! 85: for (i = 0; i <= nld; i++) ! 86: if (ldispsw[i].used) ! 87: fprint(fd, "\t&%sstream,\t/* %d */\n", ldispsw[i].dev->tag, i); ! 88: else ! 89: fprint(fd, "\tNULL,\n"); ! 90: fprint(fd, "};\n"); ! 91: /* ! 92: * put out addresses and data structures ! 93: */ ! 94: for (dp = dlist; dp; dp = advtype(dp)) ! 95: (*acode[dp->mdev->atype].putaddr)(fd, dp); ! 96: /* ! 97: * other stuff ! 98: */ ! 99: fprint(fd, "int rootfstyp = %d;\n", rootfs); ! 100: fprint(fd, "dev_t rootdev = makedev(%d, %d);\n", rootmaj, rootmin); ! 101: fprint(fd, "dev_t swapdev = makedev(%d, %d);\n", swapmaj, swapmin); ! 102: fprint(fd, "struct swdevt swdevt[] = {\n"); ! 103: for (i = 0; i < nswapdev; i++) ! 104: fprint(fd, "\t{makedev(%d, %d), %ldL},\n", ! 105: swaptab[i].major, swaptab[i].minor, swaptab[i].size); ! 106: fprint(fd, "};\nint nswdevt = %d;\n", nswapdev); ! 107: if (dumprout == NULL) ! 108: dumprout = "nulldev"; ! 109: fprint(fd, "extern int %s();\nint (*dumprout)() = %s;\n", dumprout, dumprout); ! 110: fprint(fd, "int dumpunit = %d;\nlong dumplow = %ld;\nlong dumpsize = %ld;\n", ! 111: dumpunit, dumplow, dumpsize); ! 112: close(fd); ! 113: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.