Lines Matching +full:vm +full:- +full:map

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
40 * Traditional sbrk/grow interface to VM
57 #include <vm/vm.h>
58 #include <vm/vm_param.h>
59 #include <vm/pmap.h>
60 #include <vm/vm_map.h>
74 addr = (uintptr_t)uap->nsize; in sys_break()
77 td->td_retval[0] = addr; in sys_break()
87 struct vmspace *vm = td->td_proc->p_vmspace; in kern_break() local
88 vm_map_t map = &vm->vm_map; in kern_break() local
99 vm_map_lock(map); in kern_break()
101 base = round_page((vm_offset_t) vm->vm_daddr); in kern_break()
102 old = base + ctob(vm->vm_dsize); in kern_break()
108 if (new - base > datalim && new > old) { in kern_break()
112 if (new > vm_map_max(map)) { in kern_break()
119 * modifying any state. This is an ad-hoc interface in kern_break()
129 if (!old_mlock && map->flags & MAP_WIREFUTURE) { in kern_break()
130 if (ptoa(pmap_wired_count(map->pmap)) + in kern_break()
131 (new - old) > lmemlim) { in kern_break()
136 if (map->size + (new - old) > vmemlim) { in kern_break()
142 PROC_LOCK(td->td_proc); in kern_break()
143 error = racct_set(td->td_proc, RACCT_DATA, new - base); in kern_break()
145 PROC_UNLOCK(td->td_proc); in kern_break()
149 error = racct_set(td->td_proc, RACCT_VMEM, in kern_break()
150 map->size + (new - old)); in kern_break()
152 racct_set_force(td->td_proc, RACCT_DATA, in kern_break()
153 old - base); in kern_break()
154 PROC_UNLOCK(td->td_proc); in kern_break()
158 if (!old_mlock && map->flags & MAP_WIREFUTURE) { in kern_break()
159 error = racct_set(td->td_proc, RACCT_MEMLOCK, in kern_break()
160 ptoa(pmap_wired_count(map->pmap)) + in kern_break()
161 (new - old)); in kern_break()
163 racct_set_force(td->td_proc, RACCT_DATA, in kern_break()
164 old - base); in kern_break()
165 racct_set_force(td->td_proc, RACCT_VMEM, in kern_break()
166 map->size); in kern_break()
167 PROC_UNLOCK(td->td_proc); in kern_break()
172 PROC_UNLOCK(td->td_proc); in kern_break()
177 if (i386_read_exec && SV_PROC_FLAG(td->td_proc, SV_ILP32)) in kern_break()
180 rv = vm_map_insert(map, NULL, 0, old, new, prot, VM_PROT_ALL, in kern_break()
182 if (rv == KERN_SUCCESS && (map->flags & MAP_WIREFUTURE) != 0) { in kern_break()
183 rv = vm_map_wire_locked(map, old, new, in kern_break()
186 (void)vm_map_delete(map, old, new); in kern_break()
191 PROC_LOCK(td->td_proc); in kern_break()
192 racct_set_force(td->td_proc, in kern_break()
193 RACCT_DATA, old - base); in kern_break()
194 racct_set_force(td->td_proc, in kern_break()
195 RACCT_VMEM, map->size); in kern_break()
196 if (!old_mlock && map->flags & MAP_WIREFUTURE) { in kern_break()
197 racct_set_force(td->td_proc, in kern_break()
199 ptoa(pmap_wired_count(map->pmap))); in kern_break()
201 PROC_UNLOCK(td->td_proc); in kern_break()
207 vm->vm_dsize += btoc(new - old); in kern_break()
209 rv = vm_map_delete(map, new, old); in kern_break()
214 vm->vm_dsize -= btoc(old - new); in kern_break()
217 PROC_LOCK(td->td_proc); in kern_break()
218 racct_set_force(td->td_proc, RACCT_DATA, new - base); in kern_break()
219 racct_set_force(td->td_proc, RACCT_VMEM, map->size); in kern_break()
220 if (!old_mlock && map->flags & MAP_WIREFUTURE) { in kern_break()
221 racct_set_force(td->td_proc, RACCT_MEMLOCK, in kern_break()
222 ptoa(pmap_wired_count(map->pmap))); in kern_break()
224 PROC_UNLOCK(td->td_proc); in kern_break()
229 vm_map_unlock(map); in kern_break()