diff --git a/src/sys/include/vmm/paging.h b/src/sys/include/vmm/paging.h index 52f3415..c2dda0b 100644 --- a/src/sys/include/vmm/paging.h +++ b/src/sys/include/vmm/paging.h @@ -30,8 +30,6 @@ #ifndef _PAGING_H #define _PAGING_H -#include -#include #include #define pageLength 0x00000400 @@ -67,13 +65,15 @@ void vmm_pageFault(uInt32,uInt32,uInt32); void _vmm_pageFault(); -void * vmmGetFreePage2(kTask_t); extern uInt32 *kernelPageDirectory; #endif /*** $Log$ + Revision 1.11 2005/08/10 04:35:03 fsdfs + updates. gcc is still barking at me for adding new items to the headers. + Revision 1.10 2005/08/10 04:14:04 fsdfs reworking memory management and WTF is with all the errors in the headers it won't let me add anything!? diff --git a/src/sys/include/vmm/vmm.h b/src/sys/include/vmm/vmm.h index bc3d74c..f82d0dc 100644 --- a/src/sys/include/vmm/vmm.h +++ b/src/sys/include/vmm/vmm.h @@ -30,8 +30,6 @@ #ifndef _VMM_H #define _VMM_H -#include -#include #include #define memAvail 1 @@ -55,8 +53,8 @@ uInt32 freePages = 0; uInt32 usedPages = 0; -mMap *FreePages; -mMap *UsedPages; +mMap *vmmFreePages; +mMap *vmmUsedPages; extern int numPages; extern mMap *vmmMemoryMap; @@ -69,10 +67,14 @@ int adjustCowCounter(uInt32 baseAddr,int adjustment); void vmmFreeProcessPages(pidType pid); + #endif /*** $Log$ + Revision 1.8 2005/08/10 04:35:03 fsdfs + updates. gcc is still barking at me for adding new items to the headers. + Revision 1.7 2005/08/10 04:14:04 fsdfs reworking memory management and WTF is with all the errors in the headers it won't let me add anything!? diff --git a/src/sys/vmm/copyvirtualspace.c b/src/sys/vmm/copyvirtualspace.c index bee6ec7..6986f53 100644 --- a/src/sys/vmm/copyvirtualspace.c +++ b/src/sys/vmm/copyvirtualspace.c @@ -31,8 +31,9 @@ #include #include #include +#include #include - +#include static spinLock_t cvsSpinLock = SPIN_LOCK_INITIALIZER; /************************************************************************ @@ -49,6 +50,55 @@ Which Task Has Which Physical Pages ************************************************************************/ +void vmmCopyVirtualSpace2(kTask_t *task, kTask_t *new) +{ + mMap *tmp, *tmp2 , *prev; + + tmp = task->FirstPage; + + if(tmp != NULL) + { + tmp2 = (mMap *)kmalloc(sizeof(mMap)); + new->FirstPage = tmp2; + prev = NULL; + } + else + { + new->FirstPage = NULL; + new->LastPage = NULL; + return; + } + if(tmp->Next == NULL) + { + tmp2->Next = NULL; + tmp2->Previous = NULL; + new->LastPage = tmp2; + } + else + { + for(;;) + { + tmp2->Previous = prev; + tmp2->pid = new->id; + tmp2->pageAddr = tmp->pageAddr; + tmp2->status = tmp->status; + prev = tmp2; + tmp2 = (mMap *) kmalloc(sizeof(mMap)); + prev->Next = tmp2; + tmp = tmp->Next; + if(tmp == NULL) + { + kfree(tmp2); + prev->Next = NULL; + new->LastPage = prev; + break; + } + } + } + return; +} + + void * vmmCopyVirtualSpace(pidType pid) { @@ -203,6 +253,9 @@ /*** $Log$ + Revision 1.9 2005/08/09 08:45:40 fsdfs + reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. + Revision 1.7 2004/07/28 15:05:43 reddawg Major: Pages now have strict security enforcement. diff --git a/src/sys/vmm/createvirtualspace.c b/src/sys/vmm/createvirtualspace.c index 84319ea..3fc6407 100644 --- a/src/sys/vmm/createvirtualspace.c +++ b/src/sys/vmm/createvirtualspace.c @@ -24,6 +24,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. $Log$ + Revision 1.4 2005/08/09 08:45:40 fsdfs + reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. + Revision 1.2 2004/07/28 15:05:43 reddawg Major: Pages now have strict security enforcement. @@ -43,7 +46,7 @@ *****************************************************************************************/ #include - +#include /************************************************************************ diff --git a/src/sys/vmm/getfreepage.c b/src/sys/vmm/getfreepage.c index c2d3daf..824ce5c 100644 --- a/src/sys/vmm/getfreepage.c +++ b/src/sys/vmm/getfreepage.c @@ -26,8 +26,11 @@ $Id$ *****************************************************************************************/ - - +#include +#include +#include +#include +#include static spinLock_t vmmGFPlock = SPIN_LOCK_INITIALIZER; /************************************************************************ @@ -47,10 +50,10 @@ mMap *tmp; /* remove the first free entry from the free pages list */ - tmp = FreePages->First; + tmp = vmmFreePages->First; freePages--; - FreePages->First = FreePages->First->Next; - FreePages->First->Previous = NULL; + vmmFreePages->First = vmmFreePages->First->Next; + vmmFreePages->First->Previous = NULL; /* add the free entry to the task's pages list */ usedPages++; @@ -94,6 +97,9 @@ /*** $Log$ + Revision 1.11 2005/08/10 04:58:18 fsdfs + updated mememory management + Revision 1.10 2005/08/10 04:35:03 fsdfs updates. gcc is still barking at me for adding new items to the headers. diff --git a/src/sys/vmm/getphysicaladdr.c b/src/sys/vmm/getphysicaladdr.c index 260c568..24116b0 100644 --- a/src/sys/vmm/getphysicaladdr.c +++ b/src/sys/vmm/getphysicaladdr.c @@ -27,7 +27,7 @@ *****************************************************************************************/ #include - +#include /************************************************************************ Function: void *vmmGetPhysicalAddr(); @@ -53,6 +53,9 @@ /*** $Log$ + Revision 1.7 2005/08/09 08:45:40 fsdfs + reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. + Revision 1.4 2004/07/28 15:05:43 reddawg Major: Pages now have strict security enforcement. diff --git a/src/sys/vmm/memory.c b/src/sys/vmm/memory.c index 2f81de3..e510a85 100644 --- a/src/sys/vmm/memory.c +++ b/src/sys/vmm/memory.c @@ -91,24 +91,24 @@ { if(vmmMemoryMap[z].status == memAvail) { - if(FreePages == NULL) + if(vmmFreePages == NULL) { //UBU: replace this with static location - FreePages = kmalloc(sizeof(mMap)); - FreePages->First = FreePages; - FreePages->Last = FreePages; - FreePages->Next = NULL; - FreePages->Previous = NULL; - FreePages->pid = vmmID; - FreePages->pageAddr = z * 4096; - FreePages->status = memAvail; + vmmFreePages = kmalloc(sizeof(mMap)); + vmmFreePages->First = vmmFreePages; + vmmFreePages->Last = vmmFreePages; + vmmFreePages->Next = NULL; + vmmFreePages->Previous = NULL; + vmmFreePages->pid = vmmID; + vmmFreePages->pageAddr = z * 4096; + vmmFreePages->status = memAvail; } else { tmpMap = kmalloc(sizeof(mMap)); - FreePages->Last->Next = tmpMap; - tmpMap->Previous = FreePages->Last; - FreePages->Last = tmpMap; + vmmFreePages->Last->Next = tmpMap; + tmpMap->Previous = vmmFreePages->Last; + vmmFreePages->Last = tmpMap; tmpMap->pid = vmmID; tmpMap->pageAddr = z * 4096; tmpMap->status = memAvail; @@ -116,24 +116,24 @@ } else { - if(UsedPages == NULL) + if(vmmUsedPages == NULL) { //UBU: replace this with static location - UsedPages = kmalloc(sizeof(mMap)); - UsedPages->First = UsedPages; - UsedPages->Last = UsedPages; - UsedPages->Next = NULL; - UsedPages->Previous = NULL; - UsedPages->pid = vmmID; - UsedPages->pageAddr = z * 4096; - UsedPages->status = memNotavail; + vmmUsedPages = kmalloc(sizeof(mMap)); + vmmUsedPages->First = vmmUsedPages; + vmmUsedPages->Last = vmmUsedPages; + vmmUsedPages->Next = NULL; + vmmUsedPages->Previous = NULL; + vmmUsedPages->pid = vmmID; + vmmUsedPages->pageAddr = z * 4096; + vmmUsedPages->status = memNotavail; } else { tmpMap = kmalloc(sizeof(mMap)); - UsedPages->Last->Next = tmpMap; - tmpMap->Previous = UsedPages->Last; - UsedPages->Last = tmpMap; + vmmUsedPages->Last->Next = tmpMap; + tmpMap->Previous = vmmUsedPages->Last; + vmmUsedPages->Last = tmpMap; tmpMap->pid = vmmID; tmpMap->pageAddr = z * 4096; tmpMap->status = memNotavail; @@ -392,6 +392,10 @@ /*** $Log$ + Revision 1.19 2005/08/10 04:14:04 fsdfs + reworking memory management and WTF is with all the errors in the headers + it won't let me add anything!? + Revision 1.18 2005/08/09 08:45:40 fsdfs reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. diff --git a/src/sys/vmm/pagefault.c b/src/sys/vmm/pagefault.c index 23a7e70..757d9c2 100644 --- a/src/sys/vmm/pagefault.c +++ b/src/sys/vmm/pagefault.c @@ -28,8 +28,12 @@ *****************************************************************************************/ #include -#include - +#include +#include +#include +#include +#include +#include static spinLock_t pageFaultSpinLock = SPIN_LOCK_INITIALIZER; /***************************************************************************************** @@ -124,6 +128,9 @@ /*** $Log$ + Revision 1.18 2005/08/10 04:58:18 fsdfs + updated mememory management + Revision 1.17 2005/08/09 08:45:40 fsdfs reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. diff --git a/src/sys/vmm/setpageattributes.c b/src/sys/vmm/setpageattributes.c index a1e3d3f..78baaa4 100644 --- a/src/sys/vmm/setpageattributes.c +++ b/src/sys/vmm/setpageattributes.c @@ -28,6 +28,7 @@ *****************************************************************************************/ #include +#include #include /************************************************************************ @@ -69,6 +70,9 @@ /*** $Log$ + Revision 1.6 2005/08/09 08:45:40 fsdfs + reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. + Revision 1.4 2004/07/28 15:05:43 reddawg Major: Pages now have strict security enforcement. diff --git a/src/sys/vmm/unmappage.c b/src/sys/vmm/unmappage.c index 41dc7b3..beddb73 100644 --- a/src/sys/vmm/unmappage.c +++ b/src/sys/vmm/unmappage.c @@ -28,6 +28,7 @@ *****************************************************************************************/ #include +#include /************************************************************************ @@ -115,6 +116,9 @@ /*** $Log$ + Revision 1.4 2004/07/26 19:15:49 reddawg + test code, fixes and the like + Revision 1.3 2004/06/15 12:35:05 reddawg Cleaned Up diff --git a/src/sys/vmm/vmminit.c b/src/sys/vmm/vmminit.c index adc3105..6c97a6d 100644 --- a/src/sys/vmm/vmminit.c +++ b/src/sys/vmm/vmminit.c @@ -28,7 +28,7 @@ *****************************************************************************************/ #include - +#include /***************************************************************************************** Function: int vmm_init() @@ -49,6 +49,9 @@ /*** $Log$ + Revision 1.7 2005/08/09 08:45:40 fsdfs + reverting to old vmm. i may have modified something accidently when i wasted time indenting the code. + Revision 1.4 2004/07/28 15:05:43 reddawg Major: Pages now have strict security enforcement.