> Date: Sat, 2 Nov 2019 10:55:30 +0100 > From: Martin Pieuchot <m...@openbsd.org> > > This function is just a wrapper on top of uvm_unmap(), it has its own > file and is called only 3 times in the kernel. Getting rid of it makes > the overall UVM simpler, ok? > > Index: sys/conf/files > =================================================================== > RCS file: /cvs/src/sys/conf/files,v > retrieving revision 1.675 > diff -u -p -r1.675 files > --- sys/conf/files 5 Oct 2019 05:33:14 -0000 1.675 > +++ sys/conf/files 2 Nov 2019 09:40:31 -0000 > @@ -970,7 +970,6 @@ file uvm/uvm_stat.c > file uvm/uvm_swap.c > file uvm/uvm_swap_encrypt.c uvm_swap_encrypt > file uvm/uvm_unix.c > -file uvm/uvm_user.c > file uvm/uvm_vnode.c > > # IPv6 > Index: sys/kern/kern_exec.c > =================================================================== > RCS file: /cvs/src/sys/kern/kern_exec.c,v > retrieving revision 1.208 > diff -u -p -r1.208 kern_exec.c > --- sys/kern/kern_exec.c 2 Aug 2019 02:17:35 -0000 1.208 > +++ sys/kern/kern_exec.c 2 Nov 2019 09:40:31 -0000 > @@ -749,8 +749,7 @@ exec_abort: > * get rid of the (new) address space we have created, if any, get rid > * of our namei data and vnode, and exit noting failure > */ > - uvm_deallocate(&vm->vm_map, VM_MIN_ADDRESS, > - VM_MAXUSER_ADDRESS - VM_MIN_ADDRESS); > + uvm_unmap(&vm->vm_map, VM_MIN_ADDRESS, VM_MAXUSER_ADDRESS); > if (pack.ep_interp != NULL) > pool_put(&namei_pool, pack.ep_interp); > if (pack.ep_emul_arg != NULL) > Index: sys/kern/sysv_shm.c > =================================================================== > RCS file: /cvs/src/sys/kern/sysv_shm.c,v > retrieving revision 1.72 > diff -u -p -r1.72 sysv_shm.c > --- sys/kern/sysv_shm.c 28 Oct 2019 19:57:50 -0000 1.72 > +++ sys/kern/sysv_shm.c 2 Nov 2019 09:40:31 -0000 > @@ -160,14 +160,14 @@ shm_delete_mapping(struct vmspace *vm, s > { > struct shmid_ds *shmseg; > int segnum; > - size_t size; > + vaddr_t end; > > segnum = IPCID_TO_IX(shmmap_s->shmid); > if (segnum < 0 || segnum >= shminfo.shmmni || > (shmseg = shmsegs[segnum]) == NULL) > return (EINVAL); > - size = round_page(shmseg->shm_segsz); > - uvm_deallocate(&vm->vm_map, shmmap_s->va, size); > + end = round_page(shmmap_s->va+shmseg->shm_segsz);
Please add spaces around the '+'. Otherwise ok kettenis@ > + uvm_unmap(&vm->vm_map, trunc_page(shmmap_s->va), end); > shmmap_s->shmid = -1; > shmseg->shm_dtime = time_second; > if ((--shmseg->shm_nattch <= 0) && > Index: sys/uvm/uvm_extern.h > =================================================================== > RCS file: /cvs/src/sys/uvm/uvm_extern.h,v > retrieving revision 1.148 > diff -u -p -r1.148 uvm_extern.h > --- sys/uvm/uvm_extern.h 1 Jul 2019 21:13:03 -0000 1.148 > +++ sys/uvm/uvm_extern.h 2 Nov 2019 09:40:31 -0000 > @@ -455,7 +455,6 @@ int uvm_coredump_walkmap(struct > proc * > uvm_coredump_setup_cb *_setup, > uvm_coredump_walk_cb *_walk, void *_cookie); > void uvm_grow(struct proc *, vaddr_t); > -void uvm_deallocate(vm_map_t, vaddr_t, vsize_t); > struct uvm_object *uvn_attach(struct vnode *, vm_prot_t); > void uvm_pagezero_thread(void *); > void kmeminit_nkmempages(void); > Index: sys/uvm/uvm_unix.c > =================================================================== > RCS file: /cvs/src/sys/uvm/uvm_unix.c,v > retrieving revision 1.66 > diff -u -p -r1.66 uvm_unix.c > --- sys/uvm/uvm_unix.c 21 Jun 2019 09:39:49 -0000 1.66 > +++ sys/uvm/uvm_unix.c 2 Nov 2019 09:40:31 -0000 > @@ -94,7 +94,7 @@ sys_obreak(struct proc *p, void *v, regi > } > vm->vm_dsize += atop(new - old); > } else { > - uvm_deallocate(&vm->vm_map, new, old - new); > + uvm_unmap(&vm->vm_map, new, old); > vm->vm_dsize -= atop(old - new); > } > > Index: sys/uvm/uvm_user.c > =================================================================== > RCS file: sys/uvm/uvm_user.c > diff -N sys/uvm/uvm_user.c > --- sys/uvm/uvm_user.c 14 Sep 2014 14:17:27 -0000 1.14 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,55 +0,0 @@ > -/* $OpenBSD: uvm_user.c,v 1.14 2014/09/14 14:17:27 jsg Exp $ */ > -/* $NetBSD: uvm_user.c,v 1.8 2000/06/27 17:29:37 mrg Exp $ */ > - > -/* > - * Copyright (c) 1997 Charles D. Cranor and Washington University. > - * All rights reserved. > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions > - * are met: > - * 1. Redistributions of source code must retain the above copyright > - * notice, this list of conditions and the following disclaimer. > - * 2. Redistributions in binary form must reproduce the above copyright > - * notice, this list of conditions and the following disclaimer in the > - * documentation and/or other materials provided with the distribution. > - * > - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR > - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES > - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. > - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, > - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT > - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF > - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > - * > - * from: Id: uvm_user.c,v 1.1.2.1 1997/08/14 19:10:41 chuck Exp > - */ > - > -/* > - * uvm_user.c: high level uvm_allocate/uvm_deallocate interface into vm. > - */ > - > - > -#include <sys/param.h> > -#include <sys/systm.h> > - > -#include <uvm/uvm.h> > - > -/* > - * uvm_deallocate: deallocate memory (unmap) > - */ > -void > -uvm_deallocate(struct vm_map *map, vaddr_t start, vsize_t size) > -{ > - > - if (map == NULL) > - panic("uvm_deallocate with null map"); > - > - if (size == 0) > - return; > - > - uvm_unmap(map, trunc_page(start), round_page(start+size)); > -} > Index: share/man/man9/uvm.9 > =================================================================== > RCS file: /cvs/src/share/man/man9/uvm.9,v > retrieving revision 1.70 > diff -u -p -r1.70 uvm.9 > --- share/man/man9/uvm.9 21 Jun 2019 09:39:48 -0000 1.70 > +++ share/man/man9/uvm.9 2 Nov 2019 09:44:05 -0000 > @@ -43,7 +43,6 @@ > .Nm uvm_map_pageable_all , > .Nm uvm_map_checkprot , > .Nm uvm_map_protect , > -.Nm uvm_deallocate , > .Nm uvmspace_alloc , > .Nm uvmspace_exec , > .Nm uvmspace_fork , > @@ -182,8 +181,6 @@ function initialises the swap subsystem. > .Fn uvm_map_checkprot "vm_map_t map" "vaddr_t start" "vaddr_t end" > "vm_prot_t protection" > .Ft int > .Fn uvm_map_protect "vm_map_t map" "vaddr_t start" "vaddr_t end" "vm_prot_t > new_prot" "boolean_t set_max" > -.Ft void > -.Fn uvm_deallocate "vm_map_t map" "vaddr_t start" "vsize_t size" > .Ft struct vmspace * > .Fn uvmspace_alloc "vaddr_t min" "vaddr_t max" "boolean_t pageable" > "boolean_t remove_holes" > .Ft void > @@ -391,15 +388,6 @@ if > .Fa set_max > is non-zero. > This function returns a standard errno. > -.Pp > -The > -.Fn uvm_deallocate > -function deallocates kernel memory in map > -.Fa map > -from address > -.Fa start > -to > -.Fa start + size . > .Pp > The > .Fn uvmspace_alloc > >