|
|
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)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.