Age | Commit message (Collapse) | Author |
|
scenarios, instead generating an ENOMEM backfeed, ok tedu@, prodded by many
|
|
on all other architectures. remove last architecture dependent #ifdef from
uvm code.
|
|
Remove inline from a few functions, shrink the kernel by a few kB and
make things faster. A simple compilation on amd64 spends around 5%
less time in kernel.
Yes, it's faster without inlines, now go buy a book about modern cpu
architectures and find a chapter about the new and revolutionary thing
called "cache".
deraadt@ ok
|
|
prevents msync/madvise funniness
from art@ ok deraadt@
|
|
solves problems encountered by david@ and dtucker@ (pr3758)
|
|
all architectures but arm, where it is needed.
|
|
we're looking for. change small page_header hash table to a splay tree.
from Chuck Silvers.
tested by brad grange henning mcbride naddy otto
|
|
to prevent fragmentation.
this has the effect of randomizing unhinted mmap()s, sysV mem, and
position of ld.so.
tested on many archs by many developers for quite some time.
use of MIN to allow m68k to play from miod@.
vax is not included.
ok deraadt@ miod@
|
|
i386 exec mappings are still random. detected by pvalchev@. ok deraadt@
|
|
scattering ld.so and libraries around, although all mmaps will also
have some jitter too. better version after some discussion with drahn
testing/ok deraadt henning marcm otto pb
|
|
suggested by art@
|
|
interleave of exe/shared libs. Raise MAXDSIZ back to 1G.
This change REQUIRES a binary update on i386.
|
|
|
|
The first one is an mquery(2) syscall. It's for asking the VM system
about where to map things. It will be used by ld.so, read the man page
for details.
The second change is related and is a centralization of uvm_map hint
that all callers of uvm_map calculated. This will allow us to adjust
this hint on architectures that have segments for non-exec mappings.
deraadt@ drahn@ ok.
|
|
|
|
uvm_unmap, uvm_deallocate and a few other functions.
Simplifies some code and reduces diff to the UBC branch.
|
|
should be equal to "entry->end". (len is never changed)
|
|
- fix a typo in comment.
- enable uvm_tree_sanity ifdef DEBUG
|
|
vsize_t instead.
art@ ok
|
|
|
|
|
|
to add splassert(IPL_NONE) in a few strategic places.
|
|
|
|
niels@ ok.
|
|
|
|
|
|
|
|
|
|
uvm_tree_sanity is left as debugging help but needs to be enabled manually.
okay art@
|
|
map_findspace is still broken on alpha. this will make debugging easier.
okay millert@
|
|
the tree triggers the bug, PMAP_PREFER case was broken also.
|
|
tree to find free space between entries. speeds up memory allocation,
etc...
|
|
We allocate map entries for the non-intrsafe kernel map (most notably
kernel_map and exec_map) from a pool that's backed by kmem_map (to avoid
deadlocking).
This should get rid of MAX_KMAPENT panics.
|
|
well (not at all) with shortages of the vm_map where the pages are mapped
(usually kmem_map).
Try to deal with it:
- group all information the backend allocator for a pool in a separate
struct. The pool will only have a pointer to that struct.
- change the pool_init API to reflect that.
- link all pools allocating from the same allocator on a linked list.
- Since an allocator is responsible to wait for physical memory it will
only fail (waitok) when it runs out of its backing vm_map, carefully
drain pools using the same allocator so that va space is freed.
(see comments in code for caveats and details).
- change pool_reclaim to return if it actually succeeded to free some
memory, use that information to make draining easier and more efficient.
- get rid of PR_URGENT, noone uses it.
|
|
This unbreaks m68k m88k sparc and perhaps others, which eventually froze
when hitting swap.
Tested by various people on various platforms.
ok art@
|
|
machines or some configurations or in some phase of the moon (we actually
don't know when or why) files disappeared. Since we've not been able to
track down the problem in two weeks intense debugging and we need -current
to be stable, back out everything to a state it had before UBC.
We apologise for the inconvenience.
|
|
Today we add a pmap argument to pmap_update() and allocate map entries for
kernel_map from kmem_map instead of using the static entries. This should
get rid of MAX_KMAPENT panics. Also some uvm_loan problems are fixed.
|
|
Contains also support for page coloring.
|
|
This time we're getting rid of KERN_* and VM_PAGER_* error codes and
use errnos instead.
|
|
|
|
|
|
|
|
for the virtual address.
|
|
- Use malloc/free instead of MALLOC/FREE for variable sized allocations.
- Move the memory inheritance code to sys/mman.h and rename from VM_* to MAP_*
- various cleanups and simplifications.
|
|
The only thing left in vm/ are just dumb wrappers.
vm/vm.h includes uvm/uvm_extern.h
vm/pmap.h includes uvm/uvm_pmap.h
vm/vm_page.h includes uvm/uvm_page.h
|
|
|
|
|
|
Including support for zeroing pages in the idle loop (not enabled yet).
|
|
into objects.
Gives the possibilty to mmap beyond the size of vaddr_t.
From NetBSD.
|
|
|