Annotation of 43BSDTahoe/sys/tahoe/pte.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1988 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) 5/21/88
        !             7:  */
        !             8: 
        !             9: /*
        !            10:  * Tahoe 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   
        !            23:                pg_v:1,                 /* valid bit */
        !            24:                pg_prot:4,              /* access control */
        !            25:                pg_fod:1,               /* is fill on demand (=0) */
        !            26:                :1,                     /* must write back to swap (unused) */
        !            27:                pg_nc:1,                /* 'uncacheable page' bit */
        !            28:                pg_m:1,                 /* hardware maintained modified bit */
        !            29:                pg_u:1,                 /* hardware maintained 'used' bit */
        !            30:                pg_pfnum:22;            /* core page frame number or 0 */
        !            31: };
        !            32: struct hpte
        !            33: {
        !            34: unsigned int   
        !            35:                pg_high:10,             /* special for clustering */
        !            36:                pg_pfnum:22;
        !            37: };
        !            38: struct fpte
        !            39: {
        !            40: unsigned int   
        !            41:                pg_v:1,
        !            42:                pg_prot:4,
        !            43:                pg_fod:1,               /* is fill on demand (=1) */
        !            44:                :1,
        !            45:                pg_fileno:1,            /* file mapped from or TEXT or ZERO */
        !            46:                pg_blkno:24;            /* file system block number */
        !            47: };
        !            48: #endif
        !            49: 
        !            50: #define        PG_V            0x80000000
        !            51: #define        PG_PROT         0x78000000 /* all protection bits  (dorit). */
        !            52: #define        PG_FOD          0x04000000
        !            53: #define        PG_SWAPM        0x02000000
        !            54: #define PG_N           0x01000000 /* Non-cacheable */
        !            55: #define        PG_M            0x00800000
        !            56: #define PG_U           0x00400000
        !            57: #define        PG_PFNUM        0x003fffff
        !            58: 
        !            59: #define        PG_FZERO        0
        !            60: #define        PG_FTEXT        1
        !            61: #define        PG_FMAX         (PG_FTEXT)
        !            62: 
        !            63: #define        PG_NOACC        0
        !            64: #define        PG_KR           0x40000000
        !            65: #define        PG_KW           0x60000000
        !            66: #define        PG_URKR         0x50000000
        !            67: #define        PG_URKW         0x70000000
        !            68: #define        PG_UW           0x78000000
        !            69: 
        !            70: /*
        !            71:  * Pte related macros
        !            72:  */
        !            73: #define        dirty(pte)      ((pte)->pg_m)
        !            74: 
        !            75: /*
        !            76:  * Kernel virtual address to page table entry and to physical address.
        !            77:  */
        !            78: #define        kvtopte(va) (&Sysmap[((int)(va) &~ KERNBASE) >> PGSHIFT])
        !            79: #define        kvtophys(x) ((kvtopte(x)->pg_pfnum << PGSHIFT) | ((int)(x) & PGOFSET))
        !            80: 
        !            81: #ifndef LOCORE
        !            82: #ifdef KERNEL
        !            83: /* utilities defined in locore.s */
        !            84: extern struct pte Sysmap[];
        !            85: extern struct pte Usrptmap[];
        !            86: extern struct pte usrpt[];
        !            87: extern struct pte Swapmap[];
        !            88: extern struct pte Forkmap[];
        !            89: extern struct pte Xswapmap[];
        !            90: extern struct pte Xswap2map[];
        !            91: extern struct pte Pushmap[];
        !            92: extern struct pte Vfmap[];
        !            93: extern struct pte mmap[];
        !            94: extern struct pte msgbufmap[];
        !            95: extern struct pte kmempt[], ekmempt[];
        !            96: #endif
        !            97: #endif

unix.superglobalmegacorp.com

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