Start of work to move static variables into pages.

A little more clean up
More items on the TODO list (take one off, add 3 more).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@908 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Michael Phipps
2002-08-28 03:26:23 +00:00
parent 8a024de485
commit a608664c47
3 changed files with 20 additions and 8 deletions
+7 -6
View File
@@ -1,6 +1,7 @@
1) Need to make the paging daemon load the pages in, using semaphores. 1) Need to make the paging daemon load the pages in, using semaphores.
2) See how unresolvable page faults and permissions errors are handled - need to properly handle 2) Make the caching and the VM (mmap) work together so that an mmap'ed file and a cached file will not race.
3) Tests are not done. 3) Change the architecture so that instead of multiple static globals, everything is stored in pages.
4) Tests are not done.
Test: Test:
getNextAreaInfo getNextAreaInfo
cloneArea cloneArea
@@ -10,7 +11,7 @@
paging paging
disk caching disk caching
4) Improve locking (remains to be seen - works ok so far) 5) Improve locking (remains to be seen - works ok so far)
5) I use new and delete. I know that doesn't work in kernel land. Not too tough to change, though. 6) See how unresolvable page faults and permissions errors are handled - need to properly handle
- Pooling is now used for everything but pages - This may have to come at HW integration time, since they will be app signals, etc...
6) There is no arch-level integration. This is to be tested (to death) in user land first. * == can not be done in user land. 7) There is no arch-level integration. This is to be tested (to death) in user land first. * == can not be done in user land.
+3 -2
View File
@@ -3,10 +3,11 @@
#include <vpagePool.h> #include <vpagePool.h>
extern poolvpage vpagePool; extern poolvpage vpagePool;
// TODO - we need to (somehow) make sure that the same vnodes here are shared with mmap.
// Maybe a vnode manager...
cacheManager::cacheManager(void) : area () cacheManager::cacheManager(void) : area ()
{ {
myLock=create_sem(1,"Area Manager Semaphore"); // Should have team name in it. myLock=create_sem(1,"Cache Manager Semaphore");
} }
void *cacheManager::findBlock(vnode *target,bool readOnly) void *cacheManager::findBlock(vnode *target,bool readOnly)
+10
View File
@@ -26,4 +26,14 @@ enum addressSpec {EXACT,BASE,ANY,ANY_KERNEL,CLONE};
#define CACHE_BEGIN 0x90000000 #define CACHE_BEGIN 0x90000000
#define CACHE_END 0xe0000000 #define CACHE_END 0xe0000000
struct vmHeaderBlock
{
poolarea areaPool;
poolvpage vpagePool;
poolvnode vnodePool;
pageManager pageMan(30); // Obviously this hard coded number is a hack...
swapFileManager swapMan;
cacheManager cacheMan;
};
#endif #endif