correct counting for uvmexp.wired:

only pages explicitly wired by a user process should be counted.
This commit is contained in:
chs 1998-06-09 05:18:52 +00:00
parent e922c9cfec
commit a5550009e6
2 changed files with 7 additions and 8 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.new.c,v 1.12 1998/05/20 17:32:13 thorpej Exp $ */
/* $NetBSD: pmap.new.c,v 1.13 1998/06/09 05:20:11 chs Exp $ */
/*
*
@ -1825,6 +1825,8 @@ struct pmap *pmap;
if (pg->flags & PG_BUSY)
panic("pmap_release: busy page table page");
/* pmap_page_protect? currently no need for it. */
pg->wire_count = 0;
uvm_pagefree(pg);
}
@ -2242,6 +2244,7 @@ vm_offset_t sva, eva;
pmap->pm_stats.resident_count--;
if (pmap->pm_ptphint == ptp) /* update hint? */
pmap->pm_ptphint = pmap->pm_obj.memq.tqh_first;
ptp->wire_count = 0;
uvm_pagefree(ptp);
}
@ -2330,6 +2333,7 @@ vm_offset_t sva, eva;
pmap->pm_stats.resident_count--;
if (pmap->pm_ptphint == ptp) /* update hint? */
pmap->pm_ptphint = pmap->pm_obj.memq.tqh_first;
ptp->wire_count = 0;
uvm_pagefree(ptp);
}
}
@ -2447,6 +2451,7 @@ struct vm_page *pg;
pve->pv_pmap->pm_stats.resident_count--;
if (pve->pv_pmap->pm_ptphint == pve->pv_ptp) /* update hint? */
pve->pv_pmap->pm_ptphint = pve->pv_pmap->pm_obj.memq.tqh_first;
pve->pv_ptp->wire_count = 0;
uvm_pagefree(pve->pv_ptp);
}
}

View File

@ -1,4 +1,4 @@
/* $NetBSD: uvm_km.c,v 1.8 1998/03/09 00:58:57 mrg Exp $ */
/* $NetBSD: uvm_km.c,v 1.9 1998/06/09 05:18:52 chs Exp $ */
/*
* XXXCDC: "ROUGH DRAFT" QUALITY UVM PRE-RELEASE FILE!
@ -254,8 +254,6 @@ uvm_km_get(uobj, offset, pps, npagesp, centeridx, access_type, advice, flags)
/* new page */
ptmp->flags &= ~(PG_BUSY|PG_FAKE);
UVM_PAGE_OWN(ptmp, NULL);
/* XXX: prevents pageout attempts */
ptmp->wire_count = 1;
uvm_pagezero(ptmp);
}
}
@ -395,7 +393,6 @@ uvm_km_get(uobj, offset, pps, npagesp, centeridx, access_type, advice, flags)
uvm_pagezero(ptmp);
ptmp->flags &= ~(PG_FAKE);
ptmp->wire_count = 1; /* XXX: prevents pageout attempts */
pps[lcv] = ptmp;
} /* lcv loop */
@ -720,9 +717,6 @@ uvm_km_kmemalloc(map, obj, size, flags)
if (pg) {
pg->flags &= ~PG_BUSY; /* new page */
UVM_PAGE_OWN(pg, NULL);
pg->wire_count = 1;
uvmexp.wired++;
}
simple_unlock(&obj->vmobjlock);