7fd701e0fa
default free list, and 0 - N additional free list, in order of descending priority. A new page allocation function, uvm_pagealloc_strat(), has been added, providing three page allocation strategies: - normal: high -> low priority free list walk, taking the page off the first free list that has one. - only: attempt to allocate a page only from the specified free list, failing if that free list has none available. - fallback: if `only' fails, fall back on `normal'. uvm_pagealloc(...) is provided for normal use (and is a synonym for uvm_pagealloc_strat(..., UVM_PGA_STRAT_NORMAL, 0); the free list argument is ignored for the `normal' case). uvm_page_physload() now specified which free list the pages will be loaded onto. This means that some platforms which have multiple physical memory segments may define additional vm_physsegs if they wish to break individual physical segments into differing priorities. Machine-dependent code must define _at least_ the following constants in <machine/vmparam.h>: VM_NFREELIST: the number of free lists the system will have VM_FREELIST_DEFAULT: the default freelist (should always be 0, but is defined in machdep code so that it's with all of the other free list-related constants). Additional free list names may be defined by machine-dependent code, but they will only be used by machine-dependent code (e.g. for loading the vm_physsegs). |
||
---|---|---|
bin | ||
distrib | ||
etc | ||
games | ||
gnu | ||
include | ||
lib | ||
libexec | ||
regress | ||
sbin | ||
share | ||
sys | ||
usr.bin | ||
usr.sbin | ||
Makefile |