* Optional debug feature for tracking which page queue a page should be

in.
* New debugger command "find_page", which searches all page queues to
  find out, which one a page is actually in.
* Solved nasty race condition between the page scrubber and
  vm_page_allocate_page_run(): The page scrubber didn't mark the pages
  it was processing busy, so that vm_page_allocate_page_run() could claim
  them in the meantime. They would end up in the clear pages queue,
  although being assigned to a cache at the same time. This should
  finally solve bug #1056.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20474 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2007-03-30 19:48:51 +00:00
parent 9c62a6ed7d
commit 27d37d4d24
2 changed files with 98 additions and 1 deletions
+9
View File
@@ -17,6 +17,11 @@
#include <sys/uio.h>
// Enables the vm_page::queue, i.e. it is tracked which queue the page should
// be in.
//#define DEBUG_PAGE_QUEUE 1
#ifdef __cplusplus
struct vm_page_mapping;
typedef DoublyLinkedListLink<vm_page_mapping> vm_page_mapping_link;
@@ -83,6 +88,10 @@ typedef struct vm_page {
vm_page_mappings mappings;
#ifdef DEBUG_PAGE_QUEUE
void* queue;
#endif
uint8 type : 2;
uint8 state : 3;
uint8 busy_reading : 1;