Annotation of 43BSD/sys/vax/pte.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1982, 1986 Regents of the University of California.
        !             3:  * All rights reserved.  The Berkeley software License Agreement
        !             4:  * specifies the terms and conditions for redistribution.
        !             5:  *
        !             6:  *     @(#)pte.h       7.1 (Berkeley) 6/5/86
        !             7:  */
        !             8: 
        !             9: /*
        !            10:  * VAX page table entry
        !            11:  *
        !            12:  * There are two major kinds of pte's: those which have ever existed (and are
        !            13:  * thus either now in core or on the swap device), and those which have
        !            14:  * never existed, but which will be filled on demand at first reference.
        !            15:  * There is a structure describing each.  There is also an ancillary
        !            16:  * structure used in page clustering.
        !            17:  */
        !            18: 
        !            19: #ifndef LOCORE
        !            20: struct pte
        !            21: {
        !            22: unsigned int   pg_pfnum:21,            /* core page frame number or 0 */
        !            23:                :2,
        !            24:                pg_vreadm:1,            /* modified since vread (or with _m) */
        !            25:                pg_swapm:1,             /* have to write back to swap */
        !            26:                pg_fod:1,               /* is fill on demand (=0) */
        !            27:                pg_m:1,                 /* hardware maintained modified bit */
        !            28:                pg_prot:4,              /* access control */
        !            29:                pg_v:1;                 /* valid bit */
        !            30: };
        !            31: struct hpte
        !            32: {
        !            33: unsigned int   pg_pfnum:21,
        !            34:                :2,
        !            35:                pg_high:9;              /* special for clustering */
        !            36: };
        !            37: struct fpte
        !            38: {
        !            39: unsigned int   pg_blkno:24,            /* file system block number */
        !            40:                pg_fileno:1,            /* file mapped from or TEXT or ZERO */
        !            41:                pg_fod:1,               /* is fill on demand (=1) */
        !            42:                :1,
        !            43:                pg_prot:4,
        !            44:                pg_v:1;
        !            45: };
        !            46: #endif
        !            47: 
        !            48: #define        PG_V            0x80000000
        !            49: #define        PG_PROT         0x78000000
        !            50: #define        PG_M            0x04000000
        !            51: #define        PG_FOD          0x02000000
        !            52: #define        PG_VREADM       0x00800000
        !            53: #define        PG_PFNUM        0x001fffff
        !            54: 
        !            55: #define        PG_FZERO        0
        !            56: #define        PG_FTEXT        1
        !            57: #define        PG_FMAX         (PG_FTEXT)
        !            58: 
        !            59: #define        PG_NOACC        0
        !            60: #define        PG_KW           0x10000000
        !            61: #define        PG_KR           0x18000000
        !            62: #define        PG_UW           0x20000000
        !            63: #define        PG_URKW         0x70000000
        !            64: #define        PG_URKR         0x78000000
        !            65: 
        !            66: /*
        !            67:  * Pte related macros
        !            68:  */
        !            69: #define        dirty(pte)      ((pte)->pg_fod == 0 && (pte)->pg_pfnum && \
        !            70:                            ((pte)->pg_m || (pte)->pg_swapm))
        !            71: 
        !            72: #ifndef LOCORE
        !            73: #ifdef KERNEL
        !            74: 
        !            75: /* utilities defined in locore.s */
        !            76: extern struct pte Sysmap[];
        !            77: extern struct pte Usrptmap[];
        !            78: extern struct pte usrpt[];
        !            79: extern struct pte Swapmap[];
        !            80: extern struct pte Forkmap[];
        !            81: extern struct pte Xswapmap[];
        !            82: extern struct pte Xswap2map[];
        !            83: extern struct pte Pushmap[];
        !            84: extern struct pte Vfmap[];
        !            85: extern struct pte mmap[];
        !            86: extern struct pte msgbufmap[];
        !            87: extern struct pte camap[];
        !            88: extern struct pte Nexmap[][16];
        !            89: extern struct pte Ioamap[][1];
        !            90: #ifdef VAX630
        !            91: extern struct pte Clockmap[];
        !            92: extern struct pte Ka630map[];
        !            93: #endif
        !            94: #endif
        !            95: #endif

unix.superglobalmegacorp.com

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