diff options
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r-- | sys/vm/vm_page.c | 20 |
1 files changed, 14 insertions, 6 deletions
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) |