Annotation of researchv10no/sys/mkconf/writconf.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.