summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_glue.c
diff options
context:
space:
mode:
authorbms <bms@FreeBSD.org>2003-08-11 07:14:08 +0000
committerbms <bms@FreeBSD.org>2003-08-11 07:14:08 +0000
commit44aa51e3ae83444b49c68887ca2969af90e1b889 (patch)
tree594ff099f60d71f34f1fbafb587388aa871cb06b /sys/vm/vm_glue.c
parent09ab42f3bdd2cb5549d00378979cccfecdad4cfc (diff)
downloadFreeBSD-src-44aa51e3ae83444b49c68887ca2969af90e1b889.zip
FreeBSD-src-44aa51e3ae83444b49c68887ca2969af90e1b889.tar.gz
Add the mlockall() and munlockall() system calls.
- All those diffs to syscalls.master for each architecture *are* necessary. This needed clarification; the stub code generation for mlockall() was disabled, which would prevent applications from linking to this API (suggested by mux) - Giant has been quoshed. It is no longer held by the code, as the required locking has been pushed down within vm_map.c. - Callers must specify VM_MAP_WIRE_HOLESOK or VM_MAP_WIRE_NOHOLES to express their intention explicitly. - Inspected at the vmstat, top and vm pager sysctl stats level. Paging-in activity is occurring correctly, using a test harness. - The RES size for a process may appear to be greater than its SIZE. This is believed to be due to mappings of the same shared library page being wired twice. Further exploration is needed. - Believed to back out of allocations and locks correctly (tested with WITNESS, MUTEX_PROFILING, INVARIANTS and DIAGNOSTIC). PR: kern/43426, standards/54223 Reviewed by: jake, alc Approved by: jake (mentor) MFC after: 2 weeks
Diffstat (limited to 'sys/vm/vm_glue.c')
-rw-r--r--sys/vm/vm_glue.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c
index d0f6bf2..5d0744b 100644
--- a/sys/vm/vm_glue.c
+++ b/sys/vm/vm_glue.c
@@ -189,7 +189,8 @@ vslock(addr, len)
{
vm_map_wire(&curproc->p_vmspace->vm_map, trunc_page((vm_offset_t)addr),
- round_page((vm_offset_t)addr + len), FALSE);
+ round_page((vm_offset_t)addr + len),
+ VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES);
}
/*
@@ -203,7 +204,8 @@ vsunlock(addr, len)
vm_map_unwire(&curproc->p_vmspace->vm_map,
trunc_page((vm_offset_t)addr),
- round_page((vm_offset_t)addr + len), FALSE);
+ round_page((vm_offset_t)addr + len),
+ VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES);
}
/*
OpenPOWER on IntegriCloud