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). |
||
---|---|---|
.. | ||
Makefile | ||
uvm_amap_i.h | ||
uvm_amap.c | ||
uvm_amap.h | ||
uvm_anon.h | ||
uvm_aobj.c | ||
uvm_aobj.h | ||
uvm_ddb.h | ||
uvm_device.c | ||
uvm_device.h | ||
uvm_extern.h | ||
uvm_fault_i.h | ||
uvm_fault.c | ||
uvm_fault.h | ||
uvm_glue.c | ||
uvm_glue.h | ||
uvm_init.c | ||
uvm_io.c | ||
uvm_km.c | ||
uvm_km.h | ||
uvm_loan.c | ||
uvm_loan.h | ||
uvm_map_i.h | ||
uvm_map.c | ||
uvm_map.h | ||
uvm_meter.c | ||
uvm_mmap.c | ||
uvm_object.h | ||
uvm_page_i.h | ||
uvm_page.c | ||
uvm_page.h | ||
uvm_pager_i.h | ||
uvm_pager.c | ||
uvm_pager.h | ||
uvm_pdaemon.c | ||
uvm_pdaemon.h | ||
uvm_pglist.c | ||
uvm_stat.c | ||
uvm_stat.h | ||
uvm_swap.c | ||
uvm_swap.h | ||
uvm_unix.c | ||
uvm_user.c | ||
uvm_vnode.c | ||
uvm_vnode.h | ||
uvm.h |