diff options
author | bms <bms@FreeBSD.org> | 2003-08-11 07:14:08 +0000 |
---|---|---|
committer | bms <bms@FreeBSD.org> | 2003-08-11 07:14:08 +0000 |
commit | 44aa51e3ae83444b49c68887ca2969af90e1b889 (patch) | |
tree | 594ff099f60d71f34f1fbafb587388aa871cb06b /sys/vm/vm_contig.c | |
parent | 09ab42f3bdd2cb5549d00378979cccfecdad4cfc (diff) | |
download | FreeBSD-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_contig.c')
-rw-r--r-- | sys/vm/vm_contig.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/vm/vm_contig.c b/sys/vm/vm_contig.c index a4dca9b..9e6f57d 100644 --- a/sys/vm/vm_contig.c +++ b/sys/vm/vm_contig.c @@ -266,7 +266,8 @@ again1: tmp_addr += PAGE_SIZE; } VM_OBJECT_UNLOCK(kernel_object); - vm_map_wire(map, addr, addr + size, FALSE); + vm_map_wire(map, addr, addr + size, + VM_MAP_WIRE_SYSTEM|VM_MAP_WIRE_NOHOLES); splx(s); return ((void *)addr); |