4e398a6ded
* Implement MADV_DONTNEED: deactivate pages in the specified range, semantics similar to Solaris's MADV_DONTNEED. * Add MADV_FREE: free pages and swap resources associated with the specified range, causing the range to be reloaded from backing store (vnodes) or zero-fill (anonymous), semantics like FreeBSD's MADV_FREE and like Digital UNIX's MADV_DONTNEED (isn't it SO GREAT that madvise(2) isn't standardized!?) As part of this, move the non-map-modifying advice handling out of uvm_map_advise(), and into sys_madvise(). As another part, implement general amap cleaning in uvm_map_clean(), and change uvm_map_clean() to only push dirty pages to disk if PGO_CLEANIT is set in its flags (and update sys___msync13() accordingly). XXX Add a patchable global "amap_clean_works", defaulting to 1, which can disable the amap cleaning code, just in case problems are unearthed; this gives a developer/user a quick way to recover and send a bug report (e.g. boot into DDB and change the value). XXX Still need to implement a real uao_flush(). XXX Need to update the manual page. With these changes, rebuilding libc will automatically cause the new malloc(3) to use MADV_FREE to actually release pages and swap resources when it decides that can be done. |
||
---|---|---|
.. | ||
Makefile | ||
uvm_amap_i.h | ||
uvm_amap.c | ||
uvm_amap.h | ||
uvm_anon.c | ||
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 |