kernel - VM rework part 7 - Initial vm_map_backing index
commit5b329e620879c577bf125590808f5146f61a19bb
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 11 May 2019 05:39:53 +0000 (10 22:39 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sun, 12 May 2019 04:07:40 +0000 (11 21:07 -0700)
tree729c9aaf517d75f5ef095979cc9ff32128595471
parent175f5a888d07904545a21edc52d2413bcceb1ff5
kernel - VM rework part 7 - Initial vm_map_backing index

* Implement a TAILQ and hang vm_map_backing structures off
  of the related object.  This feature is still in progress
  and will eventually be used to allow pmaps to manipulate
  vm_page's without pv_entry's.

  At the same time, remove all sharing of vm_map_backing.
  For example, clips no longer share the vm_map_backing.  We
  can't share the structures if they are being used to
  itemize areas for pmap management.

  TODO - reoptimize this at some point.

  TODO - not yet quite deterministic enough for pmap
 searches (due to clips).

* Refactor vm_object_reference_quick() to again allow
  operation on any vm_object whos ref_count is already
  at least 1, or which belongs to a vnode.  The ref_count
  is no longer being used for complex vm_object collapse,
  shadowing, or migration code.

  This allows us to avoid a number of unnecessary token
  grabs on objects during clips, shadowing, and forks.

* Cleanup a few fields in vm_object.  Name TAILQ_ENTRY()
  elements blahblah_entry instead of blahblah_list.

* Fix an issue with a.out binaries (that are still supported but
  nobody uses) where the object refs on the binaries were not
  being properly accounted for.
12 files changed:
sys/kern/imgact_aout.c
sys/kern/imgact_elf.c
sys/platform/pc64/x86_64/efirt.c
sys/vm/device_pager.c
sys/vm/swap_pager.c
sys/vm/vm_fault.c
sys/vm/vm_map.c
sys/vm/vm_map.h
sys/vm/vm_object.c
sys/vm/vm_object.h
sys/vm/vm_pager.c
sys/vm/vm_swapcache.c