summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_glue.c
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1995-01-24 10:14:09 +0000
committerdg <dg@FreeBSD.org>1995-01-24 10:14:09 +0000
commita9e08ab1e382c62f084401bff2ad5528a3b71e3e (patch)
treea53b9363f7e1cd0fe0867d24dd5952593915453e /sys/vm/vm_glue.c
parentcba22c2c7d66e22200f82b02a38eb994e4eb64b3 (diff)
downloadFreeBSD-src-a9e08ab1e382c62f084401bff2ad5528a3b71e3e.zip
FreeBSD-src-a9e08ab1e382c62f084401bff2ad5528a3b71e3e.tar.gz
Added ability to detect sequential faults and DTRT. (swap_pager.c)
Added hook for pmap_prefault() and use symbolic constant for new third argument to vm_page_alloc() (vm_fault.c, various) Changed the way that upages and page tables are held. (vm_glue.c) Fixed architectural flaw in allocating pages at interrupt time that was introduced with the merged cache changes. (vm_page.c, various) Adjusted some algorithms to acheive better paging performance and to accomodate the fix for the architectural flaw mentioned above. (vm_pageout.c) Fixed pbuf handling problem, changed policy on handling read-behind page. (vnode_pager.c) Submitted by: John Dyson
Diffstat (limited to 'sys/vm/vm_glue.c')
-rw-r--r--sys/vm/vm_glue.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c
index 0767ae1..6ec7a1b 100644
--- a/sys/vm/vm_glue.c
+++ b/sys/vm/vm_glue.c
@@ -59,7 +59,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
- * $Id: vm_glue.c,v 1.11 1995/01/09 16:05:40 davidg Exp $
+ * $Id: vm_glue.c,v 1.12 1995/01/10 07:32:45 davidg Exp $
*/
#include <sys/param.h>
@@ -236,12 +236,6 @@ vm_fork(p1, p2, isvfork)
pmap_extract(vp->pmap, addr + NBPG * i),
VM_PROT_READ | VM_PROT_WRITE, 1);
- /*
- * and allow the UPAGES page table entry to be paged (at the vm system
- * level)
- */
- vm_map_pageable(vp, ptaddr, ptaddr + NBPG, TRUE);
-
p2->p_addr = up;
/*
@@ -339,9 +333,6 @@ faultin(p)
pa, VM_PROT_READ | VM_PROT_WRITE, 1);
}
- /* and let the page table pages go (at least above pmap level) */
- vm_map_pageable(map, ptaddr, ptaddr + NBPG, TRUE);
-
s = splhigh();
if (p->p_stat == SRUN)
@@ -491,6 +482,7 @@ swapout(p)
register struct proc *p;
{
vm_map_t map = &p->p_vmspace->vm_map;
+ vm_offset_t ptaddr;
++p->p_stats->p_ru.ru_nswap;
/*
@@ -515,6 +507,9 @@ swapout(p)
vm_map_pageable(map, (vm_offset_t) kstack,
(vm_offset_t) kstack + UPAGES * NBPG, TRUE);
+ ptaddr = trunc_page((u_int) vtopte(kstack));
+ vm_map_pageable(map, ptaddr, ptaddr + NBPG, TRUE);
+
p->p_flag &= ~P_SWAPPING;
p->p_swtime = 0;
}
OpenPOWER on IntegriCloud