Added debug to malloc, added caller to out of memory message
authorJohn Hodge <[email protected]>
Tue, 22 Sep 2009 12:29:36 +0000 (20:29 +0800)
committerJohn Hodge <[email protected]>
Tue, 22 Sep 2009 12:29:36 +0000 (20:29 +0800)
Kernel/arch/x86/mm_phys.c
Kernel/heap.c

index de30a93..72f5dc9 100644 (file)
@@ -76,11 +76,7 @@ void MM_Install(tMBoot_Info *MBoot)
        memsetd(gaPageReferences, 1, kernelPages);
        for( num = kernelPages; num < giPageCount; num++ )
        {
-               //if(gaPageBitmap[ num2 / 32 ] == 0) {
-               //      memsetd(&gaPageReferences[num2], 0, 31-(num2&31));
-               //      num2 = (num2 + 32) & ~31;
-               //} else
-                       gaPageReferences[num] = (gaPageBitmap[ num / 32 ] >> (num&31)) & 1;
+               gaPageReferences[num] = (gaPageBitmap[ num / 32 ] >> (num&31)) & 1;
        }
 }
 
@@ -100,7 +96,7 @@ tPAddr MM_AllocPhys()
        for(a=0;gaSuperBitmap[a]==-1&&a<num;a++);
        if(a == num) {
                RELEASE( &giPhysAlloc );
-               Warning("MM_AllocPhys - OUT OF MEMORY\n");
+               Warning("MM_AllocPhys - OUT OF MEMORY (Called by %p)",  __builtin_return_address(0));
                return 0;
        }
        for(b=0;gaSuperBitmap[a]&(1<<b);b++);
index e5a3723..90b7256 100644 (file)
@@ -175,6 +175,7 @@ void *malloc(size_t Bytes)
                if(head->Size == Bytes) {
                        head->Magic = MAGIC_USED;
                        RELEASE(&giHeapSpinlock);       // Release spinlock
+                       LOG("RETURN %p", best->Data);
                        return best->Data;
                }
                
@@ -204,6 +205,7 @@ void *malloc(size_t Bytes)
                // Check size
                if(best->Size == Bytes) {
                        RELEASE(&giHeapSpinlock);       // Release spinlock
+                       LOG("RETURN %p", best->Data);
                        return best->Data;
                }
        }
@@ -222,6 +224,7 @@ void *malloc(size_t Bytes)
        best->Magic = MAGIC_USED;       // Mark block as used
        
        RELEASE(&giHeapSpinlock);       // Release spinlock
+       LOG("RETURN %p", best->Data);
        return best->Data;
 }
 

UCC git Repository :: git.ucc.asn.au