summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
authorzont <zont@FreeBSD.org>2013-01-10 12:43:58 +0000
committerzont <zont@FreeBSD.org>2013-01-10 12:43:58 +0000
commitd2863e4c68a3742c3168311bfe110d8fa15d4de1 (patch)
tree9b21a99df961ff9d1bdfb325a893008a9368c529 /sys/vm/vm_mmap.c
parentf63fde9f6ff56200aca4579f3579c5dbe586c7bf (diff)
downloadFreeBSD-src-d2863e4c68a3742c3168311bfe110d8fa15d4de1.zip
FreeBSD-src-d2863e4c68a3742c3168311bfe110d8fa15d4de1.tar.gz
- Reduce kernel size by removing unnecessary pointer indirections.
GENERIC kernel size reduced in 16 bytes and RACCT kernel in 336 bytes. Suggested by: alc Reviewed by: alc Approved by: kib (mentor) MFC after: 1 week
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r--sys/vm/vm_mmap.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 16f331a..05bb8ae 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -1038,6 +1038,7 @@ sys_mlock(td, uap)
struct proc *proc;
vm_offset_t addr, end, last, start;
vm_size_t npages, size;
+ vm_map_t map;
unsigned long nsize;
int error;
@@ -1055,8 +1056,9 @@ sys_mlock(td, uap)
if (npages > vm_page_max_wired)
return (ENOMEM);
proc = td->td_proc;
+ map = &proc->p_vmspace->vm_map;
PROC_LOCK(proc);
- nsize = ptoa(npages + vmspace_wired_count(proc->p_vmspace));
+ nsize = ptoa(npages + pmap_wired_count(map->pmap));
if (nsize > lim_cur(proc, RLIMIT_MEMLOCK)) {
PROC_UNLOCK(proc);
return (ENOMEM);
@@ -1071,13 +1073,13 @@ sys_mlock(td, uap)
if (error != 0)
return (ENOMEM);
#endif
- error = vm_map_wire(&proc->p_vmspace->vm_map, start, end,
+ error = vm_map_wire(map, start, end,
VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
#ifdef RACCT
if (error != KERN_SUCCESS) {
PROC_LOCK(proc);
racct_set(proc, RACCT_MEMLOCK,
- ptoa(vmspace_wired_count(proc->p_vmspace)));
+ ptoa(pmap_wired_count(map->pmap)));
PROC_UNLOCK(proc);
}
#endif
@@ -1151,7 +1153,7 @@ sys_mlockall(td, uap)
if (error != KERN_SUCCESS) {
PROC_LOCK(td->td_proc);
racct_set(td->td_proc, RACCT_MEMLOCK,
- ptoa(vmspace_wired_count(td->td_proc->p_vmspace)));
+ ptoa(pmap_wired_count(map->pmap)));
PROC_UNLOCK(td->td_proc);
}
#endif
@@ -1485,16 +1487,15 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
return (ENOMEM);
}
if (!old_mlock && map->flags & MAP_WIREFUTURE) {
- if (ptoa(vmspace_wired_count(td->td_proc->p_vmspace)) +
- size > lim_cur(td->td_proc, RLIMIT_MEMLOCK)) {
+ if (ptoa(pmap_wired_count(map->pmap)) + size >
+ lim_cur(td->td_proc, RLIMIT_MEMLOCK)) {
racct_set_force(td->td_proc, RACCT_VMEM,
map->size);
PROC_UNLOCK(td->td_proc);
return (ENOMEM);
}
error = racct_set(td->td_proc, RACCT_MEMLOCK,
- ptoa(vmspace_wired_count(td->td_proc->p_vmspace)) +
- size);
+ ptoa(pmap_wired_count(map->pmap)) + size);
if (error != 0) {
racct_set_force(td->td_proc, RACCT_VMEM,
map->size);
OpenPOWER on IntegriCloud