summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/alpha/alpha/pmap.c7
-rw-r--r--sys/amd64/amd64/pmap.c7
-rw-r--r--sys/fs/procfs/procfs_mem.c4
-rw-r--r--sys/i386/i386/pmap.c7
-rw-r--r--sys/kern/kern_exec.c4
-rw-r--r--sys/kern/sys_pipe.c6
-rw-r--r--sys/kern/vfs_bio.c14
-rw-r--r--sys/miscfs/procfs/procfs_mem.c4
-rw-r--r--sys/vm/vm_fault.c6
-rw-r--r--sys/vm/vm_page.c20
-rw-r--r--sys/vm/vm_page.h4
11 files changed, 43 insertions, 40 deletions
diff --git a/sys/alpha/alpha/pmap.c b/sys/alpha/alpha/pmap.c
index f90cebd..0e7aa73 100644
--- a/sys/alpha/alpha/pmap.c
+++ b/sys/alpha/alpha/pmap.c
@@ -43,7 +43,7 @@
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
* from: i386 Id: pmap.c,v 1.193 1998/04/19 15:22:48 bde Exp
* with some ideas from NetBSD's alpha pmap
- * $Id: pmap.c,v 1.10 1998/09/04 18:49:35 dfr Exp $
+ * $Id: pmap.c,v 1.11 1998/10/21 11:38:06 dg Exp $
*/
/*
@@ -1045,7 +1045,7 @@ pmap_dispose_proc(p)
*(ptek + i) = 0;
pmap_invalidate_page(kernel_pmap,
(vm_offset_t)p->p_addr + i * PAGE_SIZE);
- vm_page_unwire(m);
+ vm_page_unwire(m, 0);
vm_page_free(m);
}
}
@@ -1069,8 +1069,7 @@ pmap_swapout_proc(p)
if ((m = vm_page_lookup(upobj, i)) == NULL)
panic("pmap_swapout_proc: upage already missing???");
m->dirty = VM_PAGE_BITS_ALL;
- vm_page_unwire(m);
- vm_page_deactivate(m);
+ vm_page_unwire(m, 0);
pmap_kremove( (vm_offset_t) p->p_addr + PAGE_SIZE * i);
}
}
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index 7f49409..35444a4 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * $Id: pmap.c,v 1.209 1998/09/06 23:04:20 tegge Exp $
+ * $Id: pmap.c,v 1.210 1998/10/21 11:38:14 dg Exp $
*/
/*
@@ -1046,7 +1046,7 @@ pmap_dispose_proc(p)
*(ptek + i) = 0;
if ((oldpte & PG_G) || (cpu_class > CPUCLASS_386))
invlpg((vm_offset_t) p->p_addr + i * PAGE_SIZE);
- vm_page_unwire(m);
+ vm_page_unwire(m, 0);
vm_page_free(m);
}
@@ -1073,8 +1073,7 @@ pmap_swapout_proc(p)
if ((m = vm_page_lookup(upobj, i)) == NULL)
panic("pmap_swapout_proc: upage already missing???");
m->dirty = VM_PAGE_BITS_ALL;
- vm_page_unwire(m);
- vm_page_deactivate(m);
+ vm_page_unwire(m, 0);
pmap_kremove( (vm_offset_t) p->p_addr + PAGE_SIZE * i);
}
}
diff --git a/sys/fs/procfs/procfs_mem.c b/sys/fs/procfs/procfs_mem.c
index c1012f1..22d8f74 100644
--- a/sys/fs/procfs/procfs_mem.c
+++ b/sys/fs/procfs/procfs_mem.c
@@ -37,7 +37,7 @@
*
* @(#)procfs_mem.c 8.5 (Berkeley) 6/15/94
*
- * $Id: procfs_mem.c,v 1.33 1998/06/07 17:11:57 dfr Exp $
+ * $Id: procfs_mem.c,v 1.34 1998/07/15 02:32:19 bde Exp $
*/
/*
@@ -253,7 +253,7 @@ procfs_rwmem(curp, p, uio)
/*
* release the page and the object
*/
- vm_page_unwire(m);
+ vm_page_unwire(m, 1);
vm_object_deallocate(object);
object = NULL;
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c
index 7f49409..35444a4 100644
--- a/sys/i386/i386/pmap.c
+++ b/sys/i386/i386/pmap.c
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * $Id: pmap.c,v 1.209 1998/09/06 23:04:20 tegge Exp $
+ * $Id: pmap.c,v 1.210 1998/10/21 11:38:14 dg Exp $
*/
/*
@@ -1046,7 +1046,7 @@ pmap_dispose_proc(p)
*(ptek + i) = 0;
if ((oldpte & PG_G) || (cpu_class > CPUCLASS_386))
invlpg((vm_offset_t) p->p_addr + i * PAGE_SIZE);
- vm_page_unwire(m);
+ vm_page_unwire(m, 0);
vm_page_free(m);
}
@@ -1073,8 +1073,7 @@ pmap_swapout_proc(p)
if ((m = vm_page_lookup(upobj, i)) == NULL)
panic("pmap_swapout_proc: upage already missing???");
m->dirty = VM_PAGE_BITS_ALL;
- vm_page_unwire(m);
- vm_page_deactivate(m);
+ vm_page_unwire(m, 0);
pmap_kremove( (vm_offset_t) p->p_addr + PAGE_SIZE * i);
}
}
diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index d30d9c2..4200adf 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: kern_exec.c,v 1.86 1998/09/04 08:06:55 dfr Exp $
+ * $Id: kern_exec.c,v 1.87 1998/10/16 03:55:00 peter Exp $
*/
#include <sys/param.h>
@@ -408,7 +408,7 @@ exec_unmap_first_page(imgp)
{
if (imgp->firstpage) {
pmap_kremove((vm_offset_t) imgp->image_header);
- vm_page_unwire(imgp->firstpage);
+ vm_page_unwire(imgp->firstpage, 1);
imgp->firstpage = NULL;
}
}
diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c
index 9b60e26..5f67897 100644
--- a/sys/kern/sys_pipe.c
+++ b/sys/kern/sys_pipe.c
@@ -16,7 +16,7 @@
* 4. Modifications may be freely made to this file if the above conditions
* are met.
*
- * $Id: sys_pipe.c,v 1.42 1998/06/07 17:11:39 dfr Exp $
+ * $Id: sys_pipe.c,v 1.43 1998/10/13 08:24:40 dg Exp $
*/
/*
@@ -502,7 +502,7 @@ pipe_build_write_buffer(wpipe, uio)
if (!paddr) {
int j;
for(j=0;j<i;j++)
- vm_page_unwire(wpipe->pipe_map.ms[j]);
+ vm_page_unwire(wpipe->pipe_map.ms[j], 1);
return EFAULT;
}
@@ -566,7 +566,7 @@ struct pipe *wpipe;
}
}
for (i=0;i<wpipe->pipe_map.npages;i++)
- vm_page_unwire(wpipe->pipe_map.ms[i]);
+ vm_page_unwire(wpipe->pipe_map.ms[i], 1);
}
/*
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index 8084f3d..e4946b1 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -11,7 +11,7 @@
* 2. Absolutely no warranty of function or purpose is made by the author
* John S. Dyson.
*
- * $Id: vfs_bio.c,v 1.179 1998/10/13 08:24:40 dg Exp $
+ * $Id: vfs_bio.c,v 1.180 1998/10/25 17:44:52 phk Exp $
*/
/*
@@ -794,7 +794,8 @@ vfs_vmio_release(bp)
for (i = 0; i < bp->b_npages; i++) {
m = bp->b_pages[i];
bp->b_pages[i] = NULL;
- vm_page_unwire(m);
+ if ((bp->b_flags & B_ASYNC) == 0)
+ vm_page_unwire(m, (bp->b_flags & B_ASYNC) == 0 ? 0 : 1);
/*
* We don't mess with busy pages, it is
@@ -806,6 +807,7 @@ vfs_vmio_release(bp)
if (m->wire_count == 0) {
+ vm_page_flag_clear(m, PG_ZERO);
/*
* If this is an async free -- we cannot place
* pages onto the cache queue. If it is an
@@ -830,9 +832,6 @@ vfs_vmio_release(bp)
*/
if (m->dirty == 0 && m->hold_count == 0)
vm_page_cache(m);
- else
- vm_page_deactivate(m);
- vm_page_flag_clear(m, PG_ZERO);
} else if (m->hold_count == 0) {
vm_page_busy(m);
vm_page_protect(m, VM_PROT_NONE);
@@ -844,7 +843,6 @@ vfs_vmio_release(bp)
* act_count.
*/
m->act_count = 0;
- vm_page_flag_clear(m, PG_ZERO);
}
}
}
@@ -1714,7 +1712,7 @@ allocbuf(struct buf * bp, int size)
vm_page_sleep(m, "biodep", &m->busy);
bp->b_pages[i] = NULL;
- vm_page_unwire(m);
+ vm_page_unwire(m, 0);
}
pmap_qremove((vm_offset_t) trunc_page((vm_offset_t)bp->b_data) +
(desiredpages << PAGE_SHIFT), (bp->b_npages - desiredpages));
@@ -2376,7 +2374,7 @@ vm_hold_free_pages(struct buf * bp, vm_offset_t from, vm_offset_t to)
bp->b_pages[index] = NULL;
pmap_kremove(pg);
vm_page_busy(p);
- vm_page_unwire(p);
+ vm_page_unwire(p, 0);
vm_page_free(p);
}
}
diff --git a/sys/miscfs/procfs/procfs_mem.c b/sys/miscfs/procfs/procfs_mem.c
index c1012f1..22d8f74 100644
--- a/sys/miscfs/procfs/procfs_mem.c
+++ b/sys/miscfs/procfs/procfs_mem.c
@@ -37,7 +37,7 @@
*
* @(#)procfs_mem.c 8.5 (Berkeley) 6/15/94
*
- * $Id: procfs_mem.c,v 1.33 1998/06/07 17:11:57 dfr Exp $
+ * $Id: procfs_mem.c,v 1.34 1998/07/15 02:32:19 bde Exp $
*/
/*
@@ -253,7 +253,7 @@ procfs_rwmem(curp, p, uio)
/*
* release the page and the object
*/
- vm_page_unwire(m);
+ vm_page_unwire(m, 1);
vm_object_deallocate(object);
object = NULL;
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