TD3 II.2 Manage processes counter
This commit is contained in:
parent
479d37133c
commit
dcb11cf311
3 changed files with 24 additions and 2 deletions
|
@ -168,6 +168,10 @@ AddrSpace::AddrSpace (OpenFile * executable)
|
|||
DEBUG('x', "Initialize memory map size:%d\n", bitmapSize);
|
||||
memoryMap = new BitMap(bitmapSize);
|
||||
memoryMap->Mark(0);
|
||||
semProcessesCounter->P();
|
||||
processes++;
|
||||
semProcessesCounter->V();
|
||||
DEBUG('x', "Increase Process counter:%d\n", processes);
|
||||
#endif //CHANGED
|
||||
|
||||
AddrSpaceList.Append(this);
|
||||
|
@ -180,15 +184,31 @@ AddrSpace::AddrSpace (OpenFile * executable)
|
|||
|
||||
AddrSpace::~AddrSpace ()
|
||||
{
|
||||
#ifdef CHANGED
|
||||
for(unsigned i = 0; i < numPages; i++) {
|
||||
pageProvider->ReleasePage(pageTable[i].physicalPage);
|
||||
}
|
||||
#endif
|
||||
|
||||
DEBUG('s',"Delete Page Table\n");
|
||||
delete [] pageTable;
|
||||
pageTable = NULL;
|
||||
|
||||
AddrSpaceList.Remove(this);
|
||||
#ifdef CHANGED
|
||||
DEBUG('c',"Delete Semaphores, memorymap\n");
|
||||
delete semThreadsCounter;
|
||||
delete semAllocateUserStack;
|
||||
delete memoryMap;
|
||||
semProcessesCounter->P();
|
||||
processes--;
|
||||
semProcessesCounter->V();
|
||||
DEBUG('c', "Decrease Process counter:%d\n", processes);
|
||||
#endif
|
||||
if ( processes == 0 ){
|
||||
DEBUG('c', "No more processes on RAM, call Exit()\n");
|
||||
interrupt->Powerdown();
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue