Enabled saver thread.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@540 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -44,6 +44,7 @@ int main(int argc,char **argv)
|
|||||||
for (int i=0;i<8192;i++)
|
for (int i=0;i<8192;i++)
|
||||||
if (i%256!=readByte(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));
|
printf ("ERROR! Byte at offset %d does not match: expected: %d, found: %d\n",i,i%256,readByte(i));
|
||||||
|
snooze(2000000);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,12 @@ areaManager am;
|
|||||||
swapFileManager swapMan;
|
swapFileManager swapMan;
|
||||||
pageManager pageMan(10); // Obviously this hard coded number is a hack...
|
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)
|
int32 cleanerThread(void *pageMan)
|
||||||
{
|
{
|
||||||
pageManager *pm=(pageManager *)pageMan;
|
pageManager *pm=(pageManager *)pageMan;
|
||||||
@@ -13,16 +19,22 @@ int32 cleanerThread(void *pageMan)
|
|||||||
return 0;
|
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)
|
vmInterface::vmInterface(int pages)
|
||||||
{
|
{
|
||||||
nextAreaID=0;
|
nextAreaID=0;
|
||||||
resume_thread(spawn_thread(cleanerThread,"cleanerThread",0,&pageMan));
|
resume_thread(spawn_thread(cleanerThread,"cleanerThread",0,&pageMan));
|
||||||
}
|
resume_thread(spawn_thread(saverThread,"saverThread",0,getAM()));
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int vmInterface::getAreaByAddress(void *address)
|
int vmInterface::getAreaByAddress(void *address)
|
||||||
|
|||||||
@@ -126,5 +126,7 @@ void vpage::pager(int desperation)
|
|||||||
|
|
||||||
void vpage::saver(void)
|
void vpage::saver(void)
|
||||||
{
|
{
|
||||||
flush();
|
if (dirty)
|
||||||
|
flush();
|
||||||
|
dirty=false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user