diff options
| author | chs <chs@NetBSD.org> | 2001-03-15 06:10:32 +0000 |
|---|---|---|
| committer | chs <chs@NetBSD.org> | 2001-03-15 06:10:32 +0000 |
| commit | ac3bc537bd6df78d511c6c7e83bf0cb3617ae2a8 (patch) | |
| tree | a8e61077548b7b330bc4daec99d5e163183fd18e | |
| parent | ef26546e159b810e9b48f84eb66be625a707414f (diff) | |
eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:
KERN_SUCCESS 0
KERN_INVALID_ADDRESS EFAULT
KERN_PROTECTION_FAILURE EACCES
KERN_NO_SPACE ENOMEM
KERN_INVALID_ARGUMENT EINVAL
KERN_FAILURE various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE ENOMEM
KERN_NOT_RECEIVER <unused>
KERN_NO_ACCESS <unused>
KERN_PAGES_LOCKED <unused>
110 files changed, 808 insertions, 1164 deletions
diff --git a/sys/arch/alpha/alpha/machdep.c b/sys/arch/alpha/alpha/machdep.c index a296eaaa760..6b6284c6a55 100644 --- a/sys/arch/alpha/alpha/machdep.c +++ b/sys/arch/alpha/alpha/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.230 2001/01/22 13:56:56 jdolecek Exp $ */ +/* $NetBSD: machdep.c,v 1.231 2001/03/15 06:10:32 chs Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc. @@ -73,7 +73,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.230 2001/01/22 13:56:56 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.231 2001/03/15 06:10:32 chs Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -868,7 +868,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); base = bufpages / nbuf; residual = bufpages % nbuf; diff --git a/sys/arch/alpha/alpha/pmap.c b/sys/arch/alpha/alpha/pmap.c index e6afb6623b4..3fa7fef269a 100644 --- a/sys/arch/alpha/alpha/pmap.c +++ b/sys/arch/alpha/alpha/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.156 2001/01/14 03:33:34 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.157 2001/03/15 06:10:33 chs Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc. @@ -154,7 +154,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.156 2001/01/14 03:33:34 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.157 2001/03/15 06:10:33 chs Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1700,9 +1700,6 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) printf("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, flags); #endif - if (pmap == NULL) - return (KERN_SUCCESS); - managed = PAGE_IS_MANAGED(pa); isactive = PMAP_ISACTIVE(pmap, cpu_id); wired = (flags & PMAP_WIRED) != 0; @@ -1753,7 +1750,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) */ if (pmap->pm_lev1map == kernel_lev1map) { error = pmap_lev1map_create(pmap, cpu_id); - if (error != KERN_SUCCESS) { + if (error) { if (flags & PMAP_CANFAIL) return (error); panic("pmap_enter: unable to create lev1map"); @@ -1770,7 +1767,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) if (pmap_pte_v(l1pte) == 0) { pmap_physpage_addref(l1pte); error = pmap_ptpage_alloc(pmap, l1pte, PGU_L2PT); - if (error != KERN_SUCCESS) { + if (error) { pmap_l1pt_delref(pmap, l1pte, cpu_id); if (flags & PMAP_CANFAIL) return (error); @@ -1795,7 +1792,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) if (pmap_pte_v(l2pte) == 0) { pmap_physpage_addref(l2pte); error = pmap_ptpage_alloc(pmap, l2pte, PGU_L3PT); - if (error != KERN_SUCCESS) { + if (error) { pmap_l2pt_delref(pmap, l1pte, l2pte, cpu_id); if (flags & PMAP_CANFAIL) return (error); @@ -1901,7 +1898,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) */ if (managed) { error = pmap_pv_enter(pmap, pa, va, pte, TRUE); - if (error != KERN_SUCCESS) { + if (error) { pmap_l3pt_delref(pmap, va, pte, cpu_id, NULL); if (flags & PMAP_CANFAIL) return (error); @@ -1986,7 +1983,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) PMAP_UNLOCK(pmap); PMAP_MAP_TO_HEAD_UNLOCK(); - return (KERN_SUCCESS); + return 0; } /* @@ -3062,7 +3059,7 @@ pmap_pv_enter(pmap_t pmap, paddr_t pa, vaddr_t va, pt_entry_t *pte, */ newpv = pmap_pv_alloc(); if (newpv == NULL) - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; newpv->pv_va = va; newpv->pv_pmap = pmap; newpv->pv_pte = pte; @@ -3095,7 +3092,7 @@ pmap_pv_enter(pmap_t pmap, paddr_t pa, vaddr_t va, pt_entry_t *pte, if (dolock) simple_unlock(&pvh->pvh_slock); - return (KERN_SUCCESS); + return 0; } /* @@ -3535,7 +3532,7 @@ pmap_lev1map_create(pmap_t pmap, long cpu_id) l1pt = pool_cache_get(&pmap_l1pt_cache, PR_NOWAIT); if (l1pt == NULL) { simple_unlock(&pmap_growkernel_slock); - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } pmap->pm_lev1map = l1pt; @@ -3550,7 +3547,7 @@ pmap_lev1map_create(pmap_t pmap, long cpu_id) pmap_asn_alloc(pmap, cpu_id); PMAP_ACTIVATE(pmap, curproc, cpu_id); } - return (KERN_SUCCESS); + return 0; } /* @@ -3697,7 +3694,7 @@ pmap_ptpage_alloc(pmap_t pmap, pt_entry_t *pte, int usage) * another pmap! */ if (pmap_ptpage_steal(pmap, usage, &ptpa) == FALSE) - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } /* @@ -3707,7 +3704,7 @@ pmap_ptpage_alloc(pmap_t pmap, pt_entry_t *pte, int usage) PG_V | PG_KRE | PG_KWE | PG_WIRED | (pmap == pmap_kernel() ? PG_ASM : 0)); - return (KERN_SUCCESS); + return 0; } /* diff --git a/sys/arch/alpha/alpha/trap.c b/sys/arch/alpha/alpha/trap.c index 30246d1cdd1..e920533081c 100644 --- a/sys/arch/alpha/alpha/trap.c +++ b/sys/arch/alpha/alpha/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.66 2001/01/03 22:15:38 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.67 2001/03/15 06:10:33 chs Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -100,7 +100,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.66 2001/01/03 22:15:38 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.67 2001/03/15 06:10:33 chs Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -487,17 +487,17 @@ trap(const u_long a0, const u_long a1, const u_long a2, const u_long entry, if (map != kernel_map && (caddr_t)va >= vm->vm_maxsaddr && va < USRSTACK) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK - (unsigned long)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (user) KERNEL_PROC_UNLOCK(p); else @@ -519,7 +519,7 @@ trap(const u_long a0, const u_long a1, const u_long a2, const u_long entry, goto dopanic; } ucode = a0; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: " "out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/amiga/amiga/machdep.c b/sys/arch/amiga/amiga/machdep.c index 5c976db6fe5..7ba18972d9a 100644 --- a/sys/arch/amiga/amiga/machdep.c +++ b/sys/arch/amiga/amiga/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.159 2001/02/14 20:24:17 is Exp $ */ +/* $NetBSD: machdep.c,v 1.160 2001/03/15 06:10:34 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -262,7 +262,7 @@ cpu_startup() if (uvm_map(kernel_map, (vm_offset_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vm_offset_t) buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { diff --git a/sys/arch/amiga/amiga/pmap.c b/sys/arch/amiga/amiga/pmap.c index feccda17815..6400c76b995 100644 --- a/sys/arch/amiga/amiga/pmap.c +++ b/sys/arch/amiga/amiga/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.82 2001/01/20 17:08:41 mhitch Exp $ */ +/* $NetBSD: pmap.c,v 1.83 2001/03/15 06:10:34 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -519,14 +519,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, AMIGA_KPTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -618,11 +618,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1149,11 +1147,6 @@ pmap_enter(pmap, va, pa, prot, flags) if (pmapdebug & (PDB_FOLLOW|PDB_ENTER)) printf("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired); -#endif - if (pmap == NULL) - return (KERN_SUCCESS); - -#ifdef DEBUG if (pmap == pmap_kernel()) enter_stats.kernel++; else @@ -1393,7 +1386,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t) pmap_pte(pmap, va))); } #endif - return (KERN_SUCCESS); + return 0; } void @@ -2570,7 +2563,7 @@ pmap_enter_ptpage(pmap, va) #endif s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/amiga/amiga/trap.c b/sys/arch/amiga/amiga/trap.c index eee91d01329..2a442d42c90 100644 --- a/sys/arch/amiga/amiga/trap.c +++ b/sys/arch/amiga/amiga/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.82 2001/02/14 20:24:17 is Exp $ */ +/* $NetBSD: trap.c,v 1.83 2001/03/15 06:10:34 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -417,7 +417,7 @@ trapmmufault(type, code, v, fp, p, sticks) #else if (mmutype == MMU_68040) { #endif - if(rv != KERN_SUCCESS) { + if (rv != 0) { goto nogo; } @@ -449,8 +449,7 @@ trapmmufault(type, code, v, fp, p, sticks) if(fp->f_fmt7.f_wb2s & WBS_VALID && ((fp->f_fmt7.f_wb2s & WBS_TTMASK)==WBS_TT_MOVE16) == 0) { if (_write_back(2, fp->f_fmt7.f_wb2s, - fp->f_fmt7.f_wb2d, fp->f_fmt7.f_wb2a, map) - != KERN_SUCCESS) + fp->f_fmt7.f_wb2d, fp->f_fmt7.f_wb2a, map) != 0) goto nogo; if ((fp->f_fmt7.f_wb2s & WBS_TMMASK) != (code & SSW_TMMASK)) @@ -466,8 +465,7 @@ trapmmufault(type, code, v, fp, p, sticks) else wb3_map = &vm->vm_map; if (_write_back(3, fp->f_fmt7.f_wb3s, - fp->f_fmt7.f_wb3d, fp->f_fmt7.f_wb3a, wb3_map) - != KERN_SUCCESS) + fp->f_fmt7.f_wb3d, fp->f_fmt7.f_wb3a, wb3_map) != 0) goto nogo; } } @@ -481,22 +479,22 @@ trapmmufault(type, code, v, fp, p, sticks) * error. */ if (map != kernel_map && (caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) return; userret(p, fp->f_pc, sticks); return; } #else /* use hacky 386bsd_code */ - if (rv == KERN_SUCCESS) { + if (rv == 0) { /* * XXX: continuation of rude stack hack */ @@ -520,7 +518,7 @@ nogo: type, code); panictrap(type, code, v, fp); } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? p->p_ucred->cr_uid : -1); @@ -797,7 +795,7 @@ _write_back (wb, wb_sts, wb_data, wb_addr, wb_map) trunc_page((vm_offset_t)wb_addr), 0, VM_PROT_READ | VM_PROT_WRITE); - if(wb_rc != KERN_SUCCESS) + if (wb_rc != 0) return (wb_rc); #ifdef DEBUG if (mmudebug) @@ -830,7 +828,7 @@ _write_back (wb, wb_sts, wb_data, wb_addr, wb_map) trunc_page((vm_offset_t)wb_addr + wb_extra_page), 0, VM_PROT_READ | VM_PROT_WRITE); - if(wb_rc != KERN_SUCCESS) + if (wb_rc != 0) return (wb_rc); } #ifdef DEBUG @@ -871,7 +869,7 @@ _write_back (wb, wb_sts, wb_data, wb_addr, wb_map) curpcb->pcb_onfault = NULL; if ((wb_sts & WBS_TMMASK) != FC_USERD) asm volatile ("movec %0,%%dfc\n" : : "d" (FC_USERD)); - return (KERN_SUCCESS); + return 0; } /* diff --git a/sys/arch/amiga/dev/clock.c b/sys/arch/amiga/dev/clock.c index 3513b1feda4..dc11f1f88f8 100644 --- a/sys/arch/amiga/dev/clock.c +++ b/sys/arch/amiga/dev/clock.c @@ -1,4 +1,4 @@ -/* $NetBSD: clock.c,v 1.35 2000/06/29 08:44:05 mrg Exp $ */ +/* $NetBSD: clock.c,v 1.36 2001/03/15 06:10:35 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -478,8 +478,8 @@ clockunmmap(dev, addr, p) if (addr == 0) return(EINVAL); /* XXX: how do we deal with this? */ - rv = vm_deallocate(p->p_vmspace->vm_map, (vm_offset_t)addr, PAGE_SIZE); - return(rv == KERN_SUCCESS ? 0 : EINVAL); + uvm_deallocate(p->p_vmspace->vm_map, (vm_offset_t)addr, PAGE_SIZE); + return 0; } startclock() diff --git a/sys/arch/amiga/dev/gayle_pcmcia.c b/sys/arch/amiga/dev/gayle_pcmcia.c index a38f00df1b2..88c63bc731b 100644 --- a/sys/arch/amiga/dev/gayle_pcmcia.c +++ b/sys/arch/amiga/dev/gayle_pcmcia.c @@ -1,4 +1,4 @@ -/* $NetBSD: gayle_pcmcia.c,v 1.7 2001/02/11 09:54:48 is Exp $ */ +/* $NetBSD: gayle_pcmcia.c,v 1.8 2001/03/15 06:10:35 chs Exp $ */ /* public domain */ @@ -131,7 +131,7 @@ pccard_attach(parent, myself, aux) UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, 0)); - if (ret != KERN_SUCCESS) { + if (ret != 0) { printf("attach failed (no virtual memory)\n"); return; } diff --git a/sys/arch/amigappc/amigappc/machdep.c b/sys/arch/amigappc/amigappc/machdep.c index 31db1fc44bd..54b8183da19 100644 --- a/sys/arch/amigappc/amigappc/machdep.c +++ b/sys/arch/amigappc/amigappc/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.9 2001/02/24 22:39:19 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.10 2001/03/15 06:10:35 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -768,7 +768,7 @@ cpu_startup() minaddr = 0; if (uvm_map(kernel_map, (vaddr_t *)&minaddr, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, - UVM_INH_NONE, UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) { + UVM_INH_NONE, UVM_ADV_NORMAL, 0)) != 0) { panic("startup: cannot allocate VM for buffers"); } buffers = (char *)minaddr; diff --git a/sys/arch/arc/arc/machdep.c b/sys/arch/arc/arc/machdep.c index 77db8630ed9..2d856d53df8 100644 --- a/sys/arch/arc/arc/machdep.c +++ b/sys/arch/arc/arc/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.49 2001/02/17 04:27:53 tsutsui Exp $ */ +/* $NetBSD: machdep.c,v 1.50 2001/03/15 06:10:35 chs Exp $ */ /* $OpenBSD: machdep.c,v 1.36 1999/05/22 21:22:19 weingart Exp $ */ /* @@ -1105,7 +1105,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; diff --git a/sys/arch/arm/arm32/pmap.c b/sys/arch/arm/arm32/pmap.c index 4aebc90e052..51e1c222ec9 100644 --- a/sys/arch/arm/arm32/pmap.c +++ b/sys/arch/arm/arm32/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.3 2001/03/04 19:05:55 matt Exp $ */ +/* $NetBSD: pmap.c,v 1.4 2001/03/15 06:10:35 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -1986,10 +1986,6 @@ pmap_enter(pmap, va, pa, prot, flags) PDEBUG(5, printf("pmap_enter: V%08lx P%08lx in pmap %p prot=%08x, wired = %d\n", va, pa, pmap, prot, wired)); - /* Valid pmap ? */ - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* Valid address ? */ if (va >= (KERNEL_VM_BASE + KERNEL_VM_SIZE)) @@ -2170,7 +2166,7 @@ pmap_enter(pmap, va, pa, prot, flags) PDEBUG(5, printf("pmap_enter: pte = V%p %08x\n", pte, *pte)); - return (KERN_SUCCESS); + return 0; } void diff --git a/sys/arch/arm26/arm26/except.c b/sys/arch/arm26/arm26/except.c index 2d064f78418..333c1279a08 100644 --- a/sys/arch/arm26/arm26/except.c +++ b/sys/arch/arm26/arm26/except.c @@ -1,4 +1,4 @@ -/* $NetBSD: except.c,v 1.29 2001/03/08 21:30:35 bjh21 Exp $ */ +/* $NetBSD: except.c,v 1.30 2001/03/15 06:10:36 chs Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 Ben Harris * All rights reserved. @@ -32,7 +32,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: except.c,v 1.29 2001/03/08 21:30:35 bjh21 Exp $"); +__KERNEL_RCSID(0, "$NetBSD: except.c,v 1.30 2001/03/15 06:10:36 chs Exp $"); #include "opt_cputypes.h" #include "opt_ddb.h" @@ -447,20 +447,20 @@ void do_fault(struct trapframe *tf, struct proc *p, vm_map_t map, vaddr_t va, vm_prot_t atype) { - int ret; + int error; struct pcb *curpcb; if (pmap_fault(map->pmap, va, atype)) return; for (;;) { - ret = uvm_fault(map, va, 0, atype); - if (ret != KERN_RESOURCE_SHORTAGE) + error = uvm_fault(map, va, 0, atype); + if (error != ENOMEM) break; log(LOG_WARNING, "pid %d: VM shortage, sleeping\n", p->p_pid); tsleep(&lbolt, PVM, "abtretry", 0); } - if (ret != KERN_SUCCESS) { + if (error != 0) { #ifdef DEBUG printf("unhandled fault at %p (ret = %d)\n", (void *)va, ret); printregs(tf); diff --git a/sys/arch/arm26/arm26/machdep.c b/sys/arch/arm26/arm26/machdep.c index 541fd149381..674562911df 100644 --- a/sys/arch/arm26/arm26/machdep.c +++ b/sys/arch/arm26/arm26/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.5 2000/09/13 15:00:17 thorpej Exp $ */ +/* $NetBSD: machdep.c,v 1.6 2001/03/15 06:10:36 chs Exp $ */ /*- * Copyright (c) 1998 Ben Harris @@ -33,7 +33,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.5 2000/09/13 15:00:17 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.6 2001/03/15 06:10:36 chs Exp $"); #include <sys/buf.h> #include <sys/mbuf.h> @@ -138,7 +138,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); base = bufpages / nbuf; residual = bufpages % nbuf; diff --git a/sys/arch/arm26/arm26/pmap.c b/sys/arch/arm26/arm26/pmap.c index 128ebb896f0..12f94155f41 100644 --- a/sys/arch/arm26/arm26/pmap.c +++ b/sys/arch/arm26/arm26/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.17 2001/02/17 19:09:51 bjh21 Exp $ */ +/* $NetBSD: pmap.c,v 1.18 2001/03/15 06:10:36 chs Exp $ */ /*- * Copyright (c) 1997, 1998, 2000 Ben Harris * All rights reserved. @@ -105,7 +105,7 @@ #include <sys/param.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.17 2001/02/17 19:09:51 bjh21 Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.18 2001/03/15 06:10:36 chs Exp $"); #include <sys/kernel.h> /* for cold */ #include <sys/malloc.h> @@ -640,7 +640,7 @@ pmap_enter(pmap_t pmap, vaddr_t va, paddr_t pa, vm_prot_t prot, int flags) if (pmap->pm_flags & PM_ACTIVE) MEMC_WRITE(pv->pv_activate); - return KERN_SUCCESS; + return 0; } /* Remove a range of virtual mappings from a pmap */ diff --git a/sys/arch/arm32/arm32/fault.c b/sys/arch/arm32/arm32/fault.c index 2b2a6f5d877..25a4efada2c 100644 --- a/sys/arch/arm32/arm32/fault.c +++ b/sys/arch/arm32/arm32/fault.c @@ -1,4 +1,4 @@ -/* $NetBSD: fault.c,v 1.51 2001/03/04 19:05:56 matt Exp $ */ +/* $NetBSD: fault.c,v 1.52 2001/03/15 06:10:36 chs Exp $ */ /* * Copyright (c) 1994-1997 Mark Brinicombe. @@ -419,7 +419,7 @@ copyfault: pcb->pcb_onfault = NULL; rv = uvm_fault(map, va, 0, ftype); pcb->pcb_onfault = onfault; - if (rv == KERN_SUCCESS) + if (rv == 0) goto out; if (user == 0) { @@ -431,7 +431,7 @@ copyfault: } report_abort("", fault_status, fault_address, fault_pc); - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: " "out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? @@ -612,16 +612,14 @@ cowfault(va) vaddr_t va; { struct vmspace *vm; + int error; if (va >= VM_MAXUSER_ADDRESS) return (EFAULT); vm = curproc->p_vmspace; - if (uvm_fault(&vm->vm_map, va, 0, VM_PROT_READ | VM_PROT_WRITE) - != KERN_SUCCESS) - return (EFAULT); - - return (0); + error = uvm_fault(&vm->vm_map, va, 0, VM_PROT_READ | VM_PROT_WRITE); + return error; } /* End of fault.c */ diff --git a/sys/arch/arm32/arm32/machdep.c b/sys/arch/arm32/arm32/machdep.c index 00ce8c2737e..e3a83b41c75 100644 --- a/sys/arch/arm32/arm32/machdep.c +++ b/sys/arch/arm32/arm32/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.89 2001/03/04 23:25:01 bjh21 Exp $ */ +/* $NetBSD: machdep.c,v 1.90 2001/03/15 06:10:36 chs Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -394,7 +394,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(bufsize), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate UVM space for buffers"); minaddr = (vaddr_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { diff --git a/sys/arch/atari/atari/machdep.c b/sys/arch/atari/atari/machdep.c index fd34d48adf9..c28543d05e4 100644 --- a/sys/arch/atari/atari/machdep.c +++ b/sys/arch/atari/atari/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.106 2001/02/09 21:47:46 leo Exp $ */ +/* $NetBSD: machdep.c,v 1.107 2001/03/15 06:10:37 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -226,7 +226,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { @@ -288,8 +288,7 @@ cpu_startup() * XXX This is bogus; should just fix KERNBASE and * XXX VM_MIN_KERNEL_ADDRESS, but not right now. */ - if (uvm_map_protect(kernel_map, 0, NBPG, UVM_PROT_NONE, TRUE) - != KERN_SUCCESS) + if (uvm_map_protect(kernel_map, 0, NBPG, UVM_PROT_NONE, TRUE) != 0) panic("can't mark page 0 off-limits"); /* @@ -300,7 +299,7 @@ cpu_startup() * XXX of NBPG. */ if (uvm_map_protect(kernel_map, NBPG, m68k_round_page(&etext), - UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != KERN_SUCCESS) + UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != 0) panic("can't protect kernel text"); #ifdef DEBUG diff --git a/sys/arch/atari/atari/pmap.c b/sys/arch/atari/atari/pmap.c index ff3fb707a89..0661c35370b 100644 --- a/sys/arch/atari/atari/pmap.c +++ b/sys/arch/atari/atari/pmap.c @@ -476,14 +476,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, ATARI_KPTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -575,11 +575,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1106,11 +1104,6 @@ pmap_enter(pmap, va, pa, prot, flags) if (pmapdebug & (PDB_FOLLOW|PDB_ENTER)) printf("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired); -#endif - if (pmap == NULL) - return (KERN_SUCCESS); - -#ifdef DEBUG if (pmap == pmap_kernel()) enter_stats.kernel++; else @@ -1344,7 +1337,7 @@ validate: } #endif - return (KERN_SUCCESS); + return 0; } void @@ -2516,7 +2509,7 @@ pmap_enter_ptpage(pmap, va) #endif s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/atari/atari/trap.c b/sys/arch/atari/atari/trap.c index 8c1854112fa..04b568b2344 100644 --- a/sys/arch/atari/atari/trap.c +++ b/sys/arch/atari/atari/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.57 2000/12/23 09:35:51 jdolecek Exp $ */ +/* $NetBSD: trap.c,v 1.58 2001/03/15 06:10:37 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -625,16 +625,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 if (cputype == CPU_68040) @@ -656,7 +656,7 @@ trap(type, code, v, frame) panictrap(type, code, v, &frame); } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/bebox/bebox/machdep.c b/sys/arch/bebox/bebox/machdep.c index 5ef01b3bb8c..bec84ae7a95 100644 --- a/sys/arch/bebox/bebox/machdep.c +++ b/sys/arch/bebox/bebox/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.59 2001/02/24 22:39:16 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.60 2001/03/15 06:10:38 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -490,7 +490,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(sz), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/cobalt/cobalt/machdep.c b/sys/arch/cobalt/cobalt/machdep.c index 02136b4512d..f46178148a3 100644 --- a/sys/arch/cobalt/cobalt/machdep.c +++ b/sys/arch/cobalt/cobalt/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.26 2001/02/05 13:18:28 tsutsui Exp $ */ +/* $NetBSD: machdep.c,v 1.27 2001/03/15 06:10:38 chs Exp $ */ /* * Copyright (c) 2000 Soren S. Jorvang. All rights reserved. @@ -253,7 +253,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/hp300/dev/grf.c b/sys/arch/hp300/dev/grf.c index 0d69f1a14c5..7d005dc0af6 100644 --- a/sys/arch/hp300/dev/grf.c +++ b/sys/arch/hp300/dev/grf.c @@ -1,4 +1,4 @@ -/* $NetBSD: grf.c,v 1.37 2000/06/29 08:23:02 mrg Exp $ */ +/* $NetBSD: grf.c,v 1.38 2001/03/15 06:10:38 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -664,9 +664,8 @@ grfunmap(dev, addr, p) return(EINVAL); /* XXX: how do we deal with this? */ (void) (*gp->g_sw->gd_mode)(gp, GM_UNMAP, 0); size = round_page(gp->g_display.gd_regsize + gp->g_display.gd_fbsize); - rv = uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)addr, - (vaddr_t)addr + size); - return(rv == KERN_SUCCESS ? 0 : EINVAL); + uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)addr, (vaddr_t)addr + size); + return 0; } #ifdef COMPAT_HPUX diff --git a/sys/arch/hp300/hp300/machdep.c b/sys/arch/hp300/hp300/machdep.c index 6c1ad02f76f..12b5ae3709b 100644 --- a/sys/arch/hp300/hp300/machdep.c +++ b/sys/arch/hp300/hp300/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.144 2001/01/02 04:28:38 simonb Exp $ */ +/* $NetBSD: machdep.c,v 1.145 2001/03/15 06:10:38 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -342,7 +342,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; @@ -407,8 +407,7 @@ cpu_startup() * XXX This is bogus; should just fix KERNBASE and * XXX VM_MIN_KERNEL_ADDRESS, but not right now. */ - if (uvm_map_protect(kernel_map, 0, NBPG, UVM_PROT_NONE, TRUE) - != KERN_SUCCESS) + if (uvm_map_protect(kernel_map, 0, NBPG, UVM_PROT_NONE, TRUE) != 0) panic("can't mark page 0 off-limits"); /* @@ -419,7 +418,7 @@ cpu_startup() * XXX of NBPG. */ if (uvm_map_protect(kernel_map, NBPG, m68k_round_page(&etext), - UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != KERN_SUCCESS) + UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/hp300/hp300/pmap.c b/sys/arch/hp300/hp300/pmap.c index be839044f9e..2f602329b37 100644 --- a/sys/arch/hp300/hp300/pmap.c +++ b/sys/arch/hp300/hp300/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.87 2001/01/14 03:30:55 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.88 2001/03/15 06:10:38 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -403,14 +403,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, HP_MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -484,11 +484,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1164,9 +1162,6 @@ pmap_enter(pmap, va, pa, prot, flags) ("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired)); - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* * pmap_enter() should never be used for CADDR1 and CADDR2. @@ -1423,7 +1418,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } void @@ -2027,9 +2022,9 @@ pmap_mapmulti(pmap, va) if (*ste == SG_NV && (*bste & SG_V)) { *ste = *bste; TBIAU(); - return (KERN_SUCCESS); + return 0; } - return (KERN_INVALID_ADDRESS); + return EFAULT; } #endif /* COMPAT_HPUX */ @@ -2598,7 +2593,7 @@ pmap_enter_ptpage(pmap, va) ("enter: about to fault UPT pg at %lx\n", va)); s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/hp300/hp300/trap.c b/sys/arch/hp300/hp300/trap.c index 8a87710d3f1..b07a8d56b02 100644 --- a/sys/arch/hp300/hp300/trap.c +++ b/sys/arch/hp300/hp300/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.86 2001/01/15 20:19:54 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.87 2001/03/15 06:10:39 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -604,10 +604,10 @@ trap(type, code, v, frame) vaddr_t bva; rv = pmap_mapmulti(map->pmap, va); - if (rv != KERN_SUCCESS) { + if (rv != 0) { bva = HPMMBASEADDR(va); rv = uvm_fault(map, bva, 0, ftype); - if (rv == KERN_SUCCESS) + if (rv == 0) (void) pmap_mapmulti(map->pmap, va); } } else @@ -627,16 +627,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 if (cputype == CPU_68040) @@ -656,7 +656,7 @@ trap(type, code, v, frame) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/hpcarm/hpcarm/fault.c b/sys/arch/hpcarm/hpcarm/fault.c index b7b61c2ca0d..086743e342a 100644 --- a/sys/arch/hpcarm/hpcarm/fault.c +++ b/sys/arch/hpcarm/hpcarm/fault.c @@ -1,4 +1,4 @@ -/* $NetBSD: fault.c,v 1.2 2001/02/28 18:15:44 bjh21 Exp $ */ +/* $NetBSD: fault.c,v 1.3 2001/03/15 06:10:39 chs Exp $ */ /* * Copyright (c) 1994-1997 Mark Brinicombe. @@ -427,7 +427,7 @@ copyfault: pcb->pcb_onfault = NULL; rv = uvm_fault(map, va, 0, ftype); pcb->pcb_onfault = onfault; - if (rv == KERN_SUCCESS) + if (rv == 0) goto out; if (user == 0) { @@ -439,7 +439,7 @@ copyfault: } report_abort("", fault_status, fault_address, fault_pc); - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: " "out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? @@ -625,11 +625,8 @@ cowfault(va) return (EFAULT); vm = curproc->p_vmspace; - if (uvm_fault(&vm->vm_map, va, 0, VM_PROT_READ | VM_PROT_WRITE) - != KERN_SUCCESS) - return (EFAULT); - - return (0); + error = uvm_fault(&vm->vm_map, va, 0, VM_PROT_READ | VM_PROT_WRITE); + return error; } /* End of fault.c */ diff --git a/sys/arch/hpcarm/hpcarm/machdep.c b/sys/arch/hpcarm/hpcarm/machdep.c index 419462a9c1f..93ee42ebf67 100644 --- a/sys/arch/hpcarm/hpcarm/machdep.c +++ b/sys/arch/hpcarm/hpcarm/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.5 2001/03/09 12:13:15 toshii Exp $ */ +/* $NetBSD: machdep.c,v 1.6 2001/03/15 06:10:39 chs Exp $ */ /* * Copyright (c) 1994-1998 Mark Brinicombe. @@ -393,7 +393,7 @@ cpu_startup() if (uvm_map(kernel_map, (vm_offset_t *)&buffers, round_page(bufsize), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate UVM space for buffers"); minaddr = (vm_offset_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { diff --git a/sys/arch/hpcmips/hpcmips/machdep.c b/sys/arch/hpcmips/hpcmips/machdep.c index 1bb449d33d1..5d5dfa8015f 100644 --- a/sys/arch/hpcmips/hpcmips/machdep.c +++ b/sys/arch/hpcmips/hpcmips/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.41 2001/02/09 20:42:28 uch Exp $ */ +/* $NetBSD: machdep.c,v 1.42 2001/03/15 06:10:39 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -43,7 +43,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.41 2001/02/09 20:42:28 uch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.42 2001/03/15 06:10:39 chs Exp $"); /* from: Utah Hdr: machdep.c 1.63 91/04/24 */ #include "opt_vr41x1.h" @@ -487,7 +487,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; diff --git a/sys/arch/i386/i386/machdep.c b/sys/arch/i386/i386/machdep.c index da388354759..852d49c6437 100644 --- a/sys/arch/i386/i386/machdep.c +++ b/sys/arch/i386/i386/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.429 2001/02/11 19:03:50 chs Exp $ */ +/* $NetBSD: machdep.c,v 1.430 2001/03/15 06:10:40 chs Exp $ */ /*- * Copyright (c) 1996, 1997, 1998, 2000 The NetBSD Foundation, Inc. @@ -405,7 +405,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { diff --git a/sys/arch/i386/i386/pmap.c b/sys/arch/i386/i386/pmap.c index 034528e5902..9e40d3e23bf 100644 --- a/sys/arch/i386/i386/pmap.c +++ b/sys/arch/i386/i386/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.118 2001/01/14 03:30:28 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.119 2001/03/15 06:10:40 chs Exp $ */ /* * @@ -1322,9 +1322,8 @@ pmap_free_pvpage() /* unmap the page */ dead_entries = NULL; - (void)uvm_unmap_remove(map, (vaddr_t) pvp, - ((vaddr_t) pvp) + PAGE_SIZE, - &dead_entries); + uvm_unmap_remove(map, (vaddr_t)pvp, ((vaddr_t)pvp) + PAGE_SIZE, + &dead_entries); vm_map_unlock(map); if (dead_entries != NULL) @@ -2848,7 +2847,7 @@ pmap_enter(pmap, va, pa, prot, flags) ptp = pmap_get_ptp(pmap, pdei(va)); if (ptp == NULL) { if (flags & PMAP_CANFAIL) { - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } panic("pmap_enter: get ptp failed"); } @@ -2948,7 +2947,7 @@ pmap_enter(pmap, va, pa, prot, flags) pve = pmap_alloc_pv(pmap, ALLOCPV_NEED); if (pve == NULL) { if (flags & PMAP_CANFAIL) { - error = KERN_RESOURCE_SHORTAGE; + error = ENOMEM; goto out; } panic("pmap_enter: no pv entries available"); @@ -2986,7 +2985,7 @@ enter_now: if ((opte & ~(PG_M|PG_U)) != npte && pmap_is_curpmap(pmap)) pmap_update_pg(va); - error = KERN_SUCCESS; + error = 0; out: pmap_unmap_ptes(pmap); diff --git a/sys/arch/i386/i386/trap.c b/sys/arch/i386/i386/trap.c index a9b4874074b..e2619fb6893 100644 --- a/sys/arch/i386/i386/trap.c +++ b/sys/arch/i386/i386/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.154 2001/02/05 11:12:05 chs Exp $ */ +/* $NetBSD: trap.c,v 1.155 2001/03/15 06:10:40 chs Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. @@ -352,7 +352,7 @@ trap(frame) register vaddr_t va; register struct vmspace *vm = p->p_vmspace; register vm_map_t map; - int rv; + int error; vm_prot_t ftype; extern vm_map_t kernel_map; unsigned nss; @@ -406,9 +406,9 @@ trap(frame) /* Fault the original page in. */ onfault = p->p_addr->u_pcb.pcb_onfault; p->p_addr->u_pcb.pcb_onfault = NULL; - rv = uvm_fault(map, va, 0, ftype); + error = uvm_fault(map, va, 0, ftype); p->p_addr->u_pcb.pcb_onfault = onfault; - if (rv == KERN_SUCCESS) { + if (error == 0) { if (nss > vm->vm_ssize) vm->vm_ssize = nss; @@ -421,10 +421,10 @@ trap(frame) if (pcb->pcb_onfault != 0) goto copyfault; printf("uvm_fault(%p, 0x%lx, 0, %d) -> %x\n", - map, va, ftype, rv); + map, va, ftype, error); goto we_re_toast; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (error == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? @@ -518,8 +518,7 @@ trapwrite(addr) nss = 0; } - if (uvm_fault(&vm->vm_map, va, 0, VM_PROT_READ | VM_PROT_WRITE) - != KERN_SUCCESS) + if (uvm_fault(&vm->vm_map, va, 0, VM_PROT_READ | VM_PROT_WRITE) != 0) return 1; if (nss > vm->vm_ssize) diff --git a/sys/arch/luna68k/luna68k/machdep.c b/sys/arch/luna68k/luna68k/machdep.c index 03c370a1a97..f1e76d11881 100644 --- a/sys/arch/luna68k/luna68k/machdep.c +++ b/sys/arch/luna68k/luna68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.13 2000/12/12 04:07:35 nisimura Exp $ */ +/* $NetBSD: machdep.c,v 1.14 2001/03/15 06:10:41 chs Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.13 2000/12/12 04:07:35 nisimura Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.14 2001/03/15 06:10:41 chs Exp $"); #include "opt_ddb.h" @@ -279,7 +279,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { @@ -347,7 +347,7 @@ cpu_startup() * XXX but not right now. */ if (uvm_map_protect(kernel_map, 0, round_page((vaddr_t)&kernel_text), - UVM_PROT_NONE, TRUE) != KERN_SUCCESS) + UVM_PROT_NONE, TRUE) != 0) panic("can't mark pre-text pages off-limits"); /* @@ -356,7 +356,7 @@ cpu_startup() */ if (uvm_map_protect(kernel_map, trunc_page((vaddr_t)&kernel_text), trunc_page((vaddr_t)&etext), UVM_PROT_READ|UVM_PROT_EXEC, TRUE) - != KERN_SUCCESS) + != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/luna68k/luna68k/pmap.c b/sys/arch/luna68k/luna68k/pmap.c index dc6608f3e0a..459f21dd0fb 100644 --- a/sys/arch/luna68k/luna68k/pmap.c +++ b/sys/arch/luna68k/luna68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.7 2001/01/14 03:30:01 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.8 2001/03/15 06:10:41 chs Exp $ */ /*- * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. @@ -377,14 +377,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -458,11 +458,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1081,9 +1079,6 @@ pmap_enter(pmap, va, pa, prot, flags) ("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired)); - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* * pmap_enter() should never be used for CADDR1 and CADDR2. @@ -1272,7 +1267,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } void @@ -2317,7 +2312,7 @@ pmap_enter_ptpage(pmap, va) ("enter: about to fault UPT pg at %lx\n", va)); s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/luna68k/luna68k/trap.c b/sys/arch/luna68k/luna68k/trap.c index d65fe87d87d..70f1ef19f69 100644 --- a/sys/arch/luna68k/luna68k/trap.c +++ b/sys/arch/luna68k/luna68k/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.13 2001/01/15 20:19:54 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.14 2001/03/15 06:10:41 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -44,7 +44,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.13 2001/01/15 20:19:54 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.14 2001/03/15 06:10:41 chs Exp $"); #include "opt_ddb.h" #include "opt_execfmt.h" @@ -551,16 +551,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 if (cputype == CPU_68040) @@ -580,7 +580,7 @@ trap(type, code, v, frame) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/mac68k/dev/grf_compat.c b/sys/arch/mac68k/dev/grf_compat.c index b6e474efc0b..7f2fba2298c 100644 --- a/sys/arch/mac68k/dev/grf_compat.c +++ b/sys/arch/mac68k/dev/grf_compat.c @@ -1,4 +1,4 @@ -/* $NetBSD: grf_compat.c,v 1.5 2000/06/29 08:15:11 mrg Exp $ */ +/* $NetBSD: grf_compat.c,v 1.6 2001/03/15 06:10:41 chs Exp $ */ /* * Copyright (C) 1999 Scott Reynolds @@ -395,9 +395,6 @@ grfunmap(dev, sc, addr, p) return (-1); size = m68k_round_page(sc->sc_dc->dc_offset + sc->sc_dc->dc_size); - - rv = uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)addr, - (vaddr_t)addr + size); - - return (rv == KERN_SUCCESS ? 0 : EINVAL); + uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)addr, (vaddr_t)addr + size); + return 0; } diff --git a/sys/arch/mac68k/mac68k/machdep.c b/sys/arch/mac68k/mac68k/machdep.c index 74d91f38b89..21bd18fa590 100644 --- a/sys/arch/mac68k/mac68k/machdep.c +++ b/sys/arch/mac68k/mac68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.259 2000/12/05 21:38:38 scottr Exp $ */ +/* $NetBSD: machdep.c,v 1.260 2001/03/15 06:10:41 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -424,7 +424,7 @@ cpu_startup(void) if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, - UVM_INH_NONE, UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_INH_NONE, UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/mac68k/mac68k/pmap.c b/sys/arch/mac68k/mac68k/pmap.c index e6d7fe53d95..acba9eacb54 100644 --- a/sys/arch/mac68k/mac68k/pmap.c +++ b/sys/arch/mac68k/mac68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.70 2001/02/12 22:00:08 briggs Exp $ */ +/* $NetBSD: pmap.c,v 1.71 2001/03/15 06:10:42 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -397,14 +397,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t)Sysmap; if (uvm_map(kernel_map, &addr, MAC_MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -478,11 +478,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1110,9 +1108,6 @@ pmap_enter(pmap, va, pa, prot, flags) ("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired)); - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* * pmap_enter() should never be used for CADDR1 and CADDR2. @@ -1299,7 +1294,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } void @@ -2340,7 +2335,7 @@ pmap_enter_ptpage(pmap, va) ("enter: about to fault UPT pg at %lx\n", va)); s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/mac68k/mac68k/trap.c b/sys/arch/mac68k/mac68k/trap.c index 0bb898db972..8b5bab4d6a7 100644 --- a/sys/arch/mac68k/mac68k/trap.c +++ b/sys/arch/mac68k/mac68k/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.91 2001/01/17 19:03:14 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.92 2001/03/15 06:10:42 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -597,16 +597,16 @@ copyfault: */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { u_int nss; nss = btoc(USRSTACK - (u_int)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #if defined(M68040) if (mmutype == MMU_68040) @@ -626,7 +626,7 @@ copyfault: goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/macppc/macppc/machdep.c b/sys/arch/macppc/macppc/machdep.c index 8bf36ea7ffa..b0b55db6c8d 100644 --- a/sys/arch/macppc/macppc/machdep.c +++ b/sys/arch/macppc/macppc/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.90 2001/02/24 22:39:18 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.91 2001/03/15 06:10:42 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -458,7 +458,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&minaddr, round_page(sz), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); buffers = (char *)minaddr; base = bufpages / nbuf; diff --git a/sys/arch/mips/mips/pmap.c b/sys/arch/mips/mips/pmap.c index 7e2932f6a1c..cdd7a810880 100644 --- a/sys/arch/mips/mips/pmap.c +++ b/sys/arch/mips/mips/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.117 2001/01/14 03:28:57 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.118 2001/03/15 06:10:43 chs Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -78,7 +78,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.117 2001/01/14 03:28:57 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.118 2001/03/15 06:10:43 chs Exp $"); /* * Manages physical address maps. @@ -1233,7 +1233,7 @@ pmap_enter(pmap, va, pa, prot, flags) * Update the same virtual address entry. */ MachTLBUpdate(va, npte); - return (KERN_SUCCESS); + return 0; } if (!(pte = pmap_segmap(pmap, va))) { @@ -1241,7 +1241,7 @@ pmap_enter(pmap, va, pa, prot, flags) UVM_PGA_USERESERVE|UVM_PGA_ZERO); if (mem == NULL) { if (flags & PMAP_CANFAIL) - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; panic("pmap_enter: cannot allocate segmap"); } @@ -1325,7 +1325,7 @@ pmap_enter(pmap, va, pa, prot, flags) } #endif - return (KERN_SUCCESS); + return 0; } void diff --git a/sys/arch/mips/mips/trap.c b/sys/arch/mips/mips/trap.c index a96658eedde..320b1ab9872 100644 --- a/sys/arch/mips/mips/trap.c +++ b/sys/arch/mips/mips/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.160 2001/01/16 06:01:27 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.161 2001/03/15 06:10:43 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -44,7 +44,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.160 2001/01/16 06:01:27 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.161 2001/03/15 06:10:43 chs Exp $"); #include "opt_cputype.h" /* which mips CPU levels do we support? */ #include "opt_ktrace.h" @@ -358,17 +358,17 @@ trap(status, cause, vaddr, opc, frame) * error. */ if ((caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; } - else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type & T_USER) { userret(p); } @@ -376,15 +376,14 @@ trap(status, cause, vaddr, opc, frame) } if ((type & T_USER) == 0) goto copyfault; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? p->p_ucred->cr_uid : -1); sig = SIGKILL; } else { - sig = (rv == KERN_PROTECTION_FAILURE) ? - SIGBUS : SIGSEGV; + sig = (rv == EACCES) ? SIGBUS : SIGSEGV; } ucode = vaddr; break; /* SIGNAL */ @@ -396,7 +395,7 @@ trap(status, cause, vaddr, opc, frame) va = trunc_page(vaddr); rv = uvm_fault(kernel_map, va, 0, ftype); - if (rv == KERN_SUCCESS) + if (rv == 0) return; /* KERN */ /*FALLTHROUGH*/ } @@ -472,7 +471,7 @@ trap(status, cause, vaddr, opc, frame) ea = round_page(va + sizeof(int) - 1); rv = uvm_map_protect(&p->p_vmspace->vm_map, sa, ea, VM_PROT_DEFAULT, FALSE); - if (rv == KERN_SUCCESS) { + if (rv == 0) { rv = suiword((void *)va, MIPS_BREAK_SSTEP); (void)uvm_map_protect(&p->p_vmspace->vm_map, sa, ea, VM_PROT_READ|VM_PROT_EXECUTE, FALSE); @@ -747,7 +746,7 @@ mips_singlestep(p) ea = round_page(va + sizeof(int) - 1); rv = uvm_map_protect(&p->p_vmspace->vm_map, sa, ea, VM_PROT_DEFAULT, FALSE); - if (rv == KERN_SUCCESS) { + if (rv == 0) { rv = suiword((void *)va, MIPS_BREAK_SSTEP); (void)uvm_map_protect(&p->p_vmspace->vm_map, sa, ea, VM_PROT_READ|VM_PROT_EXECUTE, FALSE); diff --git a/sys/arch/mipsco/mipsco/machdep.c b/sys/arch/mipsco/mipsco/machdep.c index 977559df2c9..a12d2960299 100644 --- a/sys/arch/mipsco/mipsco/machdep.c +++ b/sys/arch/mipsco/mipsco/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.18 2001/03/11 09:19:31 wdk Exp $ */ +/* $NetBSD: machdep.c,v 1.19 2001/03/15 06:10:43 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -43,7 +43,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.18 2001/03/11 09:19:31 wdk Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.19 2001/03/15 06:10:43 chs Exp $"); /* from: Utah Hdr: machdep.c 1.63 91/04/24 */ @@ -410,7 +410,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/mvme68k/mvme68k/machdep.c b/sys/arch/mvme68k/mvme68k/machdep.c index 63011d100fb..a6b8c609fc5 100644 --- a/sys/arch/mvme68k/mvme68k/machdep.c +++ b/sys/arch/mvme68k/mvme68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.77 2000/12/02 13:57:05 scw Exp $ */ +/* $NetBSD: machdep.c,v 1.78 2001/03/15 06:10:43 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -451,7 +451,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; @@ -517,7 +517,7 @@ cpu_startup() * XXX but not right now. */ if (uvm_map_protect(kernel_map, 0, round_page((vaddr_t)&kernel_text), - UVM_PROT_NONE, TRUE) != KERN_SUCCESS) + UVM_PROT_NONE, TRUE) != 0) panic("can't mark pre-text pages off-limits"); /* @@ -526,7 +526,7 @@ cpu_startup() */ if (uvm_map_protect(kernel_map, trunc_page((vaddr_t)&kernel_text), round_page((vaddr_t)&etext), UVM_PROT_READ|UVM_PROT_EXEC, TRUE) - != KERN_SUCCESS) + != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/mvme68k/mvme68k/pmap.c b/sys/arch/mvme68k/mvme68k/pmap.c index 0d3d0d63317..832d59a0981 100644 --- a/sys/arch/mvme68k/mvme68k/pmap.c +++ b/sys/arch/mvme68k/mvme68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.51 2001/01/14 03:28:26 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.52 2001/03/15 06:10:44 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -390,14 +390,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, HP_MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -471,11 +471,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1129,9 +1127,6 @@ pmap_enter(pmap, va, pa, prot, flags) ("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired)); - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* * pmap_enter() should never be used for CADDR1 and CADDR2. @@ -1337,7 +1332,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } void @@ -2017,9 +2012,9 @@ pmap_mapmulti(pmap, va) if (*ste == SG_NV && (*bste & SG_V)) { *ste = *bste; TBIAU(); - return (KERN_SUCCESS); + return 0; } - return (KERN_INVALID_ADDRESS); + return EFAULT; } #endif /* COMPAT_HPUX */ @@ -2562,7 +2557,7 @@ pmap_enter_ptpage(pmap, va) ("enter: about to fault UPT pg at %lx\n", va)); s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/mvme68k/mvme68k/trap.c b/sys/arch/mvme68k/mvme68k/trap.c index 69aecbe7b0e..e1e8e7cbbf4 100644 --- a/sys/arch/mvme68k/mvme68k/trap.c +++ b/sys/arch/mvme68k/mvme68k/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.54 2000/12/23 09:35:52 jdolecek Exp $ */ +/* $NetBSD: trap.c,v 1.55 2001/03/15 06:10:44 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -632,10 +632,10 @@ trap(type, code, v, frame) vaddr_t bva; rv = pmap_mapmulti(map->pmap, va); - if (rv != KERN_SUCCESS) { + if (rv != 0) { bva = HPMMBASEADDR(va); rv = uvm_fault(map, bva, 0, ftype); - if (rv == KERN_SUCCESS) + if (rv == 0) (void) pmap_mapmulti(map->pmap, va); } } else @@ -655,16 +655,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 #if defined(M68030) || defined(M68060) @@ -686,7 +686,7 @@ trap(type, code, v, frame) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/news68k/news68k/machdep.c b/sys/arch/news68k/news68k/machdep.c index e3bbf7a513a..27253291212 100644 --- a/sys/arch/news68k/news68k/machdep.c +++ b/sys/arch/news68k/news68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.18 2001/02/25 13:33:54 tsutsui Exp $ */ +/* $NetBSD: machdep.c,v 1.19 2001/03/15 06:10:44 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -250,7 +250,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; @@ -317,7 +317,7 @@ cpu_startup() * XXX VM_MIN_KERNEL_ADDRESS, but not right now. */ if (uvm_map_protect(kernel_map, 0, m68k_round_page(&kernel_text), - UVM_PROT_NONE, TRUE) != KERN_SUCCESS) + UVM_PROT_NONE, TRUE) != 0) panic("can't mark pre-text pages off-limits"); /* @@ -326,8 +326,7 @@ cpu_startup() * */ if (uvm_map_protect(kernel_map, m68k_trunc_page(&kernel_text), - m68k_round_page(&etext), UVM_PROT_READ|UVM_PROT_EXEC, TRUE) - != KERN_SUCCESS) + m68k_round_page(&etext), UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/news68k/news68k/pmap.c b/sys/arch/news68k/news68k/pmap.c index 2a58603542e..fd3b38e2735 100644 --- a/sys/arch/news68k/news68k/pmap.c +++ b/sys/arch/news68k/news68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.9 2001/01/14 03:28:00 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.10 2001/03/15 06:10:44 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -399,14 +399,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -480,11 +480,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1177,9 +1175,6 @@ pmap_enter(pmap, va, pa, prot, flags) ("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired)); - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* * pmap_enter() should never be used for CADDR1 and CADDR2. @@ -1438,7 +1433,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } void @@ -2080,9 +2075,9 @@ pmap_mapmulti(pmap, va) if (*ste == SG_NV && (*bste & SG_V)) { *ste = *bste; TBIAU(); - return (KERN_SUCCESS); + return 0; } - return (KERN_INVALID_ADDRESS); + return EFAULT; } #endif /* COMPAT_HPUX */ @@ -2656,7 +2651,7 @@ pmap_enter_ptpage(pmap, va) ("enter: about to fault UPT pg at %lx\n", va)); s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/news68k/news68k/trap.c b/sys/arch/news68k/news68k/trap.c index 7ac1ec028b4..979567945e9 100644 --- a/sys/arch/news68k/news68k/trap.c +++ b/sys/arch/news68k/news68k/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.13 2001/02/25 13:28:32 tsutsui Exp $ */ +/* $NetBSD: trap.c,v 1.14 2001/03/15 06:10:44 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -563,10 +563,10 @@ trap(type, code, v, frame) vaddr_t bva; rv = pmap_mapmulti(map->pmap, va); - if (rv != KERN_SUCCESS) { + if (rv != 0) { bva = HPMMBASEADDR(va); rv = uvm_fault(map, bva, 0, ftype); - if (rv == KERN_SUCCESS) + if (rv == 0) (void) pmap_mapmulti(map->pmap, va); } } else @@ -586,16 +586,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 if (cputype == CPU_68040) @@ -615,7 +615,7 @@ trap(type, code, v, frame) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/newsmips/newsmips/machdep.c b/sys/arch/newsmips/newsmips/machdep.c index 4549c9a2789..900aba9ca9c 100644 --- a/sys/arch/newsmips/newsmips/machdep.c +++ b/sys/arch/newsmips/newsmips/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.52 2001/02/05 13:10:07 tsutsui Exp $ */ +/* $NetBSD: machdep.c,v 1.53 2001/03/15 06:10:45 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -43,7 +43,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.52 2001/02/05 13:10:07 tsutsui Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.53 2001/03/15 06:10:45 chs Exp $"); /* from: Utah Hdr: machdep.c 1.63 91/04/24 */ @@ -425,7 +425,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/next68k/next68k/machdep.c b/sys/arch/next68k/next68k/machdep.c index 2e0e667928a..66a7a5f1b66 100644 --- a/sys/arch/next68k/next68k/machdep.c +++ b/sys/arch/next68k/next68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.39 2000/09/24 12:32:37 jdolecek Exp $ */ +/* $NetBSD: machdep.c,v 1.40 2001/03/15 06:10:45 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -320,7 +320,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; @@ -386,7 +386,7 @@ cpu_startup() * XXX but not right now. */ if (uvm_map_protect(kernel_map, 0, round_page((vaddr_t)&kernel_text), - UVM_PROT_NONE, TRUE) != KERN_SUCCESS) + UVM_PROT_NONE, TRUE) != 0) panic("can't mark pre-text pages off-limits"); /* @@ -395,7 +395,7 @@ cpu_startup() */ if (uvm_map_protect(kernel_map, trunc_page((vaddr_t)&kernel_text), round_page((vaddr_t)&etext), UVM_PROT_READ|UVM_PROT_EXEC, TRUE) - != KERN_SUCCESS) + != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/next68k/next68k/pmap.c b/sys/arch/next68k/next68k/pmap.c index 53b2a7ee074..0f2804364cc 100644 --- a/sys/arch/next68k/next68k/pmap.c +++ b/sys/arch/next68k/next68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.26 2001/01/14 03:27:19 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.27 2001/03/15 06:10:45 chs Exp $ */ /* * This file was taken from mvme68k/mvme68k/pmap.c @@ -422,28 +422,28 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) monobase; if (uvm_map(kernel_map, &addr, m68k_ptob(MONOMAPSIZE), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) colorbase; if (uvm_map(kernel_map, &addr, m68k_ptob(COLORMAPSIZE), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, HP_MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page tabel isn't big enough @@ -521,11 +521,9 @@ bogons: rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1228,9 +1226,6 @@ pmap_enter(pmap, va, pa, prot, flags) printf("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired); #endif - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef PMAPSTATS if (pmap == pmap_kernel()) enter_stats.kernel++; @@ -1528,7 +1523,7 @@ validate: pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } void @@ -2047,9 +2042,9 @@ pmap_mapmulti(pmap, va) if (*ste == SG_NV && (*bste & SG_V)) { *ste = *bste; TBIAU(); - return (KERN_SUCCESS); + return 0; } - return (KERN_INVALID_ADDRESS); + return EFAULT; } #endif @@ -2678,7 +2673,7 @@ pmap_enter_ptpage(pmap, va) #endif s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/next68k/next68k/trap.c b/sys/arch/next68k/next68k/trap.c index 83454dcde13..9c0d8442bf8 100644 --- a/sys/arch/next68k/next68k/trap.c +++ b/sys/arch/next68k/next68k/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.30 2001/01/15 20:19:56 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.31 2001/03/15 06:10:45 chs Exp $ */ /* * This file was taken from mvme68k/mvme68k/trap.c @@ -612,10 +612,10 @@ trap(type, code, v, frame) vaddr_t bva; rv = pmap_mapmulti(map->pmap, va); - if (rv != KERN_SUCCESS) { + if (rv != 0) { bva = HPMMBASEADDR(va); rv = uvm_fault(map, bva, 0, ftype); - if (rv == KERN_SUCCESS) + if (rv == 0) (void) pmap_mapmulti(map->pmap, va); } } else @@ -635,16 +635,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 if (cputype == CPU_68040) @@ -664,7 +664,7 @@ trap(type, code, v, frame) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/ofppc/ofppc/machdep.c b/sys/arch/ofppc/ofppc/machdep.c index e7667454f8b..1ab578c17be 100644 --- a/sys/arch/ofppc/ofppc/machdep.c +++ b/sys/arch/ofppc/ofppc/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.62 2001/02/24 22:39:19 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.63 2001/03/15 06:10:46 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -399,7 +399,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(sz), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/pc532/pc532/machdep.c b/sys/arch/pc532/pc532/machdep.c index 802c7129045..10f643575ed 100644 --- a/sys/arch/pc532/pc532/machdep.c +++ b/sys/arch/pc532/pc532/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.118 2001/01/15 20:19:56 thorpej Exp $ */ +/* $NetBSD: machdep.c,v 1.119 2001/03/15 06:10:46 chs Exp $ */ /*- * Copyright (c) 1996 Matthias Pfaller. @@ -190,7 +190,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { @@ -250,7 +250,7 @@ cpu_startup() if (uvm_map_protect(kernel_map, ns532_round_page(&kernel_text), ns532_round_page(&etext), - UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != KERN_SUCCESS) + UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != 0) panic("can't protect kernel text"); format_bytes(pbuf, sizeof(pbuf), ptoa(uvmexp.free)); diff --git a/sys/arch/pc532/pc532/pmap.c b/sys/arch/pc532/pc532/pmap.c index 57121ea69ef..f80899fcd6a 100644 --- a/sys/arch/pc532/pc532/pmap.c +++ b/sys/arch/pc532/pc532/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.55 2001/01/22 14:33:29 matthias Exp $ */ +/* $NetBSD: pmap.c,v 1.56 2001/03/15 06:10:46 chs Exp $ */ /* * @@ -1209,9 +1209,8 @@ pmap_free_pvpage() /* unmap the page */ dead_entries = NULL; - (void)uvm_unmap_remove(map, (vaddr_t) pvp, - ((vaddr_t) pvp) + PAGE_SIZE, - &dead_entries); + uvm_unmap_remove(map, (vaddr_t)pvp, ((vaddr_t)pvp) + PAGE_SIZE, + &dead_entries); vm_map_unlock(map); if (dead_entries != NULL) @@ -2572,7 +2571,7 @@ pmap_enter(pmap, va, pa, prot, flags) ptp = pmap_get_ptp(pmap, pdei(va)); if (ptp == NULL) { if (flags & PMAP_CANFAIL) { - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } panic("pmap_enter: get ptp failed"); } @@ -2672,7 +2671,7 @@ pmap_enter(pmap, va, pa, prot, flags) pve = pmap_alloc_pv(pmap, ALLOCPV_NEED); if (pve == NULL) { if (flags & PMAP_CANFAIL) { - error = KERN_RESOURCE_SHORTAGE; + error = ENOMEM; goto out; } panic("pmap_enter: no pv entries available"); @@ -2708,7 +2707,7 @@ enter_now: if ((opte & ~(PG_M|PG_U)) != npte && pmap_is_curpmap(pmap)) pmap_update_pg(va); - error = KERN_SUCCESS; + error = 0; /* * The only time we need to flush the cache is if we execute diff --git a/sys/arch/pc532/pc532/trap.c b/sys/arch/pc532/pc532/trap.c index e579436323a..f7564c82c59 100644 --- a/sys/arch/pc532/pc532/trap.c +++ b/sys/arch/pc532/pc532/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.43 2000/12/19 16:25:53 matthias Exp $ */ +/* $NetBSD: trap.c,v 1.44 2001/03/15 06:10:46 chs Exp $ */ /*- * Copyright (c) 1996 Matthias Pfaller. All rights reserved. @@ -393,14 +393,13 @@ trap(frame) && map != kernel_map) { nss = btoc(USRSTACK-(unsigned)va); if (nss > btoc(p->p_rlimit[RLIMIT_STACK].rlim_cur)) { - rv = KERN_FAILURE; - goto nogo; + nss = 0; } } /* Fault the original page in. */ rv = uvm_fault(map, va, 0, ftype); - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (nss > vm->vm_ssize) vm->vm_ssize = nss; @@ -409,7 +408,6 @@ trap(frame) goto out; } - nogo: if (type == T_ABT) { if (pcb->pcb_onfault != 0) { copyfault: @@ -420,7 +418,7 @@ trap(frame) map, va, ftype, rv); goto we_re_toast; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/pmax/pmax/machdep.c b/sys/arch/pmax/pmax/machdep.c index e9b90d48932..2c481c3f6cd 100644 --- a/sys/arch/pmax/pmax/machdep.c +++ b/sys/arch/pmax/pmax/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.186 2001/01/22 13:56:57 jdolecek Exp $ */ +/* $NetBSD: machdep.c,v 1.187 2001/03/15 06:10:47 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -43,7 +43,7 @@ */ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.186 2001/01/22 13:56:57 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.187 2001/03/15 06:10:47 chs Exp $"); #include "fs_mfs.h" #include "opt_ddb.h" @@ -424,7 +424,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; diff --git a/sys/arch/powerpc/powerpc/pmap.c b/sys/arch/powerpc/powerpc/pmap.c index 634ea46294b..4f466f892d3 100644 --- a/sys/arch/powerpc/powerpc/pmap.c +++ b/sys/arch/powerpc/powerpc/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.35 2001/03/07 08:18:45 tsubai Exp $ */ +/* $NetBSD: pmap.c,v 1.36 2001/03/15 06:10:47 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -1038,7 +1038,7 @@ pmap_enter(pm, va, pa, prot, flags) */ if (pte_insert(idx, &pte)) { splx(s); - return (KERN_SUCCESS); + return 0; } /* @@ -1051,7 +1051,7 @@ pmap_enter(pm, va, pa, prot, flags) LIST_INSERT_HEAD(potable + idx, po, po_list); splx(s); - return (KERN_SUCCESS); + return 0; } void diff --git a/sys/arch/powerpc/powerpc/trap.c b/sys/arch/powerpc/powerpc/trap.c index 3b965bf6b76..2c5c93b0921 100644 --- a/sys/arch/powerpc/powerpc/trap.c +++ b/sys/arch/powerpc/powerpc/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.39 2001/02/12 21:20:32 manu Exp $ */ +/* $NetBSD: trap.c,v 1.40 2001/03/15 06:10:47 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -119,7 +119,7 @@ trap(frame) ftype = VM_PROT_READ; rv = uvm_fault(map, trunc_page(va), 0, ftype); KERNEL_UNLOCK(); - if (rv == KERN_SUCCESS) + if (rv == 0) return; if ((fb = p->p_addr->u_pcb.pcb_onfault) != NULL) { frame->srr0 = (*fb)[0]; @@ -139,13 +139,13 @@ trap(frame) ftype = VM_PROT_READ | VM_PROT_WRITE; else ftype = VM_PROT_READ; - if ((rv = uvm_fault(&p->p_vmspace->vm_map, - trunc_page(frame->dar), 0, ftype)) - == KERN_SUCCESS) { + rv = uvm_fault(&p->p_vmspace->vm_map, trunc_page(frame->dar), + 0, ftype); + if (rv == 0) { KERNEL_PROC_UNLOCK(p); break; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: " "out of swap\n", p->p_pid, p->p_comm, @@ -160,9 +160,9 @@ trap(frame) case EXC_ISI|EXC_USER: KERNEL_PROC_LOCK(p); ftype = VM_PROT_READ | VM_PROT_EXECUTE; - if (uvm_fault(&p->p_vmspace->vm_map, - trunc_page(frame->srr0), 0, ftype) - == KERN_SUCCESS) { + rv = uvm_fault(&p->p_vmspace->vm_map, trunc_page(frame->srr0), + 0, ftype); + if (rv == 0) { KERNEL_PROC_UNLOCK(p); break; } diff --git a/sys/arch/prep/prep/machdep.c b/sys/arch/prep/prep/machdep.c index 363ea3ab6bb..061fa2b8953 100644 --- a/sys/arch/prep/prep/machdep.c +++ b/sys/arch/prep/prep/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.15 2001/02/24 22:39:18 matt Exp $ */ +/* $NetBSD: machdep.c,v 1.16 2001/03/15 06:10:47 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -507,7 +507,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(sz), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/sandpoint/sandpoint/machdep.c b/sys/arch/sandpoint/sandpoint/machdep.c index 95f95c599f0..a222f009a78 100644 --- a/sys/arch/sandpoint/sandpoint/machdep.c +++ b/sys/arch/sandpoint/sandpoint/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.7 2001/03/06 20:10:20 briggs Exp $ */ +/* $NetBSD: machdep.c,v 1.8 2001/03/15 06:10:48 chs Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -443,7 +443,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(sz), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/sgimips/sgimips/machdep.c b/sys/arch/sgimips/sgimips/machdep.c index 0c9863836e8..0be17274a2e 100644 --- a/sys/arch/sgimips/sgimips/machdep.c +++ b/sys/arch/sgimips/sgimips/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.9 2001/01/22 13:57:01 jdolecek Exp $ */ +/* $NetBSD: machdep.c,v 1.10 2001/03/15 06:10:48 chs Exp $ */ /* * Copyright (c) 2000 Soren S. Jorvang @@ -312,7 +312,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *)&buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; base = bufpages / nbuf; diff --git a/sys/arch/sh3/sh3/pmap.c b/sys/arch/sh3/sh3/pmap.c index ed4cf28b22c..6c00c04b32f 100644 --- a/sys/arch/sh3/sh3/pmap.c +++ b/sys/arch/sh3/sh3/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.14 2001/02/02 02:28:18 thorpej Exp $ */ +/* $NetBSD: pmap.c,v 1.15 2001/03/15 06:10:48 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -1303,8 +1303,8 @@ pmap_free_pvpage() /* unmap the page */ dead_entries = NULL; - (void)uvm_unmap_remove(map, (vaddr_t) pvp, - ((vaddr_t) pvp) + NBPG, &dead_entries); + uvm_unmap_remove(map, (vaddr_t)pvp, ((vaddr_t)pvp) + NBPG, + &dead_entries); vm_map_unlock(map); if (dead_entries != NULL) @@ -3196,7 +3196,7 @@ pmap_enter(pmap, va, pa, prot, flags) ptp = pmap_get_ptp(pmap, pdei(va), FALSE); if (ptp == NULL) { if (flags & PMAP_CANFAIL) { - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } panic("pmap_enter: get ptp failed"); } @@ -3293,7 +3293,7 @@ pmap_enter(pmap, va, pa, prot, flags) pve = pmap_alloc_pv(pmap, ALLOCPV_NEED); if (pve == NULL) { if (flags & PMAP_CANFAIL) { - error = KERN_RESOURCE_SHORTAGE; + error = ENOMEM; goto out; } panic("pmap_enter: no pv entries available"); @@ -3364,7 +3364,7 @@ enter_now: if ((opte & ~(PG_M|PG_U)) != npte && pmap_is_curpmap(pmap)) pmap_update_pg(va); - error = KERN_SUCCESS; + error = 0; out: pmap_unmap_ptes(pmap); diff --git a/sys/arch/sh3/sh3/sh3_machdep.c b/sys/arch/sh3/sh3/sh3_machdep.c index 897b78a08ba..283afc11ed3 100644 --- a/sys/arch/sh3/sh3/sh3_machdep.c +++ b/sys/arch/sh3/sh3/sh3_machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: sh3_machdep.c,v 1.10 2000/12/22 22:58:55 jdolecek Exp $ */ +/* $NetBSD: sh3_machdep.c,v 1.11 2001/03/15 06:10:48 chs Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -144,7 +144,7 @@ sh3_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { diff --git a/sys/arch/sh3/sh3/trap.c b/sys/arch/sh3/sh3/trap.c index 58d21dad4f3..baf67336a94 100644 --- a/sys/arch/sh3/sh3/trap.c +++ b/sys/arch/sh3/sh3/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.22 2001/03/06 21:58:23 thorpej Exp $ */ +/* $NetBSD: trap.c,v 1.23 2001/03/15 06:10:48 chs Exp $ */ /*- * Copyright (c) 1995 Charles M. Hannum. All rights reserved. @@ -365,7 +365,7 @@ trap(p1, p2, p3, p4, frame) /* Fault the original page in. */ rv = uvm_fault(map, va, 0, ftype); - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (nss > vm->vm_ssize) vm->vm_ssize = nss; @@ -382,7 +382,7 @@ trap(p1, p2, p3, p4, frame) map, va, ftype, rv); goto we_re_toast; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? @@ -774,17 +774,17 @@ tlb_handler(p1, p2, p3, p4, frame) #endif va >= (vaddr_t) vm->vm_maxsaddr && va < USRSTACK) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { u_int nss; nss = btoc(USRSTACK - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { va = va_save; SHREG_PTEH = pteh_save; pde_index = pdei(va); @@ -865,7 +865,7 @@ tlb_handler(p1, p2, p3, p4, frame) goto dopanic; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/sparc/sparc/machdep.c b/sys/arch/sparc/sparc/machdep.c index 186704cc566..9d647f58e4c 100644 --- a/sys/arch/sparc/sparc/machdep.c +++ b/sys/arch/sparc/sparc/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.177 2001/03/05 16:46:09 pk Exp $ */ +/* $NetBSD: machdep.c,v 1.178 2001/03/15 06:10:49 chs Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -288,7 +288,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t) buffers; diff --git a/sys/arch/sparc/sparc/pmap.c b/sys/arch/sparc/sparc/pmap.c index 943a050e549..a8d5398e827 100644 --- a/sys/arch/sparc/sparc/pmap.c +++ b/sys/arch/sparc/sparc/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.184 2001/03/05 07:04:01 pk Exp $ */ +/* $NetBSD: pmap.c,v 1.185 2001/03/15 06:10:49 chs Exp $ */ /* * Copyright (c) 1996 @@ -1942,10 +1942,6 @@ pv_changepte4_4c(pv0, bis, bic) ctx = getcontext4(); for (pv = pv0; pv != NULL; pv = pv->pv_next) { pm = pv->pv_pmap; -#ifdef DIAGNOSTIC - if(pm == NULL) - panic("pv_changepte: pm == NULL"); -#endif va = pv->pv_va; vr = VA_VREG(va); vs = VA_VSEG(va); @@ -2262,10 +2258,6 @@ pv_changepte4m(pv0, bis, bic) for (pv = pv0; pv != NULL; pv = pv->pv_next) { int tpte; pm = pv->pv_pmap; -#ifdef DIAGNOSTIC - if (pm == NULL) - panic("pv_changepte: pm == NULL"); -#endif va = pv->pv_va; vr = VA_VREG(va); rp = &pm->pm_regmap[vr]; @@ -3722,8 +3714,6 @@ pmap_destroy(pm) { int count; - if (pm == NULL) - return; #ifdef DEBUG if (pmapdebug & PDB_DESTROY) printf("pmap_destroy(%p)\n", pm); @@ -3852,9 +3842,6 @@ pmap_remove(pm, va, endva) int vr, vs, s, ctx; void (*rm)(struct pmap *, vaddr_t, vaddr_t, int, int); - if (pm == NULL) - return; - #ifdef DEBUG if (pmapdebug & PDB_REMOVE) printf("pmap_remove(%p, 0x%lx, 0x%lx)\n", pm, va, endva); @@ -4618,9 +4605,6 @@ pmap_protect4_4c(pm, sva, eva, prot) struct regmap *rp; struct segmap *sp; - if (pm == NULL || prot & VM_PROT_WRITE) - return; - if ((prot & VM_PROT_READ) == 0) { pmap_remove(pm, sva, eva); return; @@ -4962,9 +4946,6 @@ pmap_protect4m(pm, sva, eva, prot) struct regmap *rp; struct segmap *sp; - if (pm == NULL || prot & VM_PROT_WRITE) - return; - if ((prot & VM_PROT_READ) == 0) { pmap_remove(pm, sva, eva); return; @@ -5139,15 +5120,12 @@ pmap_enter4_4c(pm, va, pa, prot, flags) u_int pfn; boolean_t wired = (flags & PMAP_WIRED) != 0; - if (pm == NULL) - return (KERN_SUCCESS); - if (VA_INHOLE(va)) { #ifdef DEBUG printf("pmap_enter: pm %p, va 0x%lx, pa 0x%lx: in MMU hole\n", pm, va, pa); #endif - return (KERN_SUCCESS); + return 0; } #ifdef DEBUG @@ -5179,7 +5157,7 @@ pmap_enter4_4c(pm, va, pa, prot, flags) else pmap_enu4_4c(pm, va, prot, wired, pv, pteproto); setcontext4(ctx); - return (KERN_SUCCESS); + return 0; } /* enter new (or change existing) kernel mapping */ @@ -5540,9 +5518,6 @@ pmap_enter4m(pm, va, pa, prot, flags) u_int pfn; boolean_t wired = (flags & PMAP_WIRED) != 0; - if (pm == NULL) - return (KERN_SUCCESS); - #ifdef DEBUG if (pmapdebug & PDB_ENTER) printf("pmap_enter[curpid %d, ctx %d]" @@ -5592,7 +5567,7 @@ pmap_enter4m(pm, va, pa, prot, flags) pmap_enu4m(pm, va, prot, wired, pv, pteproto); setcontext4m(ctx); - return (KERN_SUCCESS); + return 0; } /* enter new (or change existing) kernel mapping */ @@ -5911,13 +5886,6 @@ pmap_extract4_4c(pm, va, pap) struct regmap *rp; struct segmap *sp; - if (pm == NULL) { -#ifdef DEBUG - if (pmapdebug & PDB_FOLLOW) - printf("pmap_extract: null pmap\n"); -#endif - return (FALSE); - } vr = VA_VREG(va); vs = VA_VSEG(va); rp = &pm->pm_regmap[vr]; @@ -5987,14 +5955,6 @@ pmap_extract4m(pm, va, pap) struct segmap *sm; int pte; - if (pm == NULL) { -#ifdef DEBUG - if (pmapdebug & PDB_FOLLOW) - printf("pmap_extract: null pmap\n"); -#endif - return (FALSE); - } - if ((rm = pm->pm_regmap) == NULL) { #ifdef DEBUG if (pmapdebug & PDB_FOLLOW) diff --git a/sys/arch/sparc/sparc/trap.c b/sys/arch/sparc/sparc/trap.c index bf7672b66c3..873493b930c 100644 --- a/sys/arch/sparc/sparc/trap.c +++ b/sys/arch/sparc/sparc/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.100 2001/03/15 03:01:40 mrg Exp $ */ +/* $NetBSD: trap.c,v 1.101 2001/03/15 06:10:49 chs Exp $ */ /* * Copyright (c) 1996 @@ -787,7 +787,7 @@ mem_access_fault(type, ser, v, pc, psr, tf) if (type == T_TEXTFAULT) v = pc; if (VA_INHOLE(v)) { - rv = KERN_PROTECTION_FAILURE; + rv = EACCES; goto fault; } atype = ser & SER_WRITE ? VM_PROT_WRITE : VM_PROT_READ; @@ -816,7 +816,7 @@ mem_access_fault(type, ser, v, pc, psr, tf) if (cold) goto kfault; if (va >= KERNBASE) { - if (uvm_fault(kernel_map, va, 0, atype) == KERN_SUCCESS) + if (uvm_fault(kernel_map, va, 0, atype) == 0) return; goto kfault; } @@ -832,7 +832,7 @@ mem_access_fault(type, ser, v, pc, psr, tf) rv = mmu_pagein(vm->vm_map.pmap, va, ser & SER_WRITE ? VM_PROT_WRITE : VM_PROT_READ); if (rv < 0) { - rv = KERN_PROTECTION_FAILURE; + rv = EACCES; goto fault; } if (rv > 0) @@ -855,14 +855,14 @@ mem_access_fault(type, ser, v, pc, psr, tf) SUNOS_MAXSADDR_SLOP) #endif ) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss = btoc(USRSTACK - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { /* * pmap_enter() does not enter all requests made from * vm_fault into the MMU (as that causes unnecessary @@ -893,7 +893,7 @@ kfault: tf->tf_npc = onfault + 4; return; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? @@ -1016,7 +1016,7 @@ mem_access_fault4m(type, sfsr, sfva, tf) if (type == T_TEXTFAULT) sfva = pc; else { - rv = KERN_PROTECTION_FAILURE; + rv = EACCES; goto fault; } } @@ -1026,7 +1026,7 @@ mem_access_fault4m(type, sfsr, sfva, tf) * Translation errors are always fatal, as they indicate * a corrupt translation (page) table hierarchy. */ - rv = KERN_PROTECTION_FAILURE; + rv = EACCES; /* XXXSMP - why bother with this anyway? */ if (tfaultaddr == sfva) /* Prevent infinite loops w/a static */ @@ -1060,7 +1060,7 @@ mem_access_fault4m(type, sfsr, sfva, tf) /* On HS, we have va for both */ vm = p->p_vmspace; if (uvm_fault(&vm->vm_map, trunc_page(pc), - 0, VM_PROT_READ) != KERN_SUCCESS) + 0, VM_PROT_READ) != 0) #ifdef DEBUG printf("mem_access_fault: " "can't pagein 1st text fault.\n") @@ -1097,8 +1097,7 @@ mem_access_fault4m(type, sfsr, sfva, tf) if (cold) goto kfault; if (va >= KERNBASE) { - if (uvm_fault(kernel_map, va, 0, atype) == - KERN_SUCCESS) { + if (uvm_fault(kernel_map, va, 0, atype) == 0) { KERNEL_UNLOCK(); return; } @@ -1120,14 +1119,14 @@ mem_access_fault4m(type, sfsr, sfva, tf) * error. */ if ((caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss = btoc(USRSTACK - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv != KERN_SUCCESS) { + if (rv != 0) { /* * Pagein failed. If doing copyin/out, return to onfault * address. Any other page fault in kernel, die; if user @@ -1151,7 +1150,7 @@ kfault: KERNEL_UNLOCK(); return; } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/sparc64/sparc64/machdep.c b/sys/arch/sparc64/sparc64/machdep.c index de7d61f5285..a39665f44a5 100644 --- a/sys/arch/sparc64/sparc64/machdep.c +++ b/sys/arch/sparc64/sparc64/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.101 2001/02/11 00:37:22 eeh Exp $ */ +/* $NetBSD: machdep.c,v 1.102 2001/03/15 06:10:50 chs Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -264,7 +264,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t) buffers; @@ -1341,7 +1341,7 @@ _bus_dmamap_load_uio(t, map, uio, flags) if (__predict_false(uvm_vslock(p, vaddr, buflen, (uio->uio_rw == UIO_WRITE) ? VM_PROT_READ | VM_PROT_WRITE : VM_PROT_READ) - != KERN_SUCCESS)) { + != 0)) { goto after_vsunlock; } @@ -1621,7 +1621,7 @@ _bus_dmamem_map(t, segs, nsegs, size, kvap, flags) r = uvm_map(kernel_map, &sva, oversize, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_NORMAL, 0)); - if (r != KERN_SUCCESS) + if (r != 0) return (ENOMEM); /* Compute start of aligned region */ diff --git a/sys/arch/sparc64/sparc64/pmap.c b/sys/arch/sparc64/sparc64/pmap.c index 48fb50fb70f..6bd7b56b695 100644 --- a/sys/arch/sparc64/sparc64/pmap.c +++ b/sys/arch/sparc64/sparc64/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.91 2001/01/22 22:10:09 eeh Exp $ */ +/* $NetBSD: pmap.c,v 1.92 2001/03/15 06:10:50 chs Exp $ */ #undef NO_VCACHE /* Don't forget the locked TLB in dostart */ #define HWREF /* @@ -2111,7 +2111,7 @@ pmap_enter(pm, va, pa, prot, flags) prom_printf("pmap_enter: va=%08x pa=%x:%08x in locked TLB\r\n", va, (int)(pa>>32), (int)pa); OF_enter(); - return (KERN_SUCCESS); + return 0; } #endif @@ -2190,7 +2190,7 @@ pmap_enter(pm, va, pa, prot, flags) printf("pmap_enter: wired but not readable\n"); Debugger(); } - return (KERN_SUCCESS); + return 0; } #endif if (wired) tte.data.data |= TLB_TSB_LOCK; @@ -2277,7 +2277,7 @@ pmap_enter(pm, va, pa, prot, flags) /* We will let the fast mmu miss interrupt load the new translation */ pv_check(); - return (KERN_SUCCESS); + return 0; } /* diff --git a/sys/arch/sparc64/sparc64/trap.c b/sys/arch/sparc64/sparc64/trap.c index 2d1396141ba..f30ee42d940 100644 --- a/sys/arch/sparc64/sparc64/trap.c +++ b/sys/arch/sparc64/sparc64/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.62 2001/02/11 00:39:38 eeh Exp $ */ +/* $NetBSD: trap.c,v 1.63 2001/03/15 06:10:50 chs Exp $ */ /* * Copyright (c) 1996 @@ -1094,7 +1094,8 @@ data_access_fault(type, addr, pc, tf) goto kfault; if (!(addr&TLB_TAG_ACCESS_CTX)) { /* CTXT == NUCLEUS */ - if ((rv=uvm_fault(kernel_map, va, 0, access_type)) == KERN_SUCCESS) { + rv = uvm_fault(kernel_map, va, 0, access_type); + if (rv == 0) { #ifdef DEBUG if (trapdebug&(TDB_ADDFLT|TDB_FOLLOW)) printf("data_access_fault: kernel uvm_fault(%p, %lx, %x, 0) sez %x -- success\n", @@ -1129,14 +1130,14 @@ data_access_fault(type, addr, pc, tf) * error. */ if ((caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { segsz_t nss = btoc(p->p_vmspace->vm_minsaddr - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv != KERN_SUCCESS) { + if (rv != 0) { /* * Pagein failed. If doing copyin/out, return to onfault * address. Any other page fault in kernel, die; if user @@ -1174,7 +1175,7 @@ kfault: Debugger(); } #endif - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? @@ -1372,7 +1373,7 @@ data_access_error(type, sfva, sfsr, afva, afsr, tf) goto kfault; if (SFSR_CTXT_IS_PRIM(sfsr) || SFSR_CTXT_IS_NUCLEUS(sfsr)) { /* NUCLEUS context */ - if (uvm_fault(kernel_map, va, 0, access_type) == KERN_SUCCESS) + if (uvm_fault(kernel_map, va, 0, access_type) == 0) return; if (SFSR_CTXT_IS_NUCLEUS(sfsr)) goto kfault; @@ -1396,14 +1397,14 @@ data_access_error(type, sfva, sfsr, afva, afsr, tf) * error. */ if ((caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { segsz_t nss = btoc(p->p_vmspace->vm_minsaddr - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv != KERN_SUCCESS) { + if (rv != 0) { /* * Pagein failed. If doing copyin/out, return to onfault * address. Any other page fault in kernel, die; if user @@ -1547,14 +1548,14 @@ text_access_fault(type, pc, tf) * error. */ if ((caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { segsz_t nss = btoc(p->p_vmspace->vm_minsaddr - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv != KERN_SUCCESS) { + if (rv != 0) { /* * Pagein failed. Any other page fault in kernel, die; if user * fault, deliver SIGSEGV. @@ -1721,14 +1722,14 @@ text_access_error(type, pc, sfsr, afva, afsr, tf) * error. */ if ((caddr_t)va >= vm->vm_maxsaddr) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { segsz_t nss = btoc(p->p_vmspace->vm_minsaddr - va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv != KERN_SUCCESS) { + if (rv != 0) { /* * Pagein failed. If doing copyin/out, return to onfault * address. Any other page fault in kernel, die; if user diff --git a/sys/arch/sun3/sun3/machdep.c b/sys/arch/sun3/sun3/machdep.c index 307f9368ee5..1ad7922c99a 100644 --- a/sys/arch/sun3/sun3/machdep.c +++ b/sys/arch/sun3/sun3/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.143 2001/02/22 07:11:12 chs Exp $ */ +/* $NetBSD: machdep.c,v 1.144 2001/03/15 06:10:51 chs Exp $ */ /* * Copyright (c) 1994, 1995 Gordon W. Ross @@ -229,7 +229,7 @@ cpu_startup() if (uvm_map(kernel_map, (vm_offset_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vm_offset_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { @@ -296,7 +296,7 @@ cpu_startup() */ if (uvm_map_protect(kernel_map, (vm_offset_t) kernel_text, m68k_trunc_page((vm_offset_t) etext), - UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != KERN_SUCCESS) + UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/sun3/sun3/pmap.c b/sys/arch/sun3/sun3/pmap.c index 5dac85c7b6b..90ce5eb30f0 100644 --- a/sys/arch/sun3/sun3/pmap.c +++ b/sys/arch/sun3/sun3/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.123 2001/02/03 12:55:35 tsutsui Exp $ */ +/* $NetBSD: pmap.c,v 1.124 2001/03/15 06:10:51 chs Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -2116,8 +2116,6 @@ pmap_enter(pmap, va, pa, prot, flags) int new_pte, s; boolean_t wired = (flags & PMAP_WIRED) != 0; - if (pmap == NULL) - return (KERN_SUCCESS); #ifdef PMAP_DEBUG if ((pmap_debug & PMD_ENTER) || (va == pmap_db_watchva)) @@ -2151,7 +2149,7 @@ pmap_enter(pmap, va, pa, prot, flags) pmap_enter_user(pmap, va, new_pte, wired); } splx(s); - return (KERN_SUCCESS); + return 0; } static void @@ -2544,12 +2542,12 @@ _pmap_fault(map, va, ftype) * Most pages below virtual_avail are read-only, * so I will assume it is a protection failure. */ - return KERN_PROTECTION_FAILURE; + return EACCES; } } else { /* User map. Try reload shortcut. */ if (pmap_fault_reload(pmap, va, ftype)) - return KERN_SUCCESS; + return 0; } rv = uvm_fault(map, va, 0, ftype); diff --git a/sys/arch/sun3/sun3/trap.c b/sys/arch/sun3/sun3/trap.c index a5ebd00ed68..fc95c8b0fe6 100644 --- a/sys/arch/sun3/sun3/trap.c +++ b/sys/arch/sun3/sun3/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.98 2001/02/22 07:11:12 chs Exp $ */ +/* $NetBSD: trap.c,v 1.99 2001/03/15 06:10:51 chs Exp $ */ /* * Copyright (c) 1994 Gordon W. Ross @@ -526,16 +526,16 @@ trap(type, code, v, tf) * error. */ if ((map != kernel_map) && ((caddr_t)va >= vm->vm_maxsaddr)) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc((u_int)(USRSTACK-va)); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) + if (rv == 0) goto finish; if ((type & T_USER) == 0) { @@ -554,7 +554,7 @@ trap(type, code, v, tf) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/arch/sun3/sun3x/machdep.c b/sys/arch/sun3/sun3x/machdep.c index 0fe6e4ff455..6679f8d7c62 100644 --- a/sys/arch/sun3/sun3x/machdep.c +++ b/sys/arch/sun3/sun3x/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.63 2001/02/22 07:11:13 chs Exp $ */ +/* $NetBSD: machdep.c,v 1.64 2001/03/15 06:10:52 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -223,7 +223,7 @@ cpu_startup() if (uvm_map(kernel_map, (vm_offset_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vm_offset_t)buffers; if ((bufpages / nbuf) >= btoc(MAXBSIZE)) { @@ -290,7 +290,7 @@ cpu_startup() */ if (uvm_map_protect(kernel_map, (vm_offset_t) kernel_text, m68k_trunc_page((vm_offset_t) etext), - UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != KERN_SUCCESS) + UVM_PROT_READ|UVM_PROT_EXEC, TRUE) != 0) panic("can't protect kernel text"); /* diff --git a/sys/arch/sun3/sun3x/pmap.c b/sys/arch/sun3/sun3x/pmap.c index dd5b27b6295..706f6aeba36 100644 --- a/sys/arch/sun3/sun3x/pmap.c +++ b/sys/arch/sun3/sun3x/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.60 2001/02/20 12:52:57 tsutsui Exp $ */ +/* $NetBSD: pmap.c,v 1.61 2001/03/15 06:10:52 chs Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -1695,10 +1695,10 @@ pmap_enter(pmap, va, pa, prot, flags) enum {NONE, NEWA, NEWB, NEWC} llevel; /* used at end */ if (pmap == NULL) - return (KERN_SUCCESS); + return 0; if (pmap == pmap_kernel()) { pmap_enter_kernel(va, pa, prot); - return (KERN_SUCCESS); + return 0; } /* @@ -2057,7 +2057,7 @@ pmap_enter(pmap, va, pa, prot, flags) break; } - return (KERN_SUCCESS); + return 0; } /* pmap_enter_kernel INTERNAL diff --git a/sys/arch/vax/vax/machdep.c b/sys/arch/vax/vax/machdep.c index a9686b04060..5101ddf4005 100644 --- a/sys/arch/vax/vax/machdep.c +++ b/sys/arch/vax/vax/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.111 2001/01/15 20:19:58 thorpej Exp $ */ +/* $NetBSD: machdep.c,v 1.112 2001/03/15 06:10:52 chs Exp $ */ /* * Copyright (c) 1994, 1998 Ludd, University of Lule}, Sweden. @@ -169,7 +169,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("cpu_startup: cannot allocate VM for buffers"); minaddr = (vaddr_t) buffers; diff --git a/sys/arch/vax/vax/pmap.c b/sys/arch/vax/vax/pmap.c index 0d85a5aa69b..0663bdfc1c5 100644 --- a/sys/arch/vax/vax/pmap.c +++ b/sys/arch/vax/vax/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.93 2001/02/11 19:25:55 ragge Exp $ */ +/* $NetBSD: pmap.c,v 1.94 2001/03/15 06:10:52 chs Exp $ */ /* * Copyright (c) 1994, 1998, 1999 Ludd, University of Lule}, Sweden. * All rights reserved. @@ -726,7 +726,7 @@ if (startpmapdebug) break; if (flags & PMAP_CANFAIL) { RECURSEEND; - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } if (pmap == pmap_kernel()) @@ -756,7 +756,7 @@ if (startpmapdebug) if (pmap != pmap_kernel()) pmap->pm_refcnt[index]++; /* New mapping */ RECURSEEND; - return (KERN_SUCCESS); + return 0; } if (flags & PMAP_WIRED) @@ -769,13 +769,13 @@ if (startpmapdebug) if (newpte == (oldpte | PG_W)) { patch[i] |= PG_W; /* Just wiring change */ RECURSEEND; - return (KERN_SUCCESS); + return 0; } /* mapping unchanged? just return. */ if (newpte == oldpte) { RECURSEEND; - return (KERN_SUCCESS); + return 0; } /* Changing mapping? */ @@ -834,7 +834,7 @@ if (startpmapdebug) more_pventries(); mtpr(0, PR_TBIA); /* Always; safety belt */ - return (KERN_SUCCESS); + return 0; } void * diff --git a/sys/arch/vax/vax/trap.c b/sys/arch/vax/vax/trap.c index b61212b2f09..4570217427b 100644 --- a/sys/arch/vax/vax/trap.c +++ b/sys/arch/vax/vax/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.60 2000/12/31 19:41:41 matt Exp $ */ +/* $NetBSD: trap.c,v 1.61 2001/03/15 06:10:53 chs Exp $ */ /* * Copyright (c) 1994 Ludd, University of Lule}, Sweden. @@ -229,13 +229,13 @@ if(faultdebug)printf("trap accflt type %lx, code %lx, pc %lx, psl %lx\n", ftype = VM_PROT_READ; rv = uvm_fault(map, addr, 0, ftype); - if (rv != KERN_SUCCESS) { + if (rv != 0) { if (umode == 0) { FAULTCHK; panic("Segv in kernel mode: pc %x addr %x", (u_int)frame->pc, (u_int)frame->code); } - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: " "out of swap\n", p->p_pid, p->p_comm, diff --git a/sys/arch/x68k/dev/grf.c b/sys/arch/x68k/dev/grf.c index 5c39563d921..1b2ac725447 100644 --- a/sys/arch/x68k/dev/grf.c +++ b/sys/arch/x68k/dev/grf.c @@ -1,4 +1,4 @@ -/* $NetBSD: grf.c,v 1.19 2000/06/29 07:07:53 mrg Exp $ */ +/* $NetBSD: grf.c,v 1.20 2001/03/15 06:10:53 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -579,7 +579,6 @@ grfunmap(dev, addr, p) { struct grf_softc *gp = grf_cd.cd_devs[GRFUNIT(dev)]; vsize_t size; - int rv; #ifdef DEBUG if (grfdebug & GDB_MMAP) @@ -589,9 +588,9 @@ grfunmap(dev, addr, p) return(EINVAL); /* XXX: how do we deal with this? */ (void) (*gp->g_sw->gd_mode)(gp, GM_UNMAP, 0); size = round_page(gp->g_display.gd_regsize + gp->g_display.gd_fbsize); - rv = uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)addr, + uvm_unmap(&p->p_vmspace->vm_map, (vaddr_t)addr, (vaddr_t)addr + size); - return(rv == KERN_SUCCESS ? 0 : EINVAL); + return 0; } #ifdef COMPAT_HPUX diff --git a/sys/arch/x68k/x68k/clock.c b/sys/arch/x68k/x68k/clock.c index f28dd33d424..08aa2b80abd 100644 --- a/sys/arch/x68k/x68k/clock.c +++ b/sys/arch/x68k/x68k/clock.c @@ -1,4 +1,4 @@ -/* $NetBSD: clock.c,v 1.10 2001/01/11 16:09:43 minoura Exp $ */ +/* $NetBSD: clock.c,v 1.11 2001/03/15 06:10:53 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -328,8 +328,8 @@ clockunmmap(dev, addr, p) if (addr == 0) return(EINVAL); /* XXX: how do we deal with this? */ - rv = vm_deallocate(p->p_vmspace->vm_map, (vaddr_t)addr, PAGE_SIZE); - return(rv == KERN_SUCCESS ? 0 : EINVAL); + uvm_deallocate(p->p_vmspace->vm_map, (vaddr_t)addr, PAGE_SIZE); + return 0; } startclock() diff --git a/sys/arch/x68k/x68k/machdep.c b/sys/arch/x68k/x68k/machdep.c index 097636df21f..1284aefea94 100644 --- a/sys/arch/x68k/x68k/machdep.c +++ b/sys/arch/x68k/x68k/machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.94 2001/03/01 17:11:13 minoura Exp $ */ +/* $NetBSD: machdep.c,v 1.95 2001/03/15 06:10:53 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -269,7 +269,7 @@ cpu_startup() if (uvm_map(kernel_map, (vaddr_t *) &buffers, round_page(size), NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_NORMAL, 0)) != KERN_SUCCESS) + UVM_ADV_NORMAL, 0)) != 0) panic("startup: cannot allocate VM for buffers"); minaddr = (vaddr_t)buffers; #if 0 diff --git a/sys/arch/x68k/x68k/pmap.c b/sys/arch/x68k/x68k/pmap.c index 7712caa7083..0740b88d6fb 100644 --- a/sys/arch/x68k/x68k/pmap.c +++ b/sys/arch/x68k/x68k/pmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: pmap.c,v 1.58 2001/02/21 05:53:35 minoura Exp $ */ +/* $NetBSD: pmap.c,v 1.59 2001/03/15 06:10:53 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -409,14 +409,14 @@ pmap_init() NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_FLAG_FIXED)) != 0) goto bogons; addr = (vaddr_t) Sysmap; if (uvm_map(kernel_map, &addr, X68K_MAX_PTSIZE, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, - UVM_FLAG_FIXED)) != KERN_SUCCESS) { + UVM_FLAG_FIXED)) != 0) { /* * If this fails, it is probably because the static * portion of the kernel page table isn't big enough @@ -490,11 +490,9 @@ pmap_init() rv = uvm_map(kernel_map, &addr, s, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)); - if (rv != KERN_SUCCESS || (addr + s) >= (vaddr_t)Sysmap) + if (rv != 0 || (addr + s) >= (vaddr_t)Sysmap) panic("pmap_init: kernel PT too small"); - rv = uvm_unmap(kernel_map, addr, addr + s); - if (rv != KERN_SUCCESS) - panic("pmap_init: uvm_unmap failed"); + uvm_unmap(kernel_map, addr, addr + s); /* * Now allocate the space and link the pages together to @@ -1201,9 +1199,6 @@ pmap_enter(pmap, va, pa, prot, flags) ("pmap_enter(%p, %lx, %lx, %x, %x)\n", pmap, va, pa, prot, wired)); - if (pmap == NULL) - return (KERN_SUCCESS); - #ifdef DIAGNOSTIC /* * pmap_enter() should never be used for CADDR1 and CADDR2. @@ -1475,7 +1470,7 @@ validate: if ((pmapdebug & PDB_WIRING) && pmap != pmap_kernel()) pmap_check_wiring("enter", trunc_page((vaddr_t)pte)); #endif - return (KERN_SUCCESS); + return 0; } /* @@ -2201,9 +2196,9 @@ pmap_mapmulti(pmap, va) if (*ste == SG_NV && (*bste & SG_V)) { *ste = *bste; TBIAU(); - return (KERN_SUCCESS); + return 0; } - return (KERN_INVALID_ADDRESS); + return EFAULT; } #endif /* COMPAT_HPUX */ @@ -2802,7 +2797,7 @@ pmap_enter_ptpage(pmap, va) ("enter: about to fault UPT pg at %lx\n", va)); s = uvm_fault_wire(pt_map, va, va + PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE); - if (s != KERN_SUCCESS) { + if (s != 0) { printf("uvm_fault_wire(pt_map, 0x%lx, 0x%lx, RW) " "-> %d\n", va, va + PAGE_SIZE, s); panic("pmap_enter: uvm_fault_wire failed"); diff --git a/sys/arch/x68k/x68k/trap.c b/sys/arch/x68k/x68k/trap.c index 81415d7af5a..daf5a707aa3 100644 --- a/sys/arch/x68k/x68k/trap.c +++ b/sys/arch/x68k/x68k/trap.c @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.50 2001/02/21 12:39:17 minoura Exp $ */ +/* $NetBSD: trap.c,v 1.51 2001/03/15 06:10:54 chs Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -653,10 +653,10 @@ trap(type, code, v, frame) vaddr_t bva; rv = pmap_mapmulti(map->pmap, va); - if (rv != KERN_SUCCESS) { + if (rv != 0) { bva = HPMMBASEADDR(va); rv = uvm_fault(map, bva, 0, ftype); - if (rv == KERN_SUCCESS) + if (rv == 0) (void) pmap_mapmulti(map->pmap, va); } } else @@ -676,16 +676,16 @@ trap(type, code, v, frame) */ if ((vm != NULL && (caddr_t)va >= vm->vm_maxsaddr) && map != kernel_map) { - if (rv == KERN_SUCCESS) { + if (rv == 0) { unsigned nss; nss = btoc(USRSTACK-(unsigned)va); if (nss > vm->vm_ssize) vm->vm_ssize = nss; - } else if (rv == KERN_PROTECTION_FAILURE) - rv = KERN_INVALID_ADDRESS; + } else if (rv == EACCES) + rv = EFAULT; } - if (rv == KERN_SUCCESS) { + if (rv == 0) { if (type == T_MMUFLT) { #ifdef M68040 if (cputype == CPU_68040) @@ -705,7 +705,7 @@ trap(type, code, v, frame) goto dopanic; } ucode = v; - if (rv == KERN_RESOURCE_SHORTAGE) { + if (rv == ENOMEM) { printf("UVM: pid %d (%s), uid %d killed: out of swap\n", p->p_pid, p->p_comm, p->p_cred && p->p_ucred ? diff --git a/sys/compat/netbsd32/netbsd32_sysctl.c b/sys/compat/netbsd32/netbsd32_sysctl.c index 00b2340a68e..c536649707b 100644 --- a/sys/compat/netbsd32/netbsd32_sysctl.c +++ b/sys/compat/netbsd32/netbsd32_sysctl.c @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_sysctl.c,v 1.1 2001/02/08 13:19:34 mrg Exp $ */ +/* $NetBSD: netbsd32_sysctl.c,v 1.2 2001/03/15 06:10:54 chs Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -242,10 +242,11 @@ netbsd32___sysctl(p, v, retval) error = lockmgr(&sysctl_memlock, LK_EXCLUSIVE, NULL); if (error) return (error); - if (uvm_vslock(p, (void *)(u_long)SCARG(uap, old), savelen, - VM_PROT_READ|VM_PROT_WRITE) != KERN_SUCCESS) { + error = uvm_vslock(p, (void *)(u_long)SCARG(uap, old), savelen, + VM_PROT_READ|VM_PROT_WRITE); + if (error) { (void) lockmgr(&sysctl_memlock, LK_RELEASE, NULL); - return (EFAULT); + return error; } oldlen = savelen; } diff --git a/sys/compat/svr4/svr4_misc.c b/sys/compat/svr4/svr4_misc.c index f61fcc1ee2b..ca02e7eab1f 100644 --- a/sys/compat/svr4/svr4_misc.c +++ b/sys/compat/svr4/svr4_misc.c @@ -1,4 +1,4 @@ -/* $NetBSD: svr4_misc.c,v 1.89 2000/12/01 12:28:36 jdolecek Exp $ */ +/* $NetBSD: svr4_misc.c,v 1.90 2001/03/15 06:10:54 chs Exp $ */ /*- * Copyright (c) 1994 The NetBSD Foundation, Inc. @@ -753,9 +753,8 @@ svr4_sys_break(p, v, retval) { struct svr4_sys_break_args *uap = v; struct vmspace *vm = p->p_vmspace; - vaddr_t new, old; - int rv; - int diff; + vaddr_t new, old; + int error, diff; old = (vaddr_t) vm->vm_daddr; new = round_page((vaddr_t)SCARG(uap, nsize)); @@ -774,24 +773,20 @@ svr4_sys_break(p, v, retval) DPRINTF(("break(3): old %lx new %lx diff %x\n", old, new, diff)); if (diff > 0) { - rv = uvm_map(&vm->vm_map, &old, diff, NULL, UVM_UNKNOWN_OFFSET, - 0, + error = uvm_map(&vm->vm_map, &old, diff, NULL, + UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_AMAPPAD|UVM_FLAG_FIXED| UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)); - if (rv != KERN_SUCCESS) { - uprintf("sbrk: grow failed, return = %d\n", rv); - return ENOMEM; + if (error) { + uprintf("sbrk: grow failed, error = %d\n", error); + return error; } vm->vm_dsize += btoc(diff); } else if (diff < 0) { diff = -diff; - rv = uvm_deallocate(&vm->vm_map, new, diff); - if (rv != KERN_SUCCESS) { - uprintf("sbrk: shrink failed, return = %d\n", rv); - return ENOMEM; - } + uvm_deallocate(&vm->vm_map, new, diff); vm->vm_dsize -= btoc(diff); } return 0; diff --git a/sys/compat/svr4_32/svr4_32_misc.c b/sys/compat/svr4_32/svr4_32_misc.c index 298d8744bf0..262e32e00bd 100644 --- a/sys/compat/svr4_32/svr4_32_misc.c +++ b/sys/compat/svr4_32/svr4_32_misc.c @@ -1,4 +1,4 @@ -/* $NetBSD: svr4_32_misc.c,v 1.2 2001/02/11 01:10:24 eeh Exp $ */ +/* $NetBSD: svr4_32_misc.c,v 1.3 2001/03/15 06:10:54 chs Exp $ */ /*- * Copyright (c) 1994 The NetBSD Foundation, Inc. @@ -771,9 +771,8 @@ svr4_32_sys_break(p, v, retval) { struct svr4_32_sys_break_args *uap = v; struct vmspace *vm = p->p_vmspace; - vaddr_t new, old; - int rv; - int diff; + vaddr_t new, old; + int error, diff; old = (vaddr_t) vm->vm_daddr; new = round_page((vaddr_t)SCARG(uap, nsize)); @@ -792,24 +791,20 @@ svr4_32_sys_break(p, v, retval) DPRINTF(("break(3): old %lx new %lx diff %x\n", old, new, diff)); if (diff > 0) { - rv = uvm_map(&vm->vm_map, &old, diff, NULL, UVM_UNKNOWN_OFFSET, - 0, + error = uvm_map(&vm->vm_map, &old, diff, NULL, + UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_AMAPPAD|UVM_FLAG_FIXED| UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)); - if (rv != KERN_SUCCESS) { + if (error) { uprintf("sbrk: grow failed, return = %d\n", rv); - return ENOMEM; + return error; } vm->vm_dsize += btoc(diff); } else if (diff < 0) { diff = -diff; - rv = uvm_deallocate(&vm->vm_map, new, diff); - if (rv != KERN_SUCCESS) { - uprintf("sbrk: shrink failed, return = %d\n", rv); - return ENOMEM; - } + uvm_deallocate(&vm->vm_map, new, diff); vm->vm_dsize -= btoc(diff); } return 0; diff --git a/sys/compat/vax1k/vax1k_subr.c b/sys/compat/vax1k/vax1k_subr.c index 423b02f1d41..59a02ef5600 100644 --- a/sys/compat/vax1k/vax1k_subr.c +++ b/sys/compat/vax1k/vax1k_subr.c @@ -1,4 +1,4 @@ -/* $NetBSD: vax1k_subr.c,v 1.5 2000/09/13 15:00:24 thorpej Exp $ */ +/* $NetBSD: vax1k_subr.c,v 1.6 2001/03/15 06:10:55 chs Exp $ */ /* * Copyright (c) 1993, 1994, 1996 Christopher G. Demetriou @@ -58,7 +58,7 @@ vax1k_map_readvn(p, cmd) int error; if (cmd->ev_len == 0) - return(KERN_SUCCESS); /* XXXCDC: should it happen? */ + return 0; oaddr = cmd->ev_addr; cmd->ev_addr = trunc_page(cmd->ev_addr); /* required by uvm_map */ @@ -68,7 +68,6 @@ vax1k_map_readvn(p, cmd) UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_FIXED|UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)); - if (error) return error; @@ -85,11 +84,11 @@ vax1k_map_readvn(p, cmd) * it mapped read-only, so now we are going to have to call * uvm_map_protect() to fix up the protection. ICK. */ - return(uvm_map_protect(&p->p_vmspace->vm_map, + return uvm_map_protect(&p->p_vmspace->vm_map, trunc_page(cmd->ev_addr), round_page(cmd->ev_addr + cmd->ev_len), - cmd->ev_prot, FALSE)); + cmd->ev_prot, FALSE); } else { - return(KERN_SUCCESS); + return 0; } } diff --git a/sys/dev/ic/rrunner.c b/sys/dev/ic/rrunner.c index a9a9d5a31f0..dcecb57f8f1 100644 --- a/sys/dev/ic/rrunner.c +++ b/sys/dev/ic/rrunner.c @@ -1,4 +1,4 @@ -/* $NetBSD: rrunner.c,v 1.21 2000/12/14 06:27:25 thorpej Exp $ */ +/* $NetBSD: rrunner.c,v 1.22 2001/03/15 06:10:55 chs Exp $ */ /* * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -1005,7 +1005,6 @@ esh_fpread(dev, uio, ioflag) struct esh_fp_ring_ctl *ring; struct esh_dmainfo *di; int ulp = ESHULP(dev); - int flags = B_READ; int error; int i; int s; @@ -1028,17 +1027,8 @@ esh_fpread(dev, uio, ioflag) } /* Check for validity */ - for (i = 0; i < uio->uio_iovcnt; i++) { - /* XXXCDC: map not locked, rethink */ - if (!uvm_useracc(uio->uio_iov[i].iov_base, - uio->uio_iov[i].iov_len, - (flags == B_READ) ? B_WRITE : B_READ)) { - error = EFAULT; - goto fpread_done; - } /* Check for valid offsets and sizes */ - if (((u_long) uio->uio_iov[i].iov_base & 3) != 0 || (i < uio->uio_iovcnt - 1 && (uio->uio_iov[i].iov_len & 3) != 0)) { @@ -1050,18 +1040,17 @@ esh_fpread(dev, uio, ioflag) PHOLD(p); /* Lock process info into memory */ /* Lock down the pages */ - for (i = 0; i < uio->uio_iovcnt; i++) { iovp = &uio->uio_iov[i]; - if (uvm_vslock(p, iovp->iov_base, iovp->iov_len, - VM_PROT_READ | VM_PROT_WRITE) != KERN_SUCCESS) { + error = uvm_vslock(p, iovp->iov_base, iovp->iov_len, + VM_PROT_READ | VM_PROT_WRITE); + if (error) { /* Unlock what we've locked so far. */ for (--i; i >= 0; i--) { iovp = &uio->uio_iov[i]; uvm_vsunlock(p, iovp->iov_base, iovp->iov_len); } - error = EFAULT; goto fpread_done; } } @@ -1176,7 +1165,6 @@ esh_fpwrite(dev, uio, ioflag) struct esh_send_ring_ctl *ring; struct esh_dmainfo *di; int ulp = ESHULP(dev); - int flags = B_WRITE; int error; int len; int i; @@ -1200,16 +1188,7 @@ esh_fpwrite(dev, uio, ioflag) } /* Check for validity */ - for (i = 0; i < uio->uio_iovcnt; i++) { - /* XXXCDC: map not locked, rethink */ - if (!uvm_useracc(uio->uio_iov[i].iov_base, - uio->uio_iov[i].iov_len, - (flags == B_READ) ? B_WRITE : B_READ)) { - error = EFAULT; - goto fpwrite_done; - } - if (((u_long) uio->uio_iov[i].iov_base & 3) != 0 || (i < uio->uio_iovcnt - 1 && (uio->uio_iov[i].iov_len & 3) != 0)) { @@ -1221,18 +1200,17 @@ esh_fpwrite(dev, uio, ioflag) PHOLD(p); /* Lock process info into memory */ /* Lock down the pages */ - for (i = 0; i < uio->uio_iovcnt; i++) { iovp = &uio->uio_iov[i]; - if (uvm_vslock(p, iovp->iov_base, iovp->iov_len, - VM_PROT_READ) != KERN_SUCCESS) { + error = uvm_vslock(p, iovp->iov_base, iovp->iov_len, + VM_PROT_READ); + if (error) { /* Unlock what we've locked so far. */ for (--i; i >= 0; i--) { iovp = &uio->uio_iov[i]; uvm_vsunlock(p, iovp->iov_base, iovp->iov_len); } - error = EFAULT; goto fpwrite_done; } } diff --git a/sys/kern/exec_subr.c b/sys/kern/exec_subr.c index bbc97152cc3..600c1c45591 100644 --- a/sys/kern/exec_subr.c +++ b/sys/kern/exec_subr.c @@ -1,4 +1,4 @@ -/* $NetBSD: exec_subr.c,v 1.26 2000/11/27 08:39:42 chs Exp $ */ +/* $NetBSD: exec_subr.c,v 1.27 2001/03/15 06:10:55 chs Exp $ */ /* * Copyright (c) 1993, 1994, 1996 Christopher G. Demetriou @@ -133,20 +133,18 @@ kill_vmcmds(struct exec_vmcmd_set *evsp) int vmcmd_map_pagedvn(struct proc *p, struct exec_vmcmd *cmd) { - /* - * note that if you're going to map part of an process as being - * paged from a vnode, that vnode had damn well better be marked as - * VTEXT. that's handled in the routine which sets up the vmcmd to - * call this routine. - */ - struct uvm_object *uobj; - int retval; + struct uvm_object *uobj; + int error; + +#if 0 + /* XXX not true for eg. ld.elf_so */ + KASSERT(cmd->ev_vp->v_flag & VTEXT); +#endif /* * map the vnode in using uvm_map. */ - /* checks imported from uvm_mmap, needed? */ if (cmd->ev_len == 0) return(0); if (cmd->ev_offset & PAGE_MASK) @@ -160,7 +158,7 @@ vmcmd_map_pagedvn(struct proc *p, struct exec_vmcmd *cmd) * first, attach to the object */ - uobj = uvn_attach((void *) cmd->ev_vp, VM_PROT_READ|VM_PROT_EXECUTE); + uobj = uvn_attach(cmd->ev_vp, VM_PROT_READ|VM_PROT_EXECUTE); if (uobj == NULL) return(ENOMEM); VREF(cmd->ev_vp); @@ -169,24 +167,14 @@ vmcmd_map_pagedvn(struct proc *p, struct exec_vmcmd *cmd) * do the map */ - retval = uvm_map(&p->p_vmspace->vm_map, &cmd->ev_addr, cmd->ev_len, + error = uvm_map(&p->p_vmspace->vm_map, &cmd->ev_addr, cmd->ev_len, uobj, cmd->ev_offset, 0, UVM_MAPFLAG(cmd->ev_prot, VM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_COPYONW|UVM_FLAG_FIXED)); - - /* - * check for error - */ - - if (retval == KERN_SUCCESS) - return(0); - - /* - * error: detach from object - */ - - uobj->pgops->pgo_detach(uobj); - return (EINVAL); + if (error) { + uobj->pgops->pgo_detach(uobj); + } + return error; } /* @@ -202,8 +190,8 @@ vmcmd_map_readvn(struct proc *p, struct exec_vmcmd *cmd) long diff; if (cmd->ev_len == 0) - return(KERN_SUCCESS); /* XXXCDC: should it happen? */ - + return 0; + diff = cmd->ev_addr - trunc_page(cmd->ev_addr); cmd->ev_addr -= diff; /* required by uvm_map */ cmd->ev_offset -= diff; @@ -233,19 +221,20 @@ vmcmd_readvn(struct proc *p, struct exec_vmcmd *cmd) return error; if (cmd->ev_prot != (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE)) { + /* * we had to map in the area at PROT_ALL so that vn_rdwr() * could write to it. however, the caller seems to want * it mapped read-only, so now we are going to have to call * uvm_map_protect() to fix up the protection. ICK. */ - return(uvm_map_protect(&p->p_vmspace->vm_map, + + return uvm_map_protect(&p->p_vmspace->vm_map, trunc_page(cmd->ev_addr), round_page(cmd->ev_addr + cmd->ev_len), - cmd->ev_prot, FALSE)); - } else { - return (KERN_SUCCESS); + cmd->ev_prot, FALSE); } + return 0; } /* @@ -260,9 +249,6 @@ vmcmd_map_zero(struct proc *p, struct exec_vmcmd *cmd) int error; long diff; - if (cmd->ev_len == 0) - return(KERN_SUCCESS); /* XXXCDC: should it happen? */ - diff = cmd->ev_addr - trunc_page(cmd->ev_addr); cmd->ev_addr -= diff; /* required by uvm_map */ cmd->ev_len += diff; @@ -272,8 +258,5 @@ vmcmd_map_zero(struct proc *p, struct exec_vmcmd *cmd) UVM_MAPFLAG(cmd->ev_prot, UVM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_FIXED|UVM_FLAG_COPYONW)); - - if (error) - return error; - return (KERN_SUCCESS); + return error; } diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index c992593cf10..621b071430c 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -1,4 +1,4 @@ -/* $NetBSD: init_main.c,v 1.188 2001/01/01 20:18:34 thorpej Exp $ */ +/* $NetBSD: init_main.c,v 1.189 2001/03/15 06:10:55 chs Exp $ */ /* * Copyright (c) 1995 Christopher G. Demetriou. All rights reserved. @@ -585,8 +585,7 @@ start_init(void *arg) NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, - UVM_FLAG_FIXED|UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)) - != KERN_SUCCESS) + UVM_FLAG_FIXED|UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)) != 0) panic("init: couldn't allocate argument space"); p->p_vmspace->vm_maxsaddr = (caddr_t)addr; diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c index 63557dda8fd..5e851eb4365 100644 --- a/sys/kern/kern_physio.c +++ b/sys/kern/kern_physio.c @@ -1,4 +1,4 @@ -/* $NetBSD: kern_physio.c,v 1.46 2000/12/08 02:25:50 augustss Exp $ */ +/* $NetBSD: kern_physio.c,v 1.47 2001/03/15 06:10:55 chs Exp $ */ /*- * Copyright (c) 1994 Christopher G. Demetriou @@ -86,23 +86,6 @@ physio(strategy, bp, dev, flags, minphys, uio) error = 0; flags &= B_READ | B_WRITE | B_ORDERED; - /* - * [check user read/write access to the data buffer] - * - * Check each iov one by one. Note that we know if we're reading or - * writing, so we ignore the uio's rw parameter. Also note that if - * we're doing a read, that's a *write* to user-space. - */ - if (uio->uio_segflg == UIO_USERSPACE) { - for (i = 0; i < uio->uio_iovcnt; i++) { - /* XXXCDC: map not locked, rethink */ - if (__predict_false(!uvm_useracc(uio->uio_iov[i].iov_base, - uio->uio_iov[i].iov_len, - (flags == B_READ) ? B_WRITE : B_READ))) - return (EFAULT); - } - } - /* Make sure we have a buffer, creating one if necessary. */ if ((nobuf = (bp == NULL)) != 0) { @@ -128,7 +111,6 @@ physio(strategy, bp, dev, flags, minphys, uio) /* [lower the priority level] */ splx(s); - } /* [set up the fixed part of the buffer for a transfer] */ @@ -145,6 +127,7 @@ physio(strategy, bp, dev, flags, minphys, uio) for (i = 0; i < uio->uio_iovcnt; i++) { iovp = &uio->uio_iov[i]; while (iovp->iov_len > 0) { + /* * [mark the buffer busy for physical I/O] * (i.e. set B_PHYS (because it's an I/O to user @@ -182,12 +165,13 @@ physio(strategy, bp, dev, flags, minphys, uio) * restores it. */ PHOLD(p); - if (__predict_false(uvm_vslock(p, bp->b_data, todo, - (flags & B_READ) ? - VM_PROT_READ | VM_PROT_WRITE : VM_PROT_READ) - != KERN_SUCCESS)) { + error = uvm_vslock(p, bp->b_data, todo, + (flags & B_READ) ? + VM_PROT_READ | VM_PROT_WRITE : + VM_PROT_READ); + if (error) { bp->b_flags |= B_ERROR; - bp->b_error = EFAULT; + bp->b_error = error; goto after_vsunlock; } vmapbuf(bp, todo); @@ -233,12 +217,9 @@ physio(strategy, bp, dev, flags, minphys, uio) * of data to transfer] */ done = bp->b_bcount - bp->b_resid; -#ifdef DIAGNOSTIC - if (__predict_false(done < 0)) - panic("done < 0; strategy broken"); - if (__predict_false(done > todo)) - panic("done > todo; strategy broken"); -#endif + KASSERT(done >= 0); + KASSERT(done <= todo); + iovp->iov_len -= done; iovp->iov_base = (caddr_t)iovp->iov_base + done; uio->uio_offset += done; diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index c61fe663e9f..838e137324f 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -1,4 +1,4 @@ -/* $NetBSD: kern_sysctl.c,v 1.86 2000/12/22 22:59:00 jdolecek Exp $ */ +/* $NetBSD: kern_sysctl.c,v 1.87 2001/03/15 06:10:55 chs Exp $ */ /*- * Copyright (c) 1982, 1986, 1989, 1993 @@ -214,10 +214,11 @@ sys___sysctl(p, v, retval) error = lockmgr(&sysctl_memlock, LK_EXCLUSIVE, NULL); if (error) return (error); - if (uvm_vslock(p, SCARG(uap, old), oldlen, - VM_PROT_READ|VM_PROT_WRITE) != KERN_SUCCESS) { + error = uvm_vslock(p, SCARG(uap, old), oldlen, + VM_PROT_READ|VM_PROT_WRITE); + if (error) { (void) lockmgr(&sysctl_memlock, LK_RELEASE, NULL); - return (EFAULT); + return error; } savelen = oldlen; } diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c index 5996e11dee9..ea7c80b7232 100644 --- a/sys/kern/sysv_shm.c +++ b/sys/kern/sysv_shm.c @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_shm.c,v 1.60 2000/11/14 22:16:38 thorpej Exp $ */ +/* $NetBSD: sysv_shm.c,v 1.61 2001/03/15 06:10:56 chs Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -115,7 +115,7 @@ struct shmmap_state { static int shm_find_segment_by_key __P((key_t)); static void shm_deallocate_segment __P((struct shmid_ds *)); -static int shm_delete_mapping __P((struct vmspace *, struct shmmap_state *)); +static void shm_delete_mapping __P((struct vmspace *, struct shmmap_state *)); static int shmget_existing __P((struct proc *, struct sys_shmget_args *, int, int, register_t *)); static int shmget_allocate_segment __P((struct proc *, struct sys_shmget_args *, @@ -169,21 +169,19 @@ shm_deallocate_segment(shmseg) shm_nused--; } -static int +static void shm_delete_mapping(vm, shmmap_s) struct vmspace *vm; struct shmmap_state *shmmap_s; { struct shmid_ds *shmseg; - int segnum, result; + int segnum; size_t size; segnum = IPCID_TO_IX(shmmap_s->shmid); shmseg = &shmsegs[segnum]; size = (shmseg->shm_segsz + PGOFSET) & ~PGOFSET; - result = uvm_deallocate(&vm->vm_map, shmmap_s->va, size); - if (result != KERN_SUCCESS) - return EINVAL; + uvm_deallocate(&vm->vm_map, shmmap_s->va, size); shmmap_s->shmid = -1; shmseg->shm_dtime = time.tv_sec; if ((--shmseg->shm_nattch <= 0) && @@ -191,7 +189,6 @@ shm_delete_mapping(vm, shmmap_s) shm_deallocate_segment(shmseg); shm_last_free = segnum; } - return 0; } int @@ -216,7 +213,8 @@ sys_shmdt(p, v, retval) break; if (i == shminfo.shmseg) return EINVAL; - return shm_delete_mapping(p->p_vmspace, shmmap_s); + shm_delete_mapping(p->p_vmspace, shmmap_s); + return 0; } int @@ -238,7 +236,6 @@ sys_shmat(p, v, retval) vaddr_t attach_va; vm_prot_t prot; vsize_t size; - int rv; shmmap_s = (struct shmmap_state *)p->p_vmspace->vm_shm; if (shmmap_s == NULL) { @@ -284,14 +281,12 @@ sys_shmat(p, v, retval) } shm_handle = shmseg->_shm_internal; uao_reference(shm_handle->shm_object); - rv = uvm_map(&p->p_vmspace->vm_map, &attach_va, size, - shm_handle->shm_object, 0, 0, - UVM_MAPFLAG(prot, prot, UVM_INH_SHARE, - UVM_ADV_RANDOM, 0)); - if (rv != KERN_SUCCESS) { - return ENOMEM; + error = uvm_map(&p->p_vmspace->vm_map, &attach_va, size, + shm_handle->shm_object, 0, 0, + UVM_MAPFLAG(prot, prot, UVM_INH_SHARE, UVM_ADV_RANDOM, 0)); + if (error) { + return error; } - shmmap_s->va = attach_va; shmmap_s->shmid = SCARG(uap, shmid); shmseg->shm_lpid = p->p_pid; diff --git a/sys/uvm/uvm_bio.c b/sys/uvm/uvm_bio.c index fdaac290be3..55ab2be6fb4 100644 --- a/sys/uvm/uvm_bio.c +++ b/sys/uvm/uvm_bio.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_bio.c,v 1.8 2001/03/10 22:46:48 chs Exp $ */ +/* $NetBSD: uvm_bio.c,v 1.9 2001/03/15 06:10:56 chs Exp $ */ /* * Copyright (c) 1998 Chuck Silvers. @@ -183,8 +183,7 @@ ubc_init(void) if (uvm_map(kernel_map, (vaddr_t *)&ubc_object.kva, ubc_nwins * ubc_winsize, &ubc_object.uobj, 0, (vsize_t)va, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE, - UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)) - != KERN_SUCCESS) { + UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)) != 0) { panic("ubc_init: failed to map ubc_object\n"); } UVMHIST_INIT(ubchist, 300); diff --git a/sys/uvm/uvm_device.c b/sys/uvm/uvm_device.c index 06916488e38..7fbbff3bdaf 100644 --- a/sys/uvm/uvm_device.c +++ b/sys/uvm/uvm_device.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_device.c,v 1.31 2001/03/10 22:46:48 chs Exp $ */ +/* $NetBSD: uvm_device.c,v 1.32 2001/03/15 06:10:56 chs Exp $ */ /* * @@ -448,7 +448,7 @@ udv_fault(ufi, vaddr, pps, npages, centeridx, fault_type, access_type, flags) " MAPPING: device: pm=0x%x, va=0x%x, pa=0x%lx, at=%d", ufi->orig_map->pmap, curr_va, paddr, mapprot); if (pmap_enter(ufi->orig_map->pmap, curr_va, paddr, - mapprot, PMAP_CANFAIL | mapprot) != KERN_SUCCESS) { + mapprot, PMAP_CANFAIL | mapprot) != 0) { /* * pmap_enter() didn't have the resource to * enter this mapping. Unlock everything, diff --git a/sys/uvm/uvm_extern.h b/sys/uvm/uvm_extern.h index b88a5a260ea..09c51c799ca 100644 --- a/sys/uvm/uvm_extern.h +++ b/sys/uvm/uvm_extern.h @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_extern.h,v 1.57 2001/03/09 01:02:12 chs Exp $ */ +/* $NetBSD: uvm_extern.h,v 1.58 2001/03/15 06:10:56 chs Exp $ */ /* * @@ -620,7 +620,7 @@ int uvm_sysctl __P((int *, u_int, void *, size_t *, /* uvm_mmap.c */ int uvm_mmap __P((vm_map_t, vaddr_t *, vsize_t, vm_prot_t, vm_prot_t, int, - caddr_t, voff_t, vsize_t)); + void *, voff_t, vsize_t)); /* uvm_page.c */ struct vm_page *uvm_pagealloc_strat __P((struct uvm_object *, @@ -663,7 +663,7 @@ int uvm_coredump32 __P((struct proc *, struct vnode *, struct ucred *, struct core32 *)); /* uvm_user.c */ -int uvm_deallocate __P((vm_map_t, vaddr_t, vsize_t)); +void uvm_deallocate __P((vm_map_t, vaddr_t, vsize_t)); /* uvm_vnode.c */ void uvm_vnp_setsize __P((struct vnode *, voff_t)); diff --git a/sys/uvm/uvm_fault.c b/sys/uvm/uvm_fault.c index b2a1609c13b..cf71d2bcd8c 100644 --- a/sys/uvm/uvm_fault.c +++ b/sys/uvm/uvm_fault.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_fault.c,v 1.57 2001/03/10 22:46:49 chs Exp $ */ +/* $NetBSD: uvm_fault.c,v 1.58 2001/03/15 06:10:56 chs Exp $ */ /* * @@ -297,12 +297,12 @@ uvmfault_anonget(ufi, amap, anon) boolean_t we_own; /* we own anon's page? */ boolean_t locked; /* did we relock? */ struct vm_page *pg; - int result; + int error; UVMHIST_FUNC("uvmfault_anonget"); UVMHIST_CALLED(maphist); LOCK_ASSERT(simple_lock_held(&anon->an_lock)); - result = 0; /* XXX shut up gcc */ + error = 0; uvmexp.fltanget++; /* bump rusage counters */ if (anon->u.an_page) @@ -399,7 +399,7 @@ uvmfault_anonget(ufi, amap, anon) * we hold PG_BUSY on the page. */ uvmexp.pageins++; - result = uvm_swap_get(pg, anon->an_swslot, + error = uvm_swap_get(pg, anon->an_swslot, PGO_SYNCIO); /* @@ -459,7 +459,7 @@ uvmfault_anonget(ufi, amap, anon) return (ERESTART); /* refault! */ } - if (result != 0) { + if (error) { /* remove page from anon */ anon->u.an_page = NULL; @@ -487,7 +487,7 @@ uvmfault_anonget(ufi, amap, anon) else simple_unlock(&anon->an_lock); UVMHIST_LOG(maphist, "<- ERROR", 0,0,0,0); - return (EIO); + return error; } /* @@ -564,7 +564,7 @@ uvm_fault(orig_map, vaddr, fault_type, access_type) struct uvm_faultinfo ufi; vm_prot_t enter_prot; boolean_t wired, narrow, promote, locked, shadowed; - int npages, nback, nforw, centeridx, result, lcv, gotpages; + int npages, nback, nforw, centeridx, error, lcv, gotpages; vaddr_t startva, objaddr, currva, offset, uoff; paddr_t pa; struct vm_amap *amap; @@ -601,11 +601,8 @@ uvm_fault(orig_map, vaddr, fault_type, access_type) * maps are never pageable, and this approach avoids an evil * locking mess. */ - if (orig_map == kernel_map && uvmfault_check_intrsafe(&ufi)) { - UVMHIST_LOG(maphist, "<- VA 0x%lx in intrsafe map %p", - ufi.orig_rvaddr, ufi.map, 0, 0); - return (KERN_FAILURE); - } + + KASSERT(orig_map != kernel_map || !uvmfault_check_intrsafe(&ufi)); /* * "goto ReFault" means restart the page fault from ground zero. @@ -618,10 +615,12 @@ ReFault: if (uvmfault_lookup(&ufi, FALSE) == FALSE) { UVMHIST_LOG(maphist, "<- no mapping @ 0x%x", vaddr, 0,0,0); - return (KERN_INVALID_ADDRESS); + return (EFAULT); } /* locked: maps(read) */ + KASSERT(ufi.map->flags & VM_MAP_PAGEABLE); + /* * check protection */ @@ -631,18 +630,7 @@ ReFault: "<- protection failure (prot=0x%x, access=0x%x)", ufi.entry->protection, access_type, 0, 0); uvmfault_unlockmaps(&ufi, FALSE); - return (KERN_PROTECTION_FAILURE); - } - - /* - * if the map is not a pageable map, a page fault always fails. - */ - - if ((ufi.map->flags & VM_MAP_PAGEABLE) == 0) { - UVMHIST_LOG(maphist, - "<- map %p not pageable", ufi.map, 0, 0, 0); - uvmfault_unlockmaps(&ufi, FALSE); - return (KERN_FAILURE); + return EACCES; } /* @@ -701,7 +689,7 @@ ReFault: if (amap == NULL && uobj == NULL) { uvmfault_unlockmaps(&ufi, FALSE); UVMHIST_LOG(maphist,"<- no backing store, no overlay",0,0,0,0); - return (KERN_INVALID_ADDRESS); + return (EFAULT); } /* @@ -886,18 +874,17 @@ ReFault: simple_lock(&uobj->vmobjlock); /* locked: maps(read), amap (if there), uobj */ - result = uobj->pgops->pgo_fault(&ufi, startva, pages, npages, - centeridx, fault_type, access_type, - PGO_LOCKED|PGO_SYNCIO); + error = uobj->pgops->pgo_fault(&ufi, startva, pages, npages, + centeridx, fault_type, access_type, PGO_LOCKED|PGO_SYNCIO); /* locked: nothing, pgo_fault has unlocked everything */ - if (result == 0) - return (KERN_SUCCESS); /* pgo_fault did pmap enter */ - else if (result == ERESTART) + if (error == 0) + return (0); + else if (error == ERESTART) goto ReFault; /* try again! */ else - return (KERN_PROTECTION_FAILURE); + return EACCES; } /* @@ -1057,8 +1044,8 @@ ReFault: * lock that object for us if it does not fail. */ - result = uvmfault_anonget(&ufi, amap, anon); - switch (result) { + error = uvmfault_anonget(&ufi, amap, anon); + switch (error) { case 0: break; @@ -1070,11 +1057,7 @@ ReFault: goto ReFault; default: -#ifdef DIAGNOSTIC - panic("uvm_fault: uvmfault_anonget -> %d", result); -#else - return (KERN_PROTECTION_FAILURE); -#endif + return error; } /* @@ -1198,7 +1181,7 @@ ReFault: UVMHIST_LOG(maphist, "<- failed. out of VM",0,0,0,0); uvmexp.fltnoanon++; - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } uvmexp.fltnoram++; @@ -1246,7 +1229,7 @@ ReFault: ufi.orig_map->pmap, ufi.orig_rvaddr, pg, 0); if (pmap_enter(ufi.orig_map->pmap, ufi.orig_rvaddr, VM_PAGE_TO_PHYS(pg), enter_prot, access_type | PMAP_CANFAIL | (wired ? PMAP_WIRED : 0)) - != KERN_SUCCESS) { + != 0) { /* * No need to undo what we did; we can simply think of * this as the pmap throwing away the mapping information. @@ -1262,7 +1245,7 @@ ReFault: UVMHIST_LOG(maphist, "<- failed. out of VM",0,0,0,0); /* XXX instrumentation */ - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } /* XXX instrumentation */ uvm_wait("flt_pmfail1"); @@ -1301,7 +1284,7 @@ ReFault: if (anon != oanon) simple_unlock(&anon->an_lock); uvmfault_unlockall(&ufi, amap, uobj, oanon); - return (KERN_SUCCESS); + return 0; Case2: @@ -1355,18 +1338,18 @@ Case2: uvmexp.fltget++; gotpages = 1; uoff = (ufi.orig_rvaddr - ufi.entry->start) + ufi.entry->offset; - result = uobj->pgops->pgo_get(uobj, uoff, &uobjpage, &gotpages, + error = uobj->pgops->pgo_get(uobj, uoff, &uobjpage, &gotpages, 0, access_type & MASK(ufi.entry), ufi.entry->advice, PGO_SYNCIO); - /* locked: uobjpage(if result OK) */ + /* locked: uobjpage(if no error) */ /* * recover from I/O */ - if (result != 0) { - if (result == EAGAIN) { + if (error) { + if (error == EAGAIN) { UVMHIST_LOG(maphist, " pgo_get says TRY AGAIN!",0,0,0,0); tsleep(&lbolt, PVM, "fltagain2", 0); @@ -1374,8 +1357,8 @@ Case2: } UVMHIST_LOG(maphist, "<- pgo_get failed (code %d)", - result, 0,0,0); - return (KERN_PROTECTION_FAILURE); /* XXX i/o error */ + error, 0,0,0); + return error; } /* locked: uobjpage */ @@ -1626,7 +1609,7 @@ Case2: UVMHIST_LOG(maphist, " promote: out of VM", 0,0,0,0); uvmexp.fltnoanon++; - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } UVMHIST_LOG(maphist, " out of RAM, waiting for more", @@ -1707,8 +1690,7 @@ Case2: KASSERT(access_type == VM_PROT_READ || (pg->flags & PG_RDONLY) == 0); if (pmap_enter(ufi.orig_map->pmap, ufi.orig_rvaddr, VM_PAGE_TO_PHYS(pg), pg->flags & PG_RDONLY ? VM_PROT_READ : enter_prot, - access_type | PMAP_CANFAIL | (wired ? PMAP_WIRED : 0)) - != KERN_SUCCESS) { + access_type | PMAP_CANFAIL | (wired ? PMAP_WIRED : 0)) != 0) { /* * No need to undo what we did; we can simply think of @@ -1734,7 +1716,7 @@ Case2: UVMHIST_LOG(maphist, "<- failed. out of VM",0,0,0,0); /* XXX instrumentation */ - return (KERN_RESOURCE_SHORTAGE); + return ENOMEM; } /* XXX instrumentation */ uvm_wait("flt_pmfail2"); @@ -1776,7 +1758,7 @@ Case2: uvmfault_unlockall(&ufi, amap, uobj, anon); UVMHIST_LOG(maphist, "<- done (SUCCESS!)",0,0,0,0); - return (KERN_SUCCESS); + return 0; } @@ -1797,7 +1779,7 @@ uvm_fault_wire(map, start, end, access_type) { vaddr_t va; pmap_t pmap; - int rv; + int error; pmap = vm_map_pmap(map); @@ -1808,16 +1790,16 @@ uvm_fault_wire(map, start, end, access_type) */ for (va = start ; va < end ; va += PAGE_SIZE) { - rv = uvm_fault(map, va, VM_FAULT_WIRE, access_type); - if (rv) { + error = uvm_fault(map, va, VM_FAULT_WIRE, access_type); + if (error) { if (va != start) { uvm_fault_unwire(map, start, va); } - return (rv); + return error; } } - return (KERN_SUCCESS); + return 0; } /* diff --git a/sys/uvm/uvm_glue.c b/sys/uvm/uvm_glue.c index 6ecc2d9744a..3a254e116ca 100644 --- a/sys/uvm/uvm_glue.c +++ b/sys/uvm/uvm_glue.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_glue.c,v 1.44 2001/02/06 19:54:44 eeh Exp $ */ +/* $NetBSD: uvm_glue.c,v 1.45 2001/03/15 06:10:57 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -220,15 +220,13 @@ uvm_vslock(p, addr, len, access_type) { vm_map_t map; vaddr_t start, end; - int rv; + int error; map = &p->p_vmspace->vm_map; start = trunc_page((vaddr_t)addr); end = round_page((vaddr_t)addr + len); - - rv = uvm_fault_wire(map, start, end, access_type); - - return (rv); + error = uvm_fault_wire(map, start, end, access_type); + return error; } /* @@ -273,7 +271,7 @@ uvm_fork(p1, p2, shared, stack, stacksize, func, arg) void *arg; { struct user *up = p2->p_addr; - int rv; + int error; if (shared == TRUE) { p2->p_vmspace = NULL; @@ -290,10 +288,10 @@ uvm_fork(p1, p2, shared, stack, stacksize, func, arg) * Note the kernel stack gets read/write accesses right off * the bat. */ - rv = uvm_fault_wire(kernel_map, (vaddr_t)up, + error = uvm_fault_wire(kernel_map, (vaddr_t)up, (vaddr_t)up + USPACE, VM_PROT_READ | VM_PROT_WRITE); - if (rv != KERN_SUCCESS) - panic("uvm_fork: uvm_fault_wire failed: %d", rv); + if (error) + panic("uvm_fork: uvm_fault_wire failed: %d", error); /* * p_stats currently points at a field in the user struct. Copy diff --git a/sys/uvm/uvm_io.c b/sys/uvm/uvm_io.c index 70ba0ce479b..1e77196beeb 100644 --- a/sys/uvm/uvm_io.c +++ b/sys/uvm/uvm_io.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_io.c,v 1.12 2000/06/27 17:29:23 mrg Exp $ */ +/* $NetBSD: uvm_io.c,v 1.13 2001/03/15 06:10:57 chs Exp $ */ /* * @@ -139,17 +139,10 @@ uvm_io(map, uio) */ vm_map_lock(kernel_map); - (void)uvm_unmap_remove(kernel_map, kva, kva+chunksz, - &dead_entries); + uvm_unmap_remove(kernel_map, kva, kva + chunksz, &dead_entries); vm_map_unlock(kernel_map); - if (dead_entries != NULL) uvm_unmap_detach(dead_entries, AMAP_REFALL); } - - /* - * done - */ - return (error); } diff --git a/sys/uvm/uvm_km.c b/sys/uvm/uvm_km.c index be9bc4bb873..688e6b3c6a2 100644 --- a/sys/uvm/uvm_km.c +++ b/sys/uvm/uvm_km.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_km.c,v 1.42 2001/01/14 02:10:01 thorpej Exp $ */ +/* $NetBSD: uvm_km.c,v 1.43 2001/03/15 06:10:57 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -237,7 +237,7 @@ uvm_km_init(start, end) kernel_map_store.pmap = pmap_kernel(); if (uvm_map(&kernel_map_store, &base, start - base, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, - UVM_INH_NONE, UVM_ADV_RANDOM,UVM_FLAG_FIXED)) != KERN_SUCCESS) + UVM_INH_NONE, UVM_ADV_RANDOM,UVM_FLAG_FIXED)) != 0) panic("uvm_km_init: could not reserve space for kernel"); /* @@ -276,7 +276,7 @@ uvm_km_suballoc(map, min, max, size, flags, fixed, submap) if (uvm_map(map, min, size, NULL, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE, - UVM_ADV_RANDOM, mapflags)) != KERN_SUCCESS) { + UVM_ADV_RANDOM, mapflags)) != 0) { panic("uvm_km_suballoc: unable to allocate space in parent map"); } @@ -304,7 +304,7 @@ uvm_km_suballoc(map, min, max, size, flags, fixed, submap) * now let uvm_map_submap plug in it... */ - if (uvm_map_submap(map, *min, *max, submap) != KERN_SUCCESS) + if (uvm_map_submap(map, *min, *max, submap) != 0) panic("uvm_km_suballoc: submap allocation failed"); return(submap); @@ -510,7 +510,7 @@ uvm_km_kmemalloc(map, obj, size, flags) if (__predict_false(uvm_map(map, &kva, size, obj, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, (flags & UVM_KMF_TRYLOCK))) - != KERN_SUCCESS)) { + != 0)) { UVMHIST_LOG(maphist, "<- done (no VM)",0,0,0,0); return(0); } @@ -613,11 +613,10 @@ uvm_km_free_wakeup(map, addr, size) vm_map_entry_t dead_entries; vm_map_lock(map); - (void)uvm_unmap_remove(map, trunc_page(addr), round_page(addr+size), - &dead_entries); + uvm_unmap_remove(map, trunc_page(addr), round_page(addr + size), + &dead_entries); wakeup(map); vm_map_unlock(map); - if (dead_entries != NULL) uvm_unmap_detach(dead_entries, 0); } @@ -651,7 +650,7 @@ uvm_km_alloc1(map, size, zeroit) if (__predict_false(uvm_map(map, &kva, size, uvm.kernel_object, UVM_UNKNOWN_OFFSET, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, - 0)) != KERN_SUCCESS)) { + 0)) != 0)) { UVMHIST_LOG(maphist,"<- done (no VM)",0,0,0,0); return(0); } @@ -757,7 +756,7 @@ uvm_km_valloc_align(map, size, align) if (__predict_false(uvm_map(map, &kva, size, uvm.kernel_object, UVM_UNKNOWN_OFFSET, align, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, - 0)) != KERN_SUCCESS)) { + 0)) != 0)) { UVMHIST_LOG(maphist, "<- done (no VM)", 0,0,0,0); return(0); } @@ -801,7 +800,7 @@ uvm_km_valloc_prefer_wait(map, size, prefer) if (__predict_true(uvm_map(map, &kva, size, uvm.kernel_object, prefer, 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_NONE, UVM_ADV_RANDOM, 0)) - == KERN_SUCCESS)) { + == 0)) { UVMHIST_LOG(maphist,"<- done (kva=0x%x)", kva,0,0,0); return(kva); } diff --git a/sys/uvm/uvm_loan.c b/sys/uvm/uvm_loan.c index 75ae2cf27ce..46fdcb85d52 100644 --- a/sys/uvm/uvm_loan.c +++ b/sys/uvm/uvm_loan.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_loan.c,v 1.24 2001/03/10 22:46:49 chs Exp $ */ +/* $NetBSD: uvm_loan.c,v 1.25 2001/03/15 06:10:57 chs Exp $ */ /* * @@ -219,21 +219,15 @@ uvm_loan(map, start, len, result, flags) { struct uvm_faultinfo ufi; void **output; - int rv; - -#ifdef DIAGNOSTIC - if (map->flags & VM_MAP_INTRSAFE) - panic("uvm_loan: intrsafe map"); -#endif + int rv, error; /* * ensure that one and only one of the flags is set */ - if ((flags & (UVM_LOAN_TOANON|UVM_LOAN_TOPAGE)) == - (UVM_LOAN_TOANON|UVM_LOAN_TOPAGE) || - (flags & (UVM_LOAN_TOANON|UVM_LOAN_TOPAGE)) == 0) - return(KERN_FAILURE); + KASSERT(((flags & UVM_LOAN_TOANON) == 0) ^ + ((flags & UVM_LOAN_TOPAGE) == 0)); + KASSERT((map->flags & VM_MAP_INTRSAFE) == 0); /* * "output" is a pointer to the current place to put the loaned @@ -261,15 +255,19 @@ uvm_loan(map, start, len, result, flags) * an unmapped region (an error) */ - if (!uvmfault_lookup(&ufi, FALSE)) + if (!uvmfault_lookup(&ufi, FALSE)) { + error = ENOENT; goto fail; + } /* * now do the loanout */ rv = uvm_loanentry(&ufi, &output, flags); - if (rv < 0) + if (rv < 0) { + error = EINVAL; goto fail; + } /* * done! advance pointers and unlock. @@ -284,7 +282,7 @@ uvm_loan(map, start, len, result, flags) * got it! return success. */ - return(KERN_SUCCESS); + return 0; fail: /* @@ -298,7 +296,7 @@ fail: uvm_unloanpage((struct vm_page **)result, output - result); } - return(KERN_FAILURE); + return error; } /* diff --git a/sys/uvm/uvm_map.c b/sys/uvm/uvm_map.c index 5df17d45a4b..64f97e96eda 100644 --- a/sys/uvm/uvm_map.c +++ b/sys/uvm/uvm_map.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_map.c,v 1.93 2001/02/11 01:34:23 eeh Exp $ */ +/* $NetBSD: uvm_map.c,v 1.94 2001/03/15 06:10:57 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -528,7 +528,7 @@ uvm_map(map, startp, size, uobj, uoffset, align, flags) if ((prot & maxprot) != prot) { UVMHIST_LOG(maphist, "<- prot. failure: prot=0x%x, max=0x%x", prot, maxprot,0,0); - return(KERN_PROTECTION_FAILURE); + return EACCES; } /* @@ -537,14 +537,14 @@ uvm_map(map, startp, size, uobj, uoffset, align, flags) if (vm_map_lock_try(map) == FALSE) { if (flags & UVM_FLAG_TRYLOCK) - return(KERN_FAILURE); + return EAGAIN; vm_map_lock(map); /* could sleep here */ } if ((prev_entry = uvm_map_findspace(map, *startp, size, startp, uobj, uoffset, align, flags)) == NULL) { UVMHIST_LOG(maphist,"<- uvm_map_findspace failed!",0,0,0,0); vm_map_unlock(map); - return (KERN_NO_SPACE); + return ENOMEM; } #ifdef PMAP_GROWKERNEL @@ -647,7 +647,7 @@ uvm_map(map, startp, size, uobj, uoffset, align, flags) UVMHIST_LOG(maphist,"<- done (via backmerge)!", 0, 0, 0, 0); vm_map_unlock(map); - return (KERN_SUCCESS); + return 0; } step3: @@ -718,7 +718,7 @@ step3: UVMHIST_LOG(maphist,"<- done!", 0, 0, 0, 0); vm_map_unlock(map); - return(KERN_SUCCESS); + return 0; } /* @@ -957,7 +957,7 @@ uvm_map_findspace(map, hint, length, result, uobj, uoffset, align, flags) * in "entry_list" */ -int +void uvm_unmap_remove(map, start, end, entry_list) vm_map_t map; vaddr_t start,end; @@ -1125,7 +1125,6 @@ uvm_unmap_remove(map, start, end, entry_list) *entry_list = first_entry; UVMHIST_LOG(maphist,"<- done!", 0, 0, 0, 0); - return(KERN_SUCCESS); } /* @@ -1215,7 +1214,7 @@ uvm_map_reserve(map, size, offset, align, raddr) if (uvm_map(map, raddr, size, NULL, offset, 0, UVM_MAPFLAG(UVM_PROT_NONE, UVM_PROT_NONE, UVM_INH_NONE, - UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)) != KERN_SUCCESS) { + UVM_ADV_RANDOM, UVM_FLAG_NOMERGE)) != 0) { UVMHIST_LOG(maphist, "<- done (no VM)", 0,0,0,0); return (FALSE); } @@ -1688,7 +1687,7 @@ uvm_map_submap(map, start, end, submap) vaddr_t start, end; { vm_map_entry_t entry; - int result; + int error; vm_map_lock(map); VM_MAP_RANGE_CHECK(map, start, end); @@ -1696,8 +1695,7 @@ uvm_map_submap(map, start, end, submap) if (uvm_map_lookup_entry(map, start, &entry)) { UVM_MAP_CLIP_START(map, entry, start); UVM_MAP_CLIP_END(map, entry, end); /* to be safe */ - } - else { + } else { entry = NULL; } @@ -1709,12 +1707,12 @@ uvm_map_submap(map, start, end, submap) entry->object.sub_map = submap; entry->offset = 0; uvm_map_reference(submap); - result = KERN_SUCCESS; + error = 0; } else { - result = KERN_INVALID_ARGUMENT; + error = EINVAL; } vm_map_unlock(map); - return(result); + return error; } @@ -1727,7 +1725,6 @@ uvm_map_submap(map, start, end, submap) #define MASK(entry) (UVM_ET_ISCOPYONWRITE(entry) ? \ ~VM_PROT_WRITE : VM_PROT_ALL) -#define max(a,b) ((a) > (b) ? (a) : (b)) int uvm_map_protect(map, start, end, new_prot, set_max) @@ -1737,15 +1734,13 @@ uvm_map_protect(map, start, end, new_prot, set_max) boolean_t set_max; { vm_map_entry_t current, entry; - int rv = KERN_SUCCESS; + int error = 0; UVMHIST_FUNC("uvm_map_protect"); UVMHIST_CALLED(maphist); UVMHIST_LOG(maphist,"(map=0x%x,start=0x%x,end=0x%x,new_prot=0x%x)", map, start, end, new_prot); vm_map_lock(map); - VM_MAP_RANGE_CHECK(map, start, end); - if (uvm_map_lookup_entry(map, start, &entry)) { UVM_MAP_CLIP_START(map, entry, start); } else { @@ -1759,11 +1754,11 @@ uvm_map_protect(map, start, end, new_prot, set_max) current = entry; while ((current != &map->header) && (current->start < end)) { if (UVM_ET_ISSUBMAP(current)) { - rv = KERN_INVALID_ARGUMENT; + error = EINVAL; goto out; } if ((new_prot & current->max_protection) != new_prot) { - rv = KERN_PROTECTION_FAILURE; + error = EACCES; goto out; } current = current->next; @@ -1772,12 +1767,10 @@ uvm_map_protect(map, start, end, new_prot, set_max) /* go back and fix up protections (no need to clip this time). */ current = entry; - while ((current != &map->header) && (current->start < end)) { vm_prot_t old_prot; UVM_MAP_CLIP_END(map, current, end); - old_prot = current->protection; if (set_max) current->protection = @@ -1808,13 +1801,13 @@ uvm_map_protect(map, start, end, new_prot, set_max) new_prot != VM_PROT_NONE) { if (uvm_map_pageable(map, entry->start, entry->end, FALSE, - UVM_LK_ENTER|UVM_LK_EXIT) != KERN_SUCCESS) { + UVM_LK_ENTER|UVM_LK_EXIT) != 0) { /* * If locking the entry fails, remember the * error if it's the first one. Note we * still continue setting the protection in - * the map, but will return the resource - * shortage condition regardless. + * the map, but will return the error + * condition regardless. * * XXX Ignore what the actual error is, * XXX just call it a resource shortage @@ -1822,7 +1815,7 @@ uvm_map_protect(map, start, end, new_prot, set_max) * XXX what uvm_map_protect() itself would * XXX normally return. */ - rv = KERN_RESOURCE_SHORTAGE; + error = ENOMEM; } } @@ -1831,11 +1824,10 @@ uvm_map_protect(map, start, end, new_prot, set_max) out: vm_map_unlock(map); - UVMHIST_LOG(maphist, "<- done, rv=%d",rv,0,0,0); - return (rv); + UVMHIST_LOG(maphist, "<- done, error=%d",error,0,0,0); + return error; } -#undef max #undef MASK /* @@ -1865,7 +1857,7 @@ uvm_map_inherit(map, start, end, new_inheritance) break; default: UVMHIST_LOG(maphist,"<- done (INVALID ARG)",0,0,0,0); - return (KERN_INVALID_ARGUMENT); + return EINVAL; } vm_map_lock(map); @@ -1886,7 +1878,7 @@ uvm_map_inherit(map, start, end, new_inheritance) vm_map_unlock(map); UVMHIST_LOG(maphist,"<- done (OK)",0,0,0,0); - return(KERN_SUCCESS); + return 0; } /* @@ -1933,7 +1925,7 @@ uvm_map_advice(map, start, end, new_advice) default: vm_map_unlock(map); UVMHIST_LOG(maphist,"<- done (INVALID ARG)",0,0,0,0); - return (KERN_INVALID_ARGUMENT); + return EINVAL; } entry->advice = new_advice; entry = entry->next; @@ -1941,7 +1933,7 @@ uvm_map_advice(map, start, end, new_advice) vm_map_unlock(map); UVMHIST_LOG(maphist,"<- done (OK)",0,0,0,0); - return (KERN_SUCCESS); + return 0; } /* @@ -1977,7 +1969,6 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) if ((lockflags & UVM_LK_ENTER) == 0) vm_map_lock(map); - VM_MAP_RANGE_CHECK(map, start, end); /* @@ -1992,8 +1983,8 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) if ((lockflags & UVM_LK_EXIT) == 0) vm_map_unlock(map); - UVMHIST_LOG(maphist,"<- done (INVALID ARG)",0,0,0,0); - return (KERN_INVALID_ADDRESS); + UVMHIST_LOG(maphist,"<- done (fault)",0,0,0,0); + return EFAULT; } entry = start_entry; @@ -2016,9 +2007,8 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) entry->next->start > entry->end))) { if ((lockflags & UVM_LK_EXIT) == 0) vm_map_unlock(map); - UVMHIST_LOG(maphist, - "<- done (INVALID UNWIRE ARG)",0,0,0,0); - return (KERN_INVALID_ARGUMENT); + UVMHIST_LOG(maphist, "<- done (INVAL)",0,0,0,0); + return EINVAL; } entry = entry->next; } @@ -2039,7 +2029,7 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) if ((lockflags & UVM_LK_EXIT) == 0) vm_map_unlock(map); UVMHIST_LOG(maphist,"<- done (OK UNWIRE)",0,0,0,0); - return(KERN_SUCCESS); + return 0; } /* @@ -2109,7 +2099,7 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) if ((lockflags & UVM_LK_EXIT) == 0) vm_map_unlock(map); UVMHIST_LOG(maphist,"<- done (INVALID WIRE)",0,0,0,0); - return (KERN_INVALID_ARGUMENT); + return EINVAL; } entry = entry->next; } @@ -2131,11 +2121,13 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) rv = uvm_fault_wire(map, entry->start, entry->end, entry->protection); if (rv) { + /* * wiring failed. break out of the loop. * we'll clean up the map below, once we * have a write lock again. */ + break; } } @@ -2200,7 +2192,7 @@ uvm_map_pageable(map, start, end, new_pageable, lockflags) } UVMHIST_LOG(maphist,"<- done (OK WIRE)",0,0,0,0); - return(KERN_SUCCESS); + return 0; } /* @@ -2248,7 +2240,7 @@ uvm_map_pageable_all(map, flags, limit) vm_map_modflags(map, 0, VM_MAP_WIREFUTURE); vm_map_unlock(map); UVMHIST_LOG(maphist,"<- done (OK UNWIRE)",0,0,0,0); - return (KERN_SUCCESS); + return 0; /* * end of unwire case! @@ -2268,7 +2260,7 @@ uvm_map_pageable_all(map, flags, limit) */ UVMHIST_LOG(maphist,"<- done (OK no wire)",0,0,0,0); vm_map_unlock(map); - return (KERN_SUCCESS); + return 0; } /* @@ -2304,7 +2296,7 @@ uvm_map_pageable_all(map, flags, limit) if (atop(size) + uvmexp.wired > uvmexp.wiredmax) { vm_map_unlock(map); - return (KERN_NO_SPACE); /* XXX overloaded */ + return ENOMEM; } /* XXX non-pmap_wired_count case must be handled by caller */ @@ -2312,7 +2304,7 @@ uvm_map_pageable_all(map, flags, limit) if (limit != 0 && (size + ptoa(pmap_wired_count(vm_map_pmap(map))) > limit)) { vm_map_unlock(map); - return (KERN_NO_SPACE); /* XXX overloaded */ + return ENOMEM; } #endif @@ -2355,7 +2347,7 @@ uvm_map_pageable_all(map, flags, limit) vm_map_busy(map); vm_map_downgrade(map); - rv = KERN_SUCCESS; + rv = 0; for (entry = map->header.next; entry != &map->header; entry = entry->next) { if (entry->wired_count == 1) { @@ -2422,7 +2414,7 @@ uvm_map_pageable_all(map, flags, limit) vm_map_unlock_read(map); UVMHIST_LOG(maphist,"<- done (OK WIRE)",0,0,0,0); - return (KERN_SUCCESS); + return 0; } /* @@ -2466,7 +2458,7 @@ uvm_map_clean(map, start, end, flags) VM_MAP_RANGE_CHECK(map, start, end); if (uvm_map_lookup_entry(map, start, &entry) == FALSE) { vm_map_unlock_read(map); - return(KERN_INVALID_ADDRESS); + return EFAULT; } /* @@ -2476,19 +2468,18 @@ uvm_map_clean(map, start, end, flags) for (current = entry; current->start < end; current = current->next) { if (UVM_ET_ISSUBMAP(current)) { vm_map_unlock_read(map); - return (KERN_INVALID_ARGUMENT); + return EINVAL; } if (end <= current->end) { break; } if (current->end != current->next->start) { vm_map_unlock_read(map); - return (KERN_INVALID_ADDRESS); + return EFAULT; } } - error = KERN_SUCCESS; - + error = 0; for (current = entry; start < end; current = current->next) { amap = current->aref.ar_amap; /* top layer */ uobj = current->object.uvm_obj; /* bottom layer */ @@ -2607,7 +2598,7 @@ uvm_map_clean(map, start, end, flags) simple_unlock(&uobj->vmobjlock); if (rv == FALSE) - error = KERN_FAILURE; + error = EIO; } start += size; } @@ -2629,40 +2620,40 @@ uvm_map_checkprot(map, start, end, protection) vaddr_t start, end; vm_prot_t protection; { - vm_map_entry_t entry; - vm_map_entry_t tmp_entry; - - if (!uvm_map_lookup_entry(map, start, &tmp_entry)) { - return(FALSE); - } - entry = tmp_entry; - while (start < end) { - if (entry == &map->header) { - return(FALSE); - } + vm_map_entry_t entry; + vm_map_entry_t tmp_entry; + + if (!uvm_map_lookup_entry(map, start, &tmp_entry)) { + return(FALSE); + } + entry = tmp_entry; + while (start < end) { + if (entry == &map->header) { + return(FALSE); + } /* * no holes allowed */ - if (start < entry->start) { - return(FALSE); - } + if (start < entry->start) { + return(FALSE); + } /* * check protection associated with entry */ - if ((entry->protection & protection) != protection) { - return(FALSE); - } + if ((entry->protection & protection) != protection) { + return(FALSE); + } - /* go to next entry */ + /* go to next entry */ - start = entry->end; - entry = entry->next; - } - return(TRUE); + start = entry->end; + entry = entry->next; + } + return(TRUE); } /* @@ -2702,15 +2693,12 @@ uvmspace_init(vm, pmap, min, max, pageable) UVMHIST_FUNC("uvmspace_init"); UVMHIST_CALLED(maphist); memset(vm, 0, sizeof(*vm)); - uvm_map_setup(&vm->vm_map, min, max, pageable ? VM_MAP_PAGEABLE : 0); - if (pmap) pmap_reference(pmap); else pmap = pmap_create(); vm->vm_map.pmap = pmap; - vm->vm_refcnt = 1; UVMHIST_LOG(maphist,"<- done",0,0,0,0); } @@ -2814,8 +2802,6 @@ uvmspace_exec(p, start, end) map->min_offset = start; map->max_offset = end; vm_map_unlock(map); - - } else { /* @@ -2865,7 +2851,7 @@ uvmspace_free(vm) #endif vm_map_lock(&vm->vm_map); if (vm->vm_map.nentries) { - (void)uvm_unmap_remove(&vm->vm_map, + uvm_unmap_remove(&vm->vm_map, vm->vm_map.min_offset, vm->vm_map.max_offset, &dead_entries); if (dead_entries != NULL) @@ -2921,13 +2907,9 @@ uvmspace_fork(vm1) /* * first, some sanity checks on the old entry */ - if (UVM_ET_ISSUBMAP(old_entry)) - panic("fork: encountered a submap during fork (illegal)"); - - if (!UVM_ET_ISCOPYONWRITE(old_entry) && - UVM_ET_ISNEEDSCOPY(old_entry)) - panic("fork: non-copy_on_write map entry marked needs_copy (illegal)"); - + KASSERT(!UVM_ET_ISSUBMAP(old_entry)); + KASSERT(UVM_ET_ISCOPYONWRITE(old_entry) || + !UVM_ET_ISNEEDSCOPY(old_entry)); switch (old_entry->inheritance) { case MAP_INHERIT_NONE: diff --git a/sys/uvm/uvm_map.h b/sys/uvm/uvm_map.h index 0ed92dc9010..696e75461da 100644 --- a/sys/uvm/uvm_map.h +++ b/sys/uvm/uvm_map.h @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_map.h,v 1.24 2001/02/18 21:19:08 chs Exp $ */ +/* $NetBSD: uvm_map.h,v 1.25 2001/03/15 06:10:57 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -342,9 +342,9 @@ int uvm_map_reserve __P((vm_map_t, vsize_t, vaddr_t, vsize_t, void uvm_map_setup __P((vm_map_t, vaddr_t, vaddr_t, int)); int uvm_map_submap __P((vm_map_t, vaddr_t, vaddr_t, vm_map_t)); MAP_INLINE -int uvm_unmap __P((vm_map_t, vaddr_t, vaddr_t)); +void uvm_unmap __P((vm_map_t, vaddr_t, vaddr_t)); void uvm_unmap_detach __P((vm_map_entry_t,int)); -int uvm_unmap_remove __P((vm_map_t, vaddr_t, vaddr_t, +void uvm_unmap_remove __P((vm_map_t, vaddr_t, vaddr_t, vm_map_entry_t *)); #endif /* _KERNEL */ diff --git a/sys/uvm/uvm_map_i.h b/sys/uvm/uvm_map_i.h index 7c8671715c3..a2bd4c7f7d2 100644 --- a/sys/uvm/uvm_map_i.h +++ b/sys/uvm/uvm_map_i.h @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_map_i.h,v 1.18 2000/11/27 08:40:04 chs Exp $ */ +/* $NetBSD: uvm_map_i.h,v 1.19 2001/03/15 06:10:57 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -158,12 +158,11 @@ uvm_map_setup(map, min, max, flags) * => map must be unlocked (we will lock it) */ -MAP_INLINE int +MAP_INLINE void uvm_unmap(map, start, end) vm_map_t map; vaddr_t start,end; { - int result; vm_map_entry_t dead_entries; UVMHIST_FUNC("uvm_unmap"); UVMHIST_CALLED(maphist); @@ -174,14 +173,13 @@ uvm_unmap(map, start, end) * detach from the dead entries... */ vm_map_lock(map); - result = uvm_unmap_remove(map, start, end, &dead_entries); + uvm_unmap_remove(map, start, end, &dead_entries); vm_map_unlock(map); if (dead_entries != NULL) uvm_unmap_detach(dead_entries, 0); UVMHIST_LOG(maphist, "<- done", 0,0,0,0); - return(result); } diff --git a/sys/uvm/uvm_mmap.c b/sys/uvm/uvm_mmap.c index 085059014e6..b848d893ea8 100644 --- a/sys/uvm/uvm_mmap.c +++ b/sys/uvm/uvm_mmap.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_mmap.c,v 1.49 2001/02/18 21:19:08 chs Exp $ */ +/* $NetBSD: uvm_mmap.c,v 1.50 2001/03/15 06:10:57 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -164,8 +164,8 @@ sys_mincore(p, v, retval) * Lock down vec, so our returned status isn't outdated by * storing the status byte for a page. */ - uvm_vslock(p, vec, npgs, VM_PROT_WRITE); + uvm_vslock(p, vec, npgs, VM_PROT_WRITE); vm_map_lock_read(map); if (uvm_map_lookup_entry(map, start, &entry) == FALSE) { @@ -193,6 +193,7 @@ sys_mincore(p, v, retval) * Special case for objects with no "real" pages. Those * are always considered resident (mapped devices). */ + if (UVM_ET_ISOBJ(entry)) { KASSERT(!UVM_OBJ_IS_KERN_OBJECT(entry->object.uvm_obj)); if (entry->object.uvm_obj->pgops->pgo_releasepg @@ -220,30 +221,31 @@ sys_mincore(p, v, retval) start - entry->start); /* Don't need to lock anon here. */ if (anon != NULL && anon->u.an_page != NULL) { + /* * Anon has the page for this entry * offset. */ + pgi = 1; } } - if (uobj != NULL && pgi == 0) { /* Check the bottom layer. */ m = uvm_pagelookup(uobj, entry->offset + (start - entry->start)); if (m != NULL) { + /* * Object has the page for this entry * offset. */ + pgi = 1; } } - (void) subyte(vec, pgi); } - if (uobj != NULL) simple_unlock(&uobj->vmobjlock); if (amap != NULL) @@ -290,15 +292,15 @@ sys_mmap(p, v, retval) struct filedesc *fdp = p->p_fd; struct file *fp; struct vnode *vp; - caddr_t handle; + void *handle; int error; /* * first, extract syscall args from the uap. */ - addr = (vaddr_t) SCARG(uap, addr); - size = (vsize_t) SCARG(uap, len); + addr = (vaddr_t)SCARG(uap, addr); + size = (vsize_t)SCARG(uap, len); prot = SCARG(uap, prot) & VM_PROT_ALL; flags = SCARG(uap, flags); fd = SCARG(uap, fd); @@ -320,7 +322,7 @@ sys_mmap(p, v, retval) pageoff = (pos & PAGE_MASK); pos -= pageoff; size += pageoff; /* add offset */ - size = (vsize_t) round_page(size); /* round up */ + size = (vsize_t)round_page(size); /* round up */ if ((ssize_t) size < 0) return (EINVAL); /* don't allow wrap */ @@ -350,10 +352,8 @@ sys_mmap(p, v, retval) * we will refine our guess later (e.g. to account for VAC, etc) */ - if (addr < round_page((vaddr_t)p->p_vmspace->vm_daddr + - MAXDSIZ)) - addr = round_page((vaddr_t)p->p_vmspace->vm_daddr + - MAXDSIZ); + addr = MAX(addr, round_page((vaddr_t)p->p_vmspace->vm_daddr + + MAXDSIZ)); } /* @@ -448,12 +448,7 @@ sys_mmap(p, v, retval) /* MAP_PRIVATE mappings can always write to */ maxprot |= VM_PROT_WRITE; } - - /* - * set handle to vnode - */ - - handle = (caddr_t)vp; + handle = vp; } else { /* MAP_ANON case */ /* @@ -478,7 +473,8 @@ sys_mmap(p, v, retval) if ((flags & MAP_ANON) != 0 || ((flags & MAP_PRIVATE) != 0 && (prot & PROT_WRITE) != 0)) { if (size > - (p->p_rlimit[RLIMIT_DATA].rlim_cur - ctob(p->p_vmspace->vm_dsize))) { + (p->p_rlimit[RLIMIT_DATA].rlim_cur - + ctob(p->p_vmspace->vm_dsize))) { return (ENOMEM); } } @@ -515,7 +511,7 @@ sys___msync13(p, v, retval) vaddr_t addr; vsize_t size, pageoff; vm_map_t map; - int rv, flags, uvmflags; + int error, rv, flags, uvmflags; /* * extract syscall args from the uap @@ -534,13 +530,13 @@ sys___msync13(p, v, retval) flags |= MS_SYNC; /* - * align the address to a page boundary, and adjust the size accordingly + * align the address to a page boundary and adjust the size accordingly. */ pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); /* disallow wrap-around. */ if (addr + size < addr) @@ -562,6 +558,7 @@ sys___msync13(p, v, retval) * This can be incorrect if the region splits or is coalesced * with a neighbor. */ + if (size == 0) { vm_map_entry_t entry; @@ -579,6 +576,7 @@ sys___msync13(p, v, retval) /* * translate MS_ flags into PGO_ flags */ + uvmflags = PGO_CLEANIT; if (flags & MS_INVALIDATE) uvmflags |= PGO_FREE; @@ -587,27 +585,8 @@ sys___msync13(p, v, retval) else uvmflags |= PGO_SYNCIO; /* XXXCDC: force sync for now! */ - /* - * doit! - */ - rv = uvm_map_clean(map, addr, addr+size, uvmflags); - - /* - * and return... - */ - switch (rv) { - case KERN_SUCCESS: - return(0); - case KERN_INVALID_ADDRESS: - return (ENOMEM); - case KERN_FAILURE: - return (EIO); - case KERN_PAGES_LOCKED: /* XXXCDC: uvm doesn't return this */ - return (EBUSY); - default: - return (EINVAL); - } - /*NOTREACHED*/ + error = uvm_map_clean(map, addr, addr+size, uvmflags); + return error; } /* @@ -631,20 +610,20 @@ sys_munmap(p, v, retval) struct vm_map_entry *dead_entries; /* - * get syscall args... + * get syscall args. */ - addr = (vaddr_t) SCARG(uap, addr); - size = (vsize_t) SCARG(uap, len); + addr = (vaddr_t)SCARG(uap, addr); + size = (vsize_t)SCARG(uap, len); /* - * align the address to a page boundary, and adjust the size accordingly + * align the address to a page boundary and adjust the size accordingly. */ pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); if ((int)size < 0) return (EINVAL); @@ -663,29 +642,20 @@ sys_munmap(p, v, retval) return (EINVAL); map = &p->p_vmspace->vm_map; - - vm_map_lock(map); /* lock map so we can checkprot */ - /* * interesting system call semantic: make sure entire range is * allocated before allowing an unmap. */ + vm_map_lock(map); if (!uvm_map_checkprot(map, addr, addr + size, VM_PROT_NONE)) { vm_map_unlock(map); return (EINVAL); } - - /* - * doit! - */ - (void) uvm_unmap_remove(map, addr, addr + size, &dead_entries); - - vm_map_unlock(map); /* and unlock */ - + uvm_unmap_remove(map, addr, addr + size, &dead_entries); + vm_map_unlock(map); if (dead_entries != NULL) uvm_unmap_detach(dead_entries, 0); - return (0); } @@ -707,7 +677,7 @@ sys_mprotect(p, v, retval) vaddr_t addr; vsize_t size, pageoff; vm_prot_t prot; - int rv; + int error; /* * extract syscall args from uap @@ -718,27 +688,19 @@ sys_mprotect(p, v, retval) prot = SCARG(uap, prot) & VM_PROT_ALL; /* - * align the address to a page boundary, and adjust the size accordingly + * align the address to a page boundary and adjust the size accordingly. */ + pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); + if ((int)size < 0) return (EINVAL); - - /* - * doit - */ - - rv = uvm_map_protect(&p->p_vmspace->vm_map, - addr, addr+size, prot, FALSE); - - if (rv == KERN_SUCCESS) - return (0); - if (rv == KERN_PROTECTION_FAILURE) - return (EACCES); - return (EINVAL); + error = uvm_map_protect(&p->p_vmspace->vm_map, addr, addr + size, prot, + FALSE); + return error; } /* @@ -759,30 +721,26 @@ sys_minherit(p, v, retval) vaddr_t addr; vsize_t size, pageoff; vm_inherit_t inherit; + int error; addr = (vaddr_t)SCARG(uap, addr); size = (vsize_t)SCARG(uap, len); inherit = SCARG(uap, inherit); + /* - * align the address to a page boundary, and adjust the size accordingly + * align the address to a page boundary and adjust the size accordingly. */ pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); if ((int)size < 0) return (EINVAL); - - switch (uvm_map_inherit(&p->p_vmspace->vm_map, addr, addr+size, - inherit)) { - case KERN_SUCCESS: - return (0); - case KERN_PROTECTION_FAILURE: - return (EACCES); - } - return (EINVAL); + error = uvm_map_inherit(&p->p_vmspace->vm_map, addr, addr + size, + inherit); + return error; } /* @@ -803,7 +761,7 @@ sys_madvise(p, v, retval) } */ *uap = v; vaddr_t addr; vsize_t size, pageoff; - int advice, rv;; + int advice, error; addr = (vaddr_t)SCARG(uap, addr); size = (vsize_t)SCARG(uap, len); @@ -812,10 +770,11 @@ sys_madvise(p, v, retval) /* * align the address to a page boundary, and adjust the size accordingly */ + pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); if ((ssize_t)size <= 0) return (EINVAL); @@ -824,11 +783,12 @@ sys_madvise(p, v, retval) case MADV_NORMAL: case MADV_RANDOM: case MADV_SEQUENTIAL: - rv = uvm_map_advice(&p->p_vmspace->vm_map, addr, addr + size, + error = uvm_map_advice(&p->p_vmspace->vm_map, addr, addr + size, advice); break; case MADV_WILLNEED: + /* * Activate all these pages, pre-faulting them in if * necessary. @@ -838,29 +798,35 @@ sys_madvise(p, v, retval) * Should invent a "weak" mode for uvm_fault() * which would only do the PGO_LOCKED pgo_get(). */ + return (0); case MADV_DONTNEED: + /* * Deactivate all these pages. We don't need them * any more. We don't, however, toss the data in * the pages. */ - rv = uvm_map_clean(&p->p_vmspace->vm_map, addr, addr + size, + + error = uvm_map_clean(&p->p_vmspace->vm_map, addr, addr + size, PGO_DEACTIVATE); break; case MADV_FREE: + /* * These pages contain no valid data, and may be * garbage-collected. Toss all resources, including * any swap space in use. */ - rv = uvm_map_clean(&p->p_vmspace->vm_map, addr, addr + size, + + error = uvm_map_clean(&p->p_vmspace->vm_map, addr, addr + size, PGO_FREE); break; case MADV_SPACEAVAIL: + /* * XXXMRG What is this? I think it's: * @@ -871,24 +837,14 @@ sys_madvise(p, v, retval) * as it will free swap space allocated to pages in core. * There's also what to do for device/file/anonymous memory. */ + return (EINVAL); default: return (EINVAL); } - switch (rv) { - case KERN_SUCCESS: - return (0); - case KERN_NO_SPACE: - return (EAGAIN); - case KERN_INVALID_ADDRESS: - return (ENOMEM); - case KERN_FAILURE: - return (EIO); - } - - return (EINVAL); + return error; } /* @@ -912,19 +868,21 @@ sys_mlock(p, v, retval) /* * extract syscall args from uap */ + addr = (vaddr_t)SCARG(uap, addr); size = (vsize_t)SCARG(uap, len); /* * align the address to a page boundary and adjust the size accordingly */ + pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); /* disallow wrap-around. */ - if (addr + (int)size < addr) + if (addr + size < addr) return (EINVAL); if (atop(size) + uvmexp.wired > uvmexp.wiredmax) @@ -941,7 +899,7 @@ sys_mlock(p, v, retval) error = uvm_map_pageable(&p->p_vmspace->vm_map, addr, addr+size, FALSE, 0); - return (error == KERN_SUCCESS ? 0 : ENOMEM); + return error; } /* @@ -972,13 +930,14 @@ sys_munlock(p, v, retval) /* * align the address to a page boundary, and adjust the size accordingly */ + pageoff = (addr & PAGE_MASK); addr -= pageoff; size += pageoff; - size = (vsize_t) round_page(size); + size = (vsize_t)round_page(size); /* disallow wrap-around. */ - if (addr + (int)size < addr) + if (addr + size < addr) return (EINVAL); #ifndef pmap_wired_count @@ -988,7 +947,7 @@ sys_munlock(p, v, retval) error = uvm_map_pageable(&p->p_vmspace->vm_map, addr, addr+size, TRUE, 0); - return (error == KERN_SUCCESS ? 0 : ENOMEM); + return error; } /* @@ -1019,23 +978,6 @@ sys_mlockall(p, v, retval) error = uvm_map_pageable_all(&p->p_vmspace->vm_map, flags, p->p_rlimit[RLIMIT_MEMLOCK].rlim_cur); - switch (error) { - case KERN_SUCCESS: - error = 0; - break; - - case KERN_NO_SPACE: /* XXX overloaded */ - error = ENOMEM; - break; - - default: - /* - * "Some or all of the memory could not be locked when - * the call was made." - */ - error = EAGAIN; - } - return (error); } @@ -1070,13 +1012,13 @@ uvm_mmap(map, addr, size, prot, maxprot, flags, handle, foff, locklimit) vsize_t size; vm_prot_t prot, maxprot; int flags; - caddr_t handle; /* XXX: VNODE? */ + void *handle; voff_t foff; vsize_t locklimit; { struct uvm_object *uobj; struct vnode *vp; - int retval; + int error; int advice = UVM_ADV_NORMAL; uvm_flag_t uvmflag = 0; @@ -1099,7 +1041,6 @@ uvm_mmap(map, addr, size, prot, maxprot, flags, handle, foff, locklimit) if ((flags & MAP_FIXED) == 0) { *addr = round_page(*addr); /* round */ } else { - if (*addr & PAGE_MASK) return(EINVAL); uvmflag |= UVM_FLAG_FIXED; @@ -1122,10 +1063,9 @@ uvm_mmap(map, addr, size, prot, maxprot, flags, handle, foff, locklimit) uvmflag |= UVM_FLAG_OVERLAY; } else { - - vp = (struct vnode *) handle; /* get vnode */ + vp = (struct vnode *)handle; if (vp->v_type != VCHR) { - uobj = uvn_attach((void *) vp, (flags & MAP_SHARED) ? + uobj = uvn_attach((void *)vp, (flags & MAP_SHARED) ? maxprot : (maxprot & ~VM_PROT_WRITE)); /* XXX for now, attach doesn't gain a ref */ @@ -1141,97 +1081,67 @@ uvm_mmap(map, addr, size, prot, maxprot, flags, handle, foff, locklimit) */ if (uobj == NULL && (prot & PROT_EXEC) == 0) { maxprot &= ~VM_PROT_EXECUTE; - uobj = udv_attach((void *) &vp->v_rdev, + uobj = udv_attach((void *)&vp->v_rdev, (flags & MAP_SHARED) ? maxprot : (maxprot & ~VM_PROT_WRITE), foff, size); } advice = UVM_ADV_RANDOM; } - if (uobj == NULL) return((vp->v_type == VREG) ? ENOMEM : EINVAL); - if ((flags & MAP_SHARED) == 0) uvmflag |= UVM_FLAG_COPYONW; } - /* - * set up mapping flags - */ - uvmflag = UVM_MAPFLAG(prot, maxprot, (flags & MAP_SHARED) ? UVM_INH_SHARE : UVM_INH_COPY, advice, uvmflag); + error = uvm_map(map, addr, size, uobj, foff, 0, uvmflag); + if (error) { + if (uobj) + uobj->pgops->pgo_detach(uobj); + return error; + } /* - * do it! + * POSIX 1003.1b -- if our address space was configured + * to lock all future mappings, wire the one we just made. */ - retval = uvm_map(map, addr, size, uobj, foff, 0, uvmflag); + if (prot == VM_PROT_NONE) { - if (retval == KERN_SUCCESS) { /* - * POSIX 1003.1b -- if our address space was configured - * to lock all future mappings, wire the one we just made. + * No more work to do in this case. */ - if (prot == VM_PROT_NONE) { - /* - * No more work to do in this case. - */ - return (0); - } - - vm_map_lock(map); - if (map->flags & VM_MAP_WIREFUTURE) { - if ((atop(size) + uvmexp.wired) > uvmexp.wiredmax + return (0); + } + vm_map_lock(map); + if (map->flags & VM_MAP_WIREFUTURE) { + if ((atop(size) + uvmexp.wired) > uvmexp.wiredmax #ifdef pmap_wired_count - || (locklimit != 0 && (size + - ptoa(pmap_wired_count(vm_map_pmap(map)))) > - locklimit) + || (locklimit != 0 && (size + + ptoa(pmap_wired_count(vm_map_pmap(map)))) > + locklimit) #endif - ) { - retval = KERN_RESOURCE_SHORTAGE; - vm_map_unlock(map); - /* unmap the region! */ - (void) uvm_unmap(map, *addr, *addr + size); - goto bad; - } - /* - * uvm_map_pageable() always returns the map - * unlocked. - */ - retval = uvm_map_pageable(map, *addr, *addr + size, - FALSE, UVM_LK_ENTER); - if (retval != KERN_SUCCESS) { - /* unmap the region! */ - (void) uvm_unmap(map, *addr, *addr + size); - goto bad; - } - return (0); + ) { + vm_map_unlock(map); + uvm_unmap(map, *addr, *addr + size); + return ENOMEM; } - vm_map_unlock(map); + /* + * uvm_map_pageable() always returns the map unlocked. + */ + error = uvm_map_pageable(map, *addr, *addr + size, + FALSE, UVM_LK_ENTER); + if (error) { + uvm_unmap(map, *addr, *addr + size); + return error; + } return (0); } - - /* - * errors: first detach from the uobj, if any. - */ - - if (uobj) - uobj->pgops->pgo_detach(uobj); - - bad: - switch (retval) { - case KERN_INVALID_ADDRESS: - case KERN_NO_SPACE: - return(ENOMEM); - case KERN_RESOURCE_SHORTAGE: - return (EAGAIN); - case KERN_PROTECTION_FAILURE: - return(EACCES); - } - return(EINVAL); + vm_map_unlock(map); + return 0; } diff --git a/sys/uvm/uvm_pager.c b/sys/uvm/uvm_pager.c index 86500e663b0..3294ec565bc 100644 --- a/sys/uvm/uvm_pager.c +++ b/sys/uvm/uvm_pager.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_pager.c,v 1.42 2001/03/10 22:46:49 chs Exp $ */ +/* $NetBSD: uvm_pager.c,v 1.43 2001/03/15 06:10:58 chs Exp $ */ /* * @@ -149,7 +149,7 @@ ReStart: kva = 0; /* let system choose VA */ if (uvm_map(pager_map, &kva, size, NULL, - UVM_UNKNOWN_OFFSET, 0, UVM_FLAG_NOMERGE) != KERN_SUCCESS) { + UVM_UNKNOWN_OFFSET, 0, UVM_FLAG_NOMERGE) != 0) { if (curproc == uvm.pagedaemon_proc) { simple_lock(&pager_map_wanted_lock); if (emerginuse) { @@ -223,7 +223,7 @@ uvm_pagermapout(kva, npages) } vm_map_lock(pager_map); - (void) uvm_unmap_remove(pager_map, kva, kva + size, &entries); + uvm_unmap_remove(pager_map, kva, kva + size, &entries); simple_lock(&pager_map_wanted_lock); if (pager_map_wanted) { pager_map_wanted = FALSE; @@ -231,11 +231,11 @@ uvm_pagermapout(kva, npages) } simple_unlock(&pager_map_wanted_lock); vm_map_unlock(pager_map); + remove: pmap_remove(pmap_kernel(), kva, kva + (npages << PAGE_SHIFT)); if (entries) uvm_unmap_detach(entries, 0); - UVMHIST_LOG(maphist,"<- done",0,0,0,0); } diff --git a/sys/uvm/uvm_param.h b/sys/uvm/uvm_param.h index c87cb576f74..719129e917c 100644 --- a/sys/uvm/uvm_param.h +++ b/sys/uvm/uvm_param.h @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_param.h,v 1.5 2001/03/09 01:02:12 chs Exp $ */ +/* $NetBSD: uvm_param.h,v 1.6 2001/03/15 06:10:58 chs Exp $ */ /* * Copyright (c) 1991, 1993 @@ -127,20 +127,6 @@ typedef int boolean_t; { "vnodemin", CTLTYPE_INT }, \ } -/* - * Return values from the VM routines. - */ -#define KERN_SUCCESS 0 -#define KERN_INVALID_ADDRESS 1 -#define KERN_PROTECTION_FAILURE 2 -#define KERN_NO_SPACE 3 -#define KERN_INVALID_ARGUMENT 4 -#define KERN_FAILURE 5 -#define KERN_RESOURCE_SHORTAGE 6 -#define KERN_NOT_RECEIVER 7 -#define KERN_NO_ACCESS 8 -#define KERN_PAGES_LOCKED 9 - #ifndef ASSEMBLER /* * Convert addresses to pages and vice versa. diff --git a/sys/uvm/uvm_unix.c b/sys/uvm/uvm_unix.c index 643fe7508e1..36ca6d46a79 100644 --- a/sys/uvm/uvm_unix.c +++ b/sys/uvm/uvm_unix.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_unix.c,v 1.18 2000/09/13 15:00:25 thorpej Exp $ */ +/* $NetBSD: uvm_unix.c,v 1.19 2001/03/15 06:10:58 chs Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -78,7 +78,7 @@ sys_obreak(p, v, retval) struct vmspace *vm = p->p_vmspace; vaddr_t new, old; ssize_t diff; - int rv; + int error; old = (vaddr_t)vm->vm_daddr; new = round_page((vaddr_t)SCARG(uap, nsize)); @@ -95,26 +95,21 @@ sys_obreak(p, v, retval) * grow or shrink? */ if (diff > 0) { - rv = uvm_map(&vm->vm_map, &old, diff, NULL, UVM_UNKNOWN_OFFSET, - 0, UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_COPY, + error = uvm_map(&vm->vm_map, &old, diff, NULL, + UVM_UNKNOWN_OFFSET, 0, + UVM_MAPFLAG(UVM_PROT_ALL, UVM_PROT_ALL, UVM_INH_COPY, UVM_ADV_NORMAL, UVM_FLAG_AMAPPAD|UVM_FLAG_FIXED| UVM_FLAG_OVERLAY|UVM_FLAG_COPYONW)); - if (rv == KERN_SUCCESS) { - vm->vm_dsize += atop(diff); - return (0); + if (error) { + uprintf("sbrk: grow %ld failed, error = %d\n", + (long)diff, error); + return error; } } else { - rv = uvm_deallocate(&vm->vm_map, new, -diff); - if (rv == KERN_SUCCESS) { - vm->vm_dsize -= atop(-diff); - return (0); - } + uvm_deallocate(&vm->vm_map, new, -diff); } - - uprintf("sbrk: %s %ld failed, return = %d\n", - diff > 0 ? "grow" : "shrink", - (long)(diff > 0 ? diff : -diff), rv); - return (ENOMEM); + vm->vm_dsize += atop(diff); + return 0; } /* diff --git a/sys/uvm/uvm_user.c b/sys/uvm/uvm_user.c index 420a40f19b6..6f6e00ca0da 100644 --- a/sys/uvm/uvm_user.c +++ b/sys/uvm/uvm_user.c @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_user.c,v 1.8 2000/06/27 17:29:37 mrg Exp $ */ +/* $NetBSD: uvm_user.c,v 1.9 2001/03/15 06:10:58 chs Exp $ */ /* * @@ -49,19 +49,15 @@ * uvm_deallocate: deallocate memory (unmap) */ -int +void uvm_deallocate(map, start, size) vm_map_t map; vaddr_t start; vsize_t size; { - if (map == NULL) - panic("uvm_deallocate with null map"); - - if (size == (vaddr_t) 0) - return (KERN_SUCCESS); - - return(uvm_unmap(map, trunc_page(start), round_page(start+size))); + if (size == 0) + return; + uvm_unmap(map, trunc_page(start), round_page(start + size)); } |
