diff options
author | dyson <dyson@FreeBSD.org> | 1996-03-02 02:54:24 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1996-03-02 02:54:24 +0000 |
commit | ed1fa57da89e71813d6e2e89acbca81d440049c1 (patch) | |
tree | 088df355e4c3ec1798e2e3f969ce6621e24b0125 /sys/vm/vm_glue.c | |
parent | 5f6f44df5a35eca0291a7eee3f09997484de41ea (diff) | |
download | FreeBSD-src-ed1fa57da89e71813d6e2e89acbca81d440049c1.zip FreeBSD-src-ed1fa57da89e71813d6e2e89acbca81d440049c1.tar.gz |
1) Eliminate unnecessary bzero of UPAGES.
2) Eliminate unnecessary copying of pages during/after forks.
3) Add user map simplification.
Diffstat (limited to 'sys/vm/vm_glue.c')
-rw-r--r-- | sys/vm/vm_glue.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index 3dfa281..bad6645 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.39 1996/02/22 10:57:36 davidg Exp $ + * $Id: vm_glue.c,v 1.40 1996/02/23 18:49:24 peter Exp $ */ #include "opt_ddb.h" @@ -271,7 +271,8 @@ vm_fork(p1, p2) for(i=0;i<UPAGES;i++) { vm_page_t m; - while ((m = vm_page_alloc(p2->p_vmspace->vm_upages_obj, i, VM_ALLOC_ZERO)) == NULL) { + while ((m = vm_page_alloc(p2->p_vmspace->vm_upages_obj, + i, VM_ALLOC_NORMAL)) == NULL) { VM_WAIT; } @@ -281,13 +282,12 @@ vm_fork(p1, p2) VM_PAGE_TO_PHYS(m), VM_PROT_READ|VM_PROT_WRITE, 1); pmap_kenter(((vm_offset_t) up) + i * PAGE_SIZE, VM_PAGE_TO_PHYS(m)); - if ((m->flags & PG_ZERO) == 0) - bzero(((caddr_t) up) + i * PAGE_SIZE, PAGE_SIZE); m->flags &= ~PG_ZERO; m->valid = VM_PAGE_BITS_ALL; } vm_page_unhold(stkm); + p2->p_addr = up; /* |