Annotation of researchv10no/cmd/chuck/fs.h, revision 1.1

1.1     ! root        1: #include "sys/param.h"
        !             2: #include "sys/filsys.h"
        !             3: #include "sys/ino.h"
        !             4: #include "sys/inode.h"
        !             5: #include "sys/dir.h"
        !             6: struct filsys sblk;
        !             7: long   ninode, /* first illegal inode number */
        !             8:        fblk,   /* first legal data block number */
        !             9:        lblk,   /* first illegal data block number */
        !            10:        pblk,   /* first illegal physical block number */
        !            11:        inopb;  /* dinodes per block */
        !            12: typedef struct {       /* one per file system block */
        !            13:        char type;
        !            14:        long ino;
        !            15:        int bnum;
        !            16: } bm;
        !            17: enum bm_type {Unk, Sblock, Inode, Free, Data, Ind, Ind2, Ind3,
        !            18:                First, Other, Bits, Ioerr, Boot, Bad};
        !            19: bm *bmap;
        !            20: typedef struct {       /* one per inode */
        !            21:        unsigned char type, seen;
        !            22:        unsigned short nrefs;   /* how many dirs am i found in? */
        !            23:        long last;      /* last legal block number */
        !            24:        long dotdot;    /* .. for dirs */
        !            25:        long parent;    /* a directory i'm found in */
        !            26:        int ptr;        /* where dir entries start in dmap, after qsort */
        !            27: } im;
        !            28: enum im_type {Unalloc, Dir, Lnk, Chr, Blk, Reg, Weird};
        !            29: im *imap;
        !            30: typedef struct {
        !            31:        long dino, ino; /* directory summary */
        !            32: } dm;
        !            33: dm *dmap;
        !            34: int dmaplen;   /* in case we have to realloc */
        !            35: int dmapptr;
        !            36: char flags[128];
        !            37: char *file;    /* the name of the file system */
        !            38: int fd;                /* fd for reading it */
        !            39: int    bsize;  /* block size in file system */
        !            40: int    exitcode;
        !            41: char *freeb;   /* bit map blocks for large file systems */
        !            42: int    tfree, tinode;  /* for the super block */
        !            43: char *itype(), *btype(),*prname(), *prino();
        !            44: char mbuf[4096], xbuf[];       /* to format output messages */
        !            45: char *buf;     /* where the inode blocks get read (first 2 are extra bufs) */
        !            46: int buflen;    /* how much is allocated */
        !            47: enum e_type {Elinksize = 1, Ebadaddr, Efirst, Ebadread, Efirstio, Edirio,
        !            48:                Enotdot, Edotino, Enotdotdot, Ebadino, Ebadname, Enullable,
        !            49:                Elinkcnt, Emulti, Ebadparent, Einvalid, Esuperfree,
        !            50:                Esuperino, Efreelist, Edup, Eshort, Ehole, Etriple, Eshortdir,
        !            51:                Eattach, Efakeroot, };
        !            52: typedef struct {
        !            53:        enum e_type type;
        !            54:        long a, b;
        !            55:        char done;
        !            56: } er;
        !            57: er *erlist;
        !            58: int erptr, erlen;
        !            59: int errcnts[32];       /* at least all the e_types! */
        !            60: int blkcnts[32];
        !            61: int *iarg, *barg;      /* argument I and B */
        !            62: int ilen, iptr, blen, bptr;

unix.superglobalmegacorp.com

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