axeld + bonefish:
* More conditional debug code (wrt page transitions between caches). * Replaced debugger command cache_chain by a nicer cache_tree. * While handling a soft fault: When we temporarily unlock a cache, it can theoretically become busy. One such occurrence is now handled properly, two more panic() ATM, though should be fixed. * When merging caches, we do now always replace a dummy page in the upper cache, not only when the concurrent page fault is a read fault. This prevents a page from the lower (to be discarded) cache from still remaining mapped (causing a panic). * When merging caches and replacing a dummy page, we were trying to remove the dummy page from the wrong cache (causing a panic). The Haiku kernel seems now to run shockingly stable. ATM, we have more than two hours uptime of a system booted and running over network. We didn't manage to get it down by fully building Pe, downloading, unzipping, and playing with various stuff. Someone should finally fix all those app server drawing bugs, though (hint, hint! ;-)). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21672 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -21,6 +21,9 @@
|
||||
// be in.
|
||||
//#define DEBUG_PAGE_QUEUE 1
|
||||
|
||||
// Enables extra debug fields in the vm_page used to track page transitions
|
||||
// between caches.
|
||||
//#define DEBUG_PAGE_CACHE_TRANSITIONS 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
struct vm_page_mapping;
|
||||
@@ -92,6 +95,11 @@ typedef struct vm_page {
|
||||
void* queue;
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_PAGE_CACHE_TRANSITIONS
|
||||
uint32 debug_flags;
|
||||
struct vm_page *collided_page;
|
||||
#endif
|
||||
|
||||
uint8 type : 2;
|
||||
uint8 state : 3;
|
||||
uint8 busy_reading : 1;
|
||||
|
||||
Reference in New Issue
Block a user