Annotation of 41BSD/sys/h/vmmac.h, revision 1.1

1.1     ! root        1: /*     vmmac.h 4.1     11/9/80 */
        !             2: 
        !             3: /*
        !             4:  * Virtual memory related conversion macros
        !             5:  */
        !             6: 
        !             7: /* Core clicks to number of pages of page tables needed to map that much */
        !             8: #define        ctopt(x)        (((x)+NPTEPG-1)/NPTEPG)
        !             9: 
        !            10: /* Virtual page numbers to text|data|stack segment page numbers and back */
        !            11: #define        vtotp(p, v)     ((int)(v))
        !            12: #define        vtodp(p, v)     ((int)((v) - (p)->p_tsize))
        !            13: #define        vtosp(p, v)     ((int)(btop(USRSTACK) - 1 - (v)))
        !            14: #define        tptov(p, i)     ((unsigned)(i))
        !            15: #define        dptov(p, i)     ((unsigned)((p)->p_tsize + (i)))
        !            16: #define        sptov(p, i)     ((unsigned)(btop(USRSTACK) - 1 - (i)))
        !            17: 
        !            18: /* Tell whether virtual page numbers are in text|data|stack segment */
        !            19: #define        isassv(p, v)    ((v) & P1TOP)
        !            20: #define        isatsv(p, v)    ((v) < (p)->p_tsize)
        !            21: #define        isadsv(p, v)    ((v) >= (p)->p_tsize && !isassv(p, v))
        !            22: 
        !            23: /* Tell whether pte's are text|data|stack */
        !            24: #define        isaspte(p, pte)         ((pte) > sptopte(p, (p)->p_ssize))
        !            25: #define        isatpte(p, pte)         ((pte) < dptopte(p, 0))
        !            26: #define        isadpte(p, pte)         (!isaspte(p, pte) && !isatpte(p, pte))
        !            27: 
        !            28: /* Text|data|stack pte's to segment page numbers and back */
        !            29: #define        ptetotp(p, pte)         ((pte) - (p)->p_p0br)
        !            30: #define        ptetodp(p, pte)         ((pte) - ((p)->p_p0br + (p)->p_tsize))
        !            31: #define        ptetosp(p, pte) \
        !            32:        (((p)->p_p0br + (p)->p_szpt*NPTEPG - UPAGES - 1) - (pte))
        !            33: 
        !            34: #define        tptopte(p, i)           ((p)->p_p0br + (i))
        !            35: #define        dptopte(p, i)           ((p)->p_p0br + (p)->p_tsize + (i))
        !            36: #define        sptopte(p, i) \
        !            37:        (((p)->p_p0br + (p)->p_szpt*NPTEPG - UPAGES - 1) - (i))
        !            38: 
        !            39: /* Bytes to pages without rounding, and back */
        !            40: #define        btop(x)         (((unsigned)(x)) >> PGSHIFT)
        !            41: #define        ptob(x)         ((caddr_t)((x) << PGSHIFT))
        !            42: 
        !            43: /* Turn virtual addresses into kernel map indices */
        !            44: #define        kmxtob(a)       (usrpt + (a) * NPTEPG)
        !            45: #define        btokmx(b)       (((b) - usrpt) / NPTEPG)
        !            46: 
        !            47: /* User area address and pcb bases */
        !            48: #define        uaddr(p)        (&((p)->p_p0br[(p)->p_szpt * NPTEPG - UPAGES]))
        !            49: #define        pcbb(p)         ((p)->p_addr[0].pg_pfnum)
        !            50: 
        !            51: /* Average new into old with aging factor time */
        !            52: #define        ave(smooth, cnt, time) \
        !            53:        smooth = ((time - 1) * (smooth) + (cnt)) / (time)

unix.superglobalmegacorp.com

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