NetBSD/sys/uvm
atatat 42c2fe641b Implement backwards extension of amaps. There are three cases to deal
with:

Case #1 -- adjust offset: The slot offset in the aref can be
decremented to cover the required size addition.

Case #2 -- move pages and adjust offset: The slot offset is not large
enough, but the amap contains enough inactive space *after* the mapped
pages to make up the difference, so active slots are slid to the "end"
of the amap, and the slot offset is, again, adjusted to cover the
required size addition.  This optimizes for hitting case #1 again on
the next small extension.

Case #3 -- reallocate, move pages, and adjust offset: There is not
enough inactive space in the amap, so the arrays are reallocated, and
the active pages are copied again to the "end" of the amap, and the
slot offset is adjusted to cover the required size.  This also
optimizes for hitting case #1 on the next backwards extension.

This provides the missing piece in the "forward extension of
vm_map_entries" logic, so the merge failure counters have been
removed.

Not many applications will make any use of this at this time (except
for jvms and perhaps gcc3), but a "top-down" memory allocator will use
it extensively.
2002-11-14 17:58:48 +00:00
..
Makefile
uvm_amap_i.h In amap_ref, only increment the amap's refcnt after we have established 2002-08-22 23:39:37 +00:00
uvm_amap.c Implement backwards extension of amaps. There are three cases to deal 2002-11-14 17:58:48 +00:00
uvm_amap.h Implement backwards extension of amaps. There are three cases to deal 2002-11-14 17:58:48 +00:00
uvm_anon.c add missing anon lock around call to uvm_anon_lockloanpg(). 2002-09-21 06:16:07 +00:00
uvm_anon.h
uvm_aobj.c In uao_put(), if we wait for the busy page owned by someone else, 2002-05-09 07:04:23 +00:00
uvm_aobj.h
uvm_bio.c remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
uvm_ddb.h
uvm_device.c Merge the gehenna-devsw branch into the trunk. 2002-09-06 13:18:43 +00:00
uvm_device.h
uvm_extern.h encapsulate knowledge of uarea allocation in some new functions. 2002-09-22 07:20:29 +00:00
uvm_fault_i.h /*CONSTCOND*/ 2002-11-02 07:38:42 +00:00
uvm_fault.c change "uoff" to voff_t from vaddr_t as it's offset within uvm object. 2002-10-30 05:24:33 +00:00
uvm_fault.h introduce a new UVM fault type, VM_FAULT_WIREMAX. this is different 2001-12-31 22:34:39 +00:00
uvm_glue.c encapsulate knowledge of uarea allocation in some new functions. 2002-09-22 07:20:29 +00:00
uvm_glue.h
uvm_init.c add RCSIDs, and in some cases, slightly cleanup #include order 2001-11-10 07:36:59 +00:00
uvm_io.c add RCSIDs, and in some cases, slightly cleanup #include order 2001-11-10 07:36:59 +00:00
uvm_km.c Garbage collect some leftover (and unneeded) code. OK'ed by chs. 2002-10-05 17:26:06 +00:00
uvm_km.h
uvm_loan.c when dropping a kernel loan, if this was the last loan-to-kernel but 2002-07-14 23:53:41 +00:00
uvm_loan.h
uvm_map_i.h add a new flag VM_MAP_DYING, which is set before we start 2002-09-22 07:21:29 +00:00
uvm_map.c Implement backwards extension of amaps. There are three cases to deal 2002-11-14 17:58:48 +00:00
uvm_map.h /*CONTCOND*/ while (0)'ed macros 2002-11-02 07:40:47 +00:00
uvm_meter.c add {anon,file,exec}max as a upper bound on the amount of memory that 2001-12-09 03:07:19 +00:00
uvm_mmap.c #if 0 the call to uvm_map_checkprot() in sys_munmap() -- it's not documented, 2002-09-27 19:13:29 +00:00
uvm_object.h count aobj pages (most notably kernel stack pages) as anon pages 2002-06-20 15:05:29 +00:00
uvm_page_i.h
uvm_page.c Fix signed/unsigned comparison warnings. 2002-11-09 20:06:07 +00:00
uvm_page.h s/than than/than/. 2002-11-08 02:05:16 +00:00
uvm_pager_i.h
uvm_pager.c Fix signed/unsigned comparison warnings. 2002-11-09 20:06:07 +00:00
uvm_pager.h remove PGO_WEAK, it isn't needed anymore. 2002-03-25 02:08:09 +00:00
uvm_param.h add {anon,file,exec}max as a upper bound on the amount of memory that 2001-12-09 03:07:19 +00:00
uvm_pdaemon.c count aobj pages (most notably kernel stack pages) as anon pages 2002-06-20 15:05:29 +00:00
uvm_pdaemon.h
uvm_pglist.c /*CONTCOND*/ while (0)'ed macros 2002-11-02 07:40:47 +00:00
uvm_pglist.h
uvm_pmap.h add pmap_remove_all() hook (empty on most platforms so far). 2002-09-22 07:17:08 +00:00
uvm_prot.h
uvm_stat.c add {anon,file,exec}max as a upper bound on the amount of memory that 2001-12-09 03:07:19 +00:00
uvm_stat.h /*CONTCOND*/ while (0)'ed macros 2002-11-02 07:40:47 +00:00
uvm_swap.c /*CONTCOND*/ while (0)'ed macros 2002-11-02 07:40:47 +00:00
uvm_swap.h Move swapctl(SWAP_STATS) implementation to a separate function called 2002-03-18 11:43:01 +00:00
uvm_unix.c Make the coredump routine exec-format/emulation specific. Split 2001-12-08 00:35:25 +00:00
uvm_user.c add RCSIDs, and in some cases, slightly cleanup #include order 2001-11-10 07:36:59 +00:00
uvm_vnode.c Merge the gehenna-devsw branch into the trunk. 2002-09-06 13:18:43 +00:00
uvm.h gah. reversed a test. 2002-11-02 16:50:18 +00:00