Home | History | Annotate | Download | only in pdsim

Lines Matching defs:pg

61 	struct vm_page *pg;
63 pg = TAILQ_FIRST(&freeq);
64 if (pg == NULL) {
67 TAILQ_REMOVE(&freeq, pg, pageq);
68 pg->offset = idx << PAGE_SHIFT;
69 pg->uanon = NULL;
70 pg->uobject = obj;
71 pg->pqflags = 0;
72 obj->pages[idx] = pg;
76 return pg;
80 pdsim_pagefree(struct vm_page *pg)
84 KASSERT(pg != NULL);
87 if (pg->offset != -1) {
88 int idx = pg->offset >> PAGE_SHIFT;
93 uvmpdpol_pagedequeue(pg);
95 KASSERT(pg->uanon == NULL);
96 obj = pg->uobject;
100 idx = pg->offset >> PAGE_SHIFT;
101 KASSERT(obj->pages[idx] == pg);
105 TAILQ_INSERT_HEAD(&freeq, pg, pageq);
112 struct vm_page *pg;
114 pg = obj->pages[index];
116 return pg;
120 pdsim_pagemarkreferenced(struct vm_page *pg)
123 pg->_mdflags |= MDPG_REFERENCED;
127 pmap_is_referenced(struct vm_page *pg)
130 return pg->_mdflags & MDPG_REFERENCED;
134 pmap_clear_reference(struct vm_page *pg)
136 boolean_t referenced = pmap_is_referenced(pg);
138 pg->_mdflags &= ~MDPG_REFERENCED;
146 struct vm_page *pg;
154 pages = calloc(n, sizeof(*pg));
156 pg = &pages[i];
157 pg->offset = -1;
158 pdsim_pagefree(pg);
165 struct vm_page *pg;
171 pg = uvmpdpol_selectvictim();
172 if (pg != NULL) {
173 pdsim_pagefree(pg);
182 struct vm_page *pg;
192 pg = pdsim_pagelookup(obj, index);
193 if (pg) {
195 pdsim_pagemarkreferenced(pg);
197 if ((pg->_mdflags & MDPG_SPECULATIVE) != 0) {
198 pg->_mdflags &= ~MDPG_SPECULATIVE;
205 pg = pdsim_pagealloc(obj, index);
206 if (pg == NULL) {
214 pdsim_pagemarkreferenced(pg);
215 uvmpdpol_pageactivate(pg);
216 uvmpdpol_pageactivate(pg);
219 pg = pdsim_pagelookup(obj, index + 1);
220 if (pg == NULL) {
222 pg = pdsim_pagealloc(obj, index + 1);
223 if (pg == NULL) {
228 pg->_mdflags |= MDPG_SPECULATIVE;
233 uvmpdpol_pageenqueue(pg);