diff options
author | dg <dg@FreeBSD.org> | 1998-10-28 13:37:02 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1998-10-28 13:37:02 +0000 |
commit | 20b2c33d9ae555690e09419a1d176600738a144a (patch) | |
tree | 74dc0a163081dc84a8bec8ce775734c78d792fba /sys/vm | |
parent | f09370e8b5c92f2d102862a5ba0edda272351bfd (diff) | |
download | FreeBSD-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.c | 6 | ||||
-rw-r--r-- | sys/vm/vm_page.c | 20 | ||||
-rw-r--r-- | sys/vm/vm_page.h | 4 |
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)); |