haiku/headers/private/kernel/vm
Ingo Weinhold 550376ffb8 * vm_delete_areas(): Changed return type to void (was status_t and not used).
* _user_map_file(), _user_unmap_memory(): Verify that the address (if given) is
  page aligned.
* Reworked memory locking (wiring):
  - VMArea does now have a list of wired memory ranges and supports waiting for
    a range to be removed.
  - vm_soft_fault():
    - Added "wirePage" parameter that, if given, makes the function wire the
      page and return it.
    - Added "wiredRange" parameter (for calls from lock_memory_etc()) and made
      sure we never unmap wired pages. This could e.g. happen when a page from a
      lower cache was read-mapped and a write fault occurred. Now in such a
      situation the function waits for the page to be unwired and restarts.
  - All functions that manipulate areas in a way that could affect wired ranges
    do now either require the caller to make sure there are no wired ranges in
    the way or do that themselves. Added a few wait_if_*_is_wired() helper
    functions for that purpose.
  - lock_memory_etc():
    - Does now also work correctly when the range spans more than one area.
    - Adds VMAreaWiredRanges to the affected VMAreas and retains an address
      space reference (so that the address space won't be deleted as long as a
      wired range exists).
    - Resolved TODO: The area's caches are now locked when
      increment_page_wired_count() is called.
    - Resolved TODO: The race condition due to missing locking after looking up
      the page mapping is now prevented. We hold the cache locks (in case the
      page is already mapped) and the new vm_soft_fault() parameter allows us
      to get the page wired.
  - unlock_memory_etc(): Changes symmetrical to those in lock_memory_etc() and
    resolved all TODOs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-03 18:01:29 +00:00
..
vm_page.h * Removed useless return parameter from vm_remove_all_page_mappings(). 2010-02-03 18:53:52 +00:00
vm_priv.h * Removed useless return parameter from vm_remove_all_page_mappings(). 2010-02-03 18:53:52 +00:00
vm_types.h Added commands to the page access debugging panic()s. 2010-03-18 16:19:13 +00:00
vm.h * Removed useless return parameter from vm_remove_all_page_mappings(). 2010-02-03 18:53:52 +00:00
VMAddressSpace.h * vm_delete_areas(): Changed return type to void (was status_t and not used). 2010-04-03 18:01:29 +00:00
VMArea.h * vm_delete_areas(): Changed return type to void (was status_t and not used). 2010-04-03 18:01:29 +00:00
VMCache.h Added assert. 2010-02-16 16:49:52 +00:00
VMTranslationMap.h * Removed useless return parameter from vm_remove_all_page_mappings(). 2010-02-03 18:53:52 +00:00