mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
060282de8a
pointers per entry ). The table has been changed to a singly linked list of vm_page_t pointers. The table has been doubled in size, but the entries only take half the space so a net-zero change in memory use. The hash function has been changed, hopefully for the better. The combination of the larger hash table size of changed function should keep the chain length down to a reasonable number (0-3, average 1). vm_object->page_hint has been removed. This 'optimization' was not only never needed, but costs as much as a hash chain link to implement. While having page_hint in vm_object might result in better locality of reference, the cost is not worth the space in vm_object or the extra instructions in my view. vm_page_alloc*() functions have been inlined and call a generalized non-inlined vm_page_alloc_toq() which combines the standard alloc and zero-page alloc functions together, reducing code size and the L1 cache footprint. Some reordering has been done... not much. The delinking code should be faster ( because unlinking a doubly-linked list requires four memory ops and unlinking a singly linked list only requires two ), and we get a hash consistancy check for free. vm_page_rename() now automatically sets the page's dirty bits. vm_page_alloc() does not try to manually inline freeing a cache page. Instead, it now properly calls vm_page_free(m) ... vm_page_free() is really too complex to manually inline. vm_await(), supporting asleep(), has been added. |
||
---|---|---|
.. | ||
default_pager.c | ||
default_pager.h | ||
device_pager.c | ||
pmap.h | ||
swap_pager.c | ||
swap_pager.h | ||
vm_extern.h | ||
vm_fault.c | ||
vm_glue.c | ||
vm_inherit.h | ||
vm_init.c | ||
vm_kern.c | ||
vm_kern.h | ||
vm_map.c | ||
vm_map.h | ||
vm_meter.c | ||
vm_mmap.c | ||
vm_object.c | ||
vm_object.h | ||
vm_page.c | ||
vm_page.h | ||
vm_pageout.c | ||
vm_pageout.h | ||
vm_pager.c | ||
vm_pager.h | ||
vm_param.h | ||
vm_prot.h | ||
vm_swap.c | ||
vm_unix.c | ||
vm_zone.c | ||
vm_zone.h | ||
vm.h | ||
vnode_pager.c | ||
vnode_pager.h |