Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

NetBSD master CVS tree commits



thorpej
Tue Jul  7 21:28:29 PDT 1998
Update of /cvsroot/src/sys/uvm
In directory nb00:/tmp/cvs-serv5637

Modified Files:
        uvm.h uvm_extern.h uvm_map.c uvm_page.c uvm_page.h 
        uvm_page_i.h uvm_pglist.c 
Log Message:
Add support for multiple memory free lists.  There is at least one
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).




Home | Main Index | Thread Index | Old Index