TD2 II.4 Various fixes on stack allocation
This commit is contained in:
parent
3877e32b59
commit
c3892a2fa7
4 changed files with 13 additions and 11 deletions
|
@ -132,7 +132,7 @@ AddrSpace::AddrSpace (OpenFile * executable)
|
|||
pageTable[0].valid = FALSE; // Catch NULL dereference
|
||||
|
||||
#ifdef CHANGED
|
||||
int bitmapSize =( UserStacksAreaSize / UserStackSize)-1;
|
||||
int bitmapSize =( UserStacksAreaSize / UserStackSize);
|
||||
DEBUG('x', "Initialise thread counter\n");
|
||||
threads = 1;
|
||||
|
||||
|
@ -140,7 +140,7 @@ AddrSpace::AddrSpace (OpenFile * executable)
|
|||
semThreadsCounter = new Semaphore("AddrSpace_thread_counter", 1);
|
||||
semAllocateUserStack = new Semaphore("Stack Avaiable", 1);
|
||||
|
||||
DEBUG('x', "Initialize memory map size:%d", bitmapSize);
|
||||
DEBUG('x', "Initialize memory map size:%d\n", bitmapSize);
|
||||
memoryMap = new BitMap(bitmapSize);
|
||||
memoryMap->Mark(0);
|
||||
#endif //CHANGED
|
||||
|
@ -329,22 +329,23 @@ AddrSpace::AllocateUserStack()
|
|||
semAllocateUserStack->P();
|
||||
bit = memoryMap->Find();
|
||||
semAllocateUserStack->V();
|
||||
|
||||
if ( bit == - 1 ) {
|
||||
DEBUG('x', "No slot avaible on User Stack\n");
|
||||
return -1;
|
||||
}
|
||||
int addr = memory - UserStackSize * bit;
|
||||
DEBUG('x', "Allocate User Stack bit %d, addr:%x\n", bit, addr);
|
||||
int addr = memory - (UserStackSize * bit);
|
||||
DEBUG('x', "Allocate User Stack bit %d, addr:0x%x\n", bit, (int)addr);
|
||||
return addr;
|
||||
}
|
||||
|
||||
void
|
||||
AddrSpace::DeAllocateUserStack(int addr){
|
||||
int memory = numPages * PageSize;
|
||||
int bit = (memory - addr) / UserStackSize;
|
||||
DEBUG('x', "Deallocate User Stack bit %d, addr:%x\n", bit, addr);
|
||||
int bit = ((memory - addr) / UserStackSize);
|
||||
DEBUG('x', "Deallocate User Stack bit %d, addr:0x%x\n", bit, addr);
|
||||
semAllocateUserStack->P();
|
||||
memoryMap->Clear(bit);
|
||||
semAllocateUserStack->P();
|
||||
semAllocateUserStack->V();
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue