Annotation of researchv10dc/lsys/sys/cmap.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * core map entry
        !             3:  *
        !             4:  * the 20-bit fields imply a maximum of 1GB with 1K pages
        !             5:  * which is scant compensation for the enormous space this
        !             6:  * damned structure takes.
        !             7:  */
        !             8: struct cmap
        !             9: {
        !            10: unsigned int   c_next:20,      /* index of next free list entry */
        !            11:                c_lock:1,       /* locked for raw i/o or pagein */
        !            12:                c_want:1,       /* wanted */
        !            13:                c_intrans:1,    /* intransit bit */
        !            14:                c_free:1,       /* on the free list */
        !            15:                c_gone:1,       /* associated page has been released */
        !            16: 
        !            17:                c_prev:20,      /* index of previous */
        !            18:                c_type:2,       /* type CSYS or CTEXT or CSTACK or CDATA */
        !            19: 
        !            20:                c_page:20,      /* virtual page number in segment */
        !            21:                c_ndx:10,       /* index of owner proc or text */
        !            22: 
        !            23:                c_hlink:20,     /* hash link for <blkno,mdev> */
        !            24: 
        !            25:                c_blkno:20,     /* disk block this is a copy of */
        !            26:                c_mdev:6;       /* which mounted dev this is from (NMOUNT) */
        !            27: };
        !            28: 
        !            29: #define        CMHEAD  0
        !            30: 
        !            31: #ifdef KERNEL
        !            32: struct cmap *cmap;
        !            33: struct cmap *ecmap;
        !            34: int    ncmap;
        !            35: struct cmap *mfind();
        !            36: int    firstfree, maxfree;
        !            37: int    ecmx;                   /* cmap index of ecmap */
        !            38: #endif
        !            39: 
        !            40: /* bits defined in c_type */
        !            41: 
        !            42: #define        CSYS            0               /* none of below */
        !            43: #define        CTEXT           1               /* belongs to shared text segment */
        !            44: #define        CDATA           2               /* belongs to data segment */
        !            45: #define        CSTACK          3               /* belongs to stack segment */
        !            46: 
        !            47: #define        pgtocm(x)       ((((x)-firstfree) / CLSIZE) + 1)
        !            48: #define        cmtopg(x)       ((((x)-1) * CLSIZE) + firstfree)
        !            49: 
        !            50: /*
        !            51:  * magic for c_mdev
        !            52:  */
        !            53: #define        MSWAPX  63      /* the swap device */

unix.superglobalmegacorp.com

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