From 1314ca6a7f9db7b7ed26f28e36bb05d1ff02eef2 Mon Sep 17 00:00:00 2001 From: Michael Phipps Date: Tue, 30 Jul 2002 02:02:40 +0000 Subject: [PATCH] Enabled saver thread. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@540 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kernel/vm2/test.C | 1 + src/kernel/vm2/vmInterface.C | 24 ++++++++++++++++++------ src/kernel/vm2/vpage.C | 4 +++- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/kernel/vm2/test.C b/src/kernel/vm2/test.C index 7139567ad7..698538715f 100644 --- a/src/kernel/vm2/test.C +++ b/src/kernel/vm2/test.C @@ -44,6 +44,7 @@ int main(int argc,char **argv) for (int i=0;i<8192;i++) if (i%256!=readByte(i)) printf ("ERROR! Byte at offset %d does not match: expected: %d, found: %d\n",i,i%256,readByte(i)); + snooze(2000000); return 0; } diff --git a/src/kernel/vm2/vmInterface.C b/src/kernel/vm2/vmInterface.C index 0bd1e32122..1b41b62ef2 100644 --- a/src/kernel/vm2/vmInterface.C +++ b/src/kernel/vm2/vmInterface.C @@ -6,6 +6,12 @@ areaManager am; swapFileManager swapMan; pageManager pageMan(10); // Obviously this hard coded number is a hack... +areaManager *vmInterface::getAM(void) + { + // Normally, we would go to the current user process to get this. Since there no such thing exists here... + return &am; + } + int32 cleanerThread(void *pageMan) { pageManager *pm=(pageManager *)pageMan; @@ -13,16 +19,22 @@ int32 cleanerThread(void *pageMan) return 0; } +int32 saverThread(void *areaMan) + { + areaManager *am=(areaManager *)areaMan; + // This should iterate over all processes... + while (1) + { + snooze(250000); + am->saver(); + } + } + vmInterface::vmInterface(int pages) { nextAreaID=0; resume_thread(spawn_thread(cleanerThread,"cleanerThread",0,&pageMan)); - } - -areaManager *vmInterface::getAM(void) - { - // Normally, we would go to the current user process to get this. Since there no such thing exists here... - return &am; + resume_thread(spawn_thread(saverThread,"saverThread",0,getAM())); } int vmInterface::getAreaByAddress(void *address) diff --git a/src/kernel/vm2/vpage.C b/src/kernel/vm2/vpage.C index 656e6aff91..0bb94b7c0a 100644 --- a/src/kernel/vm2/vpage.C +++ b/src/kernel/vm2/vpage.C @@ -126,5 +126,7 @@ void vpage::pager(int desperation) void vpage::saver(void) { - flush(); + if (dirty) + flush(); + dirty=false; }