summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1998-10-28 13:37:02 +0000
committerdg <dg@FreeBSD.org>1998-10-28 13:37:02 +0000
commit20b2c33d9ae555690e09419a1d176600738a144a (patch)
tree74dc0a163081dc84a8bec8ce775734c78d792fba /sys/vm
parentf09370e8b5c92f2d102862a5ba0edda272351bfd (diff)
downloadFreeBSD-src-20b2c33d9ae555690e09419a1d176600738a144a.zip
FreeBSD-src-20b2c33d9ae555690e09419a1d176600738a144a.tar.gz
Added a second argument, "activate" to the vm_page_unwire() call so that
the caller can select either inactive or active queue to put the page on.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_fault.c6
-rw-r--r--sys/vm/vm_page.c20
-rw-r--r--sys/vm/vm_page.h4
3 files changed, 19 insertions, 11 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 9178d4d..1d6b0f2 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -66,7 +66,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_fault.c,v 1.88 1998/09/04 08:06:57 dfr Exp $
+ * $Id: vm_fault.c,v 1.89 1998/10/25 17:44:58 phk Exp $
*/
/*
@@ -738,7 +738,7 @@ readrest:
if (wired)
vm_page_wire(fs.m);
else
- vm_page_unwire(fs.m);
+ vm_page_unwire(fs.m, 1);
} else {
vm_page_activate(fs.m);
}
@@ -870,7 +870,7 @@ vm_fault_unwire(map, start, end)
pa = pmap_extract(pmap, va);
if (pa != (vm_offset_t) 0) {
pmap_change_wiring(pmap, va, FALSE);
- vm_page_unwire(PHYS_TO_VM_PAGE(pa));
+ vm_page_unwire(PHYS_TO_VM_PAGE(pa), 1);
}
}
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index b2225e7..f084d4a 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91
- * $Id: vm_page.c,v 1.109 1998/10/21 14:46:41 dg Exp $
+ * $Id: vm_page.c,v 1.110 1998/10/25 17:44:59 phk Exp $
*/
/*
@@ -1252,8 +1252,9 @@ vm_page_wire(m)
* The page queues must be locked.
*/
void
-vm_page_unwire(m)
+vm_page_unwire(m, activate)
register vm_page_t m;
+ int activate;
{
int s;
@@ -1265,10 +1266,17 @@ vm_page_unwire(m)
if (m->object)
m->object->wire_count--;
cnt.v_wire_count--;
- TAILQ_INSERT_TAIL(&vm_page_queue_active, m, pageq);
- m->queue = PQ_ACTIVE;
- (*vm_page_queues[PQ_ACTIVE].lcnt)++;
- cnt.v_active_count++;
+ if (activate) {
+ TAILQ_INSERT_TAIL(&vm_page_queue_active, m, pageq);
+ m->queue = PQ_ACTIVE;
+ (*vm_page_queues[PQ_ACTIVE].lcnt)++;
+ cnt.v_active_count++;
+ } else {
+ TAILQ_INSERT_TAIL(&vm_page_queue_inactive, m, pageq);
+ m->queue = PQ_INACTIVE;
+ (*vm_page_queues[PQ_INACTIVE].lcnt)++;
+ cnt.v_inactive_count++;
+ }
}
} else {
#if !defined(MAX_PERF)
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
index c08602b..26231a2 100644
--- a/sys/vm/vm_page.h
+++ b/sys/vm/vm_page.h
@@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_page.h,v 1.46 1998/09/04 08:06:57 dfr Exp $
+ * $Id: vm_page.h,v 1.47 1998/10/21 14:46:42 dg Exp $
*/
/*
@@ -361,7 +361,7 @@ vm_page_t vm_page_lookup __P((vm_object_t, vm_pindex_t));
void vm_page_remove __P((vm_page_t));
void vm_page_rename __P((vm_page_t, vm_object_t, vm_pindex_t));
vm_offset_t vm_page_startup __P((vm_offset_t, vm_offset_t, vm_offset_t));
-void vm_page_unwire __P((vm_page_t));
+void vm_page_unwire __P((vm_page_t, int));
void vm_page_wire __P((vm_page_t));
void vm_page_unqueue __P((vm_page_t));
void vm_page_unqueue_nowakeup __P((vm_page_t));
OpenPOWER on IntegriCloud