freebsd-dev/sys/vm
Peter Wemm 0385347c1a Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly
to various pmap_*() functions instead of looking up the physical address
and passing that.  In many cases, the first thing the pmap code was doing
was going to a lot of trouble to get back the original vm_page_t, or
it's shadow pv_table entry.

Inspired by: John Dyson's 1998 patches.

Also:
Eliminate pv_table as a seperate thing and build it into a machine
dependent part of vm_page_t.  This eliminates having a seperate set of
structions that shadow each other in a 1:1 fashion that we often went to
a lot of trouble to translate from one to the other. (see above)
This happens to save 4 bytes of physical memory for each page in the
system.  (8 bytes on the Alpha).

Eliminate the use of the phys_avail[] array to determine if a page is
managed (ie: it has pv_entries etc).  Store this information in a flag.
Things like device_pager set it because they create vm_page_t's on the
fly that do not have pv_entries.  This makes it easier to "unmanage" a
page of physical memory (this will be taken advantage of in subsequent
commits).

Add a function to add a new page to the freelist.  This could be used
for reclaiming the previously wasted pages left over from preloaded
loader(8) files.

Reviewed by:	dillon
2000-05-21 12:50:18 +00:00
..
default_pager.c Revert spelling mistake I made in the previous commit 2000-03-27 20:41:17 +00:00
device_pager.c Revert spelling mistake I made in the previous commit 2000-03-27 20:41:17 +00:00
pmap.h Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
swap_pager.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
swap_pager.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vm_extern.h Remove unused 3rd argument from vsunlock() which abused B_WRITE. 2000-03-13 10:47:24 +00:00
vm_fault.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_glue.c Remove unneeded <sys/buf.h> includes. 2000-04-18 15:15:39 +00:00
vm_init.c Revert spelling mistake I made in the previous commit 2000-03-27 20:41:17 +00:00
vm_kern.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_kern.h Fix null-pointer dereference crash when the system is intentionally 2000-02-16 21:11:33 +00:00
vm_map.c Fixed bug in madvise() / MADV_WILLNEED. When the request is offset 2000-05-14 18:46:40 +00:00
vm_map.h Add MAP_NOCORE to mmap(2), and MADV_NOCORE and MADV_CORE to madvise(2). 2000-02-28 04:10:35 +00:00
vm_meter.c Revert spelling mistake I made in the previous commit 2000-03-27 20:41:17 +00:00
vm_mmap.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_object.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_object.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vm_page.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_page.h Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_pageout.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vm_pageout.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vm_pager.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
vm_pager.h Convert the vm_pager_strategy() interface to take a struct bio instead of 2000-05-03 07:47:46 +00:00
vm_param.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vm_swap.c Separate the struct bio related stuff out of <sys/buf.h> into 2000-05-05 09:59:14 +00:00
vm_unix.c Revert spelling mistake I made in the previous commit 2000-03-27 20:41:17 +00:00
vm_zone.c Fix _zget() so that it checks the return from kmem_alloc(), to avoid 2000-04-04 21:00:39 +00:00
vm_zone.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
vm.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
vnode_pager.c Implement an optimization of the VM<->pmap API. Pass vm_page_t's directly 2000-05-21 12:50:18 +00:00
vnode_pager.h Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00