fe70b87d91
* we now always flush the TLBs after having unmapped some pages. * vm_soft_fault() could traverse to a source cache while it was being collapsed by vm_cache_remove_consumer() - this is now no longer possible as the latter marks the cache as busy when doing so, and the former now tests this flag and locks the cache (via the new fault_acquire_locked_source() function). * if fault_acquire_locked_source() fails with B_BUSY, the current cache is locked again, and tested again for the page - as it might have been moved upwards to it with the destruction of its former source. * The cache delivering the page for vm_soft_fault() is now locked until the end; it can no longer go away before having actually mapped the page into the area. * This also fixes the issue where pages would get lost as vm_soft_fault() put the page in the active list, no matter if its cache still existed. * Also, we now keep a reference of to a cache in case a dummy page is inserted; this makes again sure that it doesn't go away during the execution of vm_soft_fault() (which could even add this page to the free list...). * divided vm_soft_fault() into several smaller functions which should make it much more readable. * Added a "cache_chain" KDL command that dumps the whole chain until the bottom when giving a pointer to a vm_cache as parameter. * now usually call vm_cache_acquire_ref() before map_backing_store(), even though it shouldn't be really needed (I added it for debugging purposes). * Some minor cleanup. * NOTE: a major problem still persists: when removing a vm_cache, it's possible that some of its pages are still mapped, and there is currently no mechanism to get rid of these mappings! I've added TODO comments into vm_cache.c where appropriate. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20028 a95241bf-73f2-0310-859d-f6bbb57e9c96 |
||
---|---|---|
.. | ||
app | ||
audio | ||
debug | ||
disk_scanner | ||
drivers | ||
graphics | ||
input | ||
interface | ||
kernel | ||
libroot | ||
media | ||
midi | ||
net | ||
opengl/GL/internal | ||
runtime_loader | ||
screen_saver | ||
shared | ||
storage | ||
syslog_daemon | ||
textencoding | ||
tracker | ||
usb_vision |