|
|
BSD 4.1
/* vmclust.h 4.1 11/9/80 */
/*
* Page clustering macros.
*
* dirtycl(pte) is the page cluster dirty?
* anycl(pte,fld) does any pte in the cluster has fld set?
* zapcl(pte,fld) = val set all fields fld in the cluster to val
* distcl(pte) distribute high bits to cluster; note that
* distcl copies everything but pg_pfnum,
* INCLUDING pg_m!!!
*
* In all cases, pte must be the low pte in the cluster, even if
* the segment grows backwards (e.g. the stack).
*/
#define H(pte) ((struct hpte *)(pte))
#if CLSIZE==1
#define dirtycl(pte) dirty(pte)
#define anycl(pte,fld) ((pte)->fld)
#define zapcl(pte,fld) (pte)->fld
#define distcl(pte)
#endif
#if CLSIZE==2
#define dirtycl(pte) (dirty(pte) || dirty((pte)+1))
#define anycl(pte,fld) ((pte)->fld || (((pte)+1)->fld))
#define zapcl(pte,fld) (pte)[1].fld = (pte)[0].fld
#endif
#if CLSIZE==4
#define dirtycl(pte) \
(dirty(pte) || dirty((pte)+1) || dirty((pte)+2) || dirty((pte)+3))
#define anycl(pte,fld) \
((pte)->fld || (((pte)+1)->fld) || (((pte)+2)->fld) || (((pte)+3)->fld))
#define zapcl(pte,fld) \
(pte)[3].fld = (pte)[2].fld = (pte)[1].fld = (pte)[0].fld
#endif
#ifndef distcl
#define distcl(pte) zapcl(H(pte),pg_high)
#endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.