Annotation of cci/sys/tahoe/pte.h, revision 1.1

1.1     ! root        1: /*     pte.h   4.9     81/05/14        */
        !             2: /*     Tahoe "used" bit version, May 1984      */
        !             3: 
        !             4: /*
        !             5:  * Tahoe page table entry
        !             6:  *
        !             7:  * There are two major kinds of pte's: those which have ever existed (and are
        !             8:  * thus either now in core or on the swap device), and those which have
        !             9:  * never existed, but which will be filled on demand at first reference.
        !            10:  * There is a structure describing each.  There is also an ancillary
        !            11:  * structure used in page clustering.
        !            12:  */
        !            13: 
        !            14: #ifndef LOCORE
        !            15: struct pte
        !            16: {
        !            17: unsigned int   
        !            18:                pg_v:1,                 /* valid bit */
        !            19:                pg_prot:4,              /* access control */
        !            20:                pg_fod:1,               /* is fill on demand (=0) */
        !            21:                :1,                     /*swapm is not used in 4.2 */
        !            22:                pg_nc:1,                /* 'uncacheable page' bit */
        !            23:                pg_m:1,                 /* hardware maintained modified bit */
        !            24:                pg_u:1,                 /* hardware maintained 'used' bit */
        !            25:                pg_pfnum:22;            /* core page frame number or 0 */
        !            26: };
        !            27: struct hpte
        !            28: {
        !            29: unsigned int   
        !            30:                pg_high:10,             /* special for clustering */
        !            31:                pg_pfnum:22;
        !            32: };
        !            33: struct fpte
        !            34: {
        !            35: unsigned int   
        !            36:                pg_v:1,
        !            37:                pg_prot:4,
        !            38:                pg_fod:1,               /* is fill on demand (=1) */
        !            39:                :1,
        !            40:                pg_fileno:5,            /* file mapped from or TEXT or ZERO */
        !            41:                pg_blkno:20;            /* file system block number */
        !            42: };
        !            43: #endif
        !            44: 
        !            45: #define        PG_V            0x80000000
        !            46: #define        PG_PROT         0x78000000 /* all protection bits  (dorit). */
        !            47: #define        PG_FOD          0x04000000
        !            48: #define PG_N           0x01000000 /* Non-cacheable */
        !            49: #define        PG_M            0x00800000
        !            50: #define PG_U           0x00400000 
        !            51: #define        PG_PFNUM        0x003fffff
        !            52: 
        !            53: #define        PG_FZERO        (NOFILE)
        !            54: #define        PG_FTEXT        (NOFILE+1)
        !            55: #define        PG_FMAX         (PG_FTEXT)
        !            56: 
        !            57: #define        PG_NOACC        0
        !            58: #define        PG_KR           0x40000000
        !            59: #define        PG_KW           0x60000000
        !            60: #define        PG_URKR         0x50000000
        !            61: #define        PG_URKW         0x70000000
        !            62: #define        PG_UW           0x78000000
        !            63: 
        !            64: /*
        !            65:  * Pte related macros
        !            66:  */
        !            67: #define        dirty(pte)      ((pte)->pg_fod == 0 && (pte)->pg_pfnum && \
        !            68:                            ((pte)->pg_m))
        !            69: 
        !            70: #ifndef LOCORE
        !            71: #ifdef KERNEL
        !            72: struct pte *vtopte();
        !            73: 
        !            74: /* utilities defined in locore.s */
        !            75: extern struct pte Sysmap[];
        !            76: extern struct pte Usrptmap[];
        !            77: extern struct pte usrpt[];
        !            78: extern struct pte Swapmap[];
        !            79: extern struct pte Forkmap[];
        !            80: extern struct pte Xswapmap[];
        !            81: extern struct pte Xswap2map[];
        !            82: extern struct pte Pushmap[];
        !            83: extern struct pte Vfmap[];
        !            84: /*
        !            85: extern struct pte IOmap[];
        !            86: */
        !            87: extern struct pte VD0map[];
        !            88: extern struct pte VD1map[];
        !            89: extern struct pte VD2map[];
        !            90: extern struct pte VD3map[];
        !            91: extern struct pte UDmap[];
        !            92: extern struct pte CY0map[];
        !            93: extern struct pte CY1map[];
        !            94: extern struct pte XYmap[];
        !            95: extern struct pte mmap[];
        !            96: extern struct pte msgbufmap[];
        !            97: extern struct pte camap[];
        !            98: #endif
        !            99: #endif

unix.superglobalmegacorp.com

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