#include <mm_virt.h>
#include <heap_int.h>
#include <limits.h>
+#include <debug_hooks.h>
#define WARNINGS 1 // Warn and dump on heap errors
#define DEBUG_TRACE 0 // Enable tracing of allocations
//void *Heap_AllocateZero(const char *File, int Line, size_t Bytes);
//void *Heap_Reallocate(const char *File, int Line, void *Ptr, size_t Bytes);
//void Heap_Deallocate(const char *File, int Line, void *Ptr);
-void Heap_Dump(int bVerbose);
-void Heap_Stats(void);
+//void Heap_Dump(void);
+void Heap_ValidateDump(int bVerbose);
+//void Heap_Stats(void);
// === GLOBALS ===
tMutex glHeap;
if( !MM_Allocate( (tVAddr)gHeapEnd+(i<<12) ) )
{
Warning("OOM - Heap_Extend (%i bytes)");
- Heap_Dump(1);
+ Heap_Dump();
return NULL;
}
}
}
#if VALIDATE_ON_ALLOC
- Heap_Dump(0);
+ Heap_Validate();
#endif
// Get required size
Log_Warning("Heap", "Size of heap address %p is invalid"
" - not aligned (0x%x) [at paddr 0x%x]",
head, head->Size, MM_GetPhysAddr(&head->Size));
- Heap_Dump(VERBOSE_DUMP);
+ Heap_ValidateDump(VERBOSE_DUMP);
#endif
return NULL;
}
Log_Warning("Heap", "Size of heap address %p is invalid"
" - Too small (0x%x) [at paddr 0x%x]",
head, head->Size, MM_GetPhysAddr(&head->Size));
- Heap_Dump(VERBOSE_DUMP);
+ Heap_ValidateDump(VERBOSE_DUMP);
return NULL;
}
if( head->Size > (2<<30) ) {
Log_Warning("Heap", "Size of heap address %p is invalid"
" - Over 2GiB (0x%x) [at paddr 0x%x]",
head, head->Size, MM_GetPhysAddr(&head->Size));
- Heap_Dump(VERBOSE_DUMP);
+ Heap_ValidateDump(VERBOSE_DUMP);
return NULL;
}
#if WARNINGS
Log_Warning("Heap", "Magic of heap address %p is invalid (%p = 0x%x)",
head, &head->Magic, head->Magic);
- Heap_Dump(VERBOSE_DUMP);
+ Heap_ValidateDump(VERBOSE_DUMP);
#endif
return NULL;
}
{
// Call dump non-verbosely.
// - If a heap error is detected, it'll print
- Heap_Dump(0);
+ Heap_ValidateDump(0);
}
-void Heap_Dump(int bVerbose)
+void Heap_Dump(void)
+{
+ Heap_ValidateDump(1);
+}
+
+void Heap_ValidateDump(int bVerbose)
{
tHeapHead *head, *badHead;
tHeapFoot *foot = NULL;
#include <rwlock.h>
#include <vfs_threads.h> // VFS Handle maintainence
#include <events.h>
+#include <debug_hooks.h>
// Configuration
#define DEBUG_TRACE_ACTIVEQUEUE 0 // Trace adds/removals from the active queue
int Threads_Wake(tThread *Thread);
void Threads_AddActive(tThread *Thread);
tThread *Threads_RemActive(void);
-#endif
void Threads_ToggleTrace(int TID);
+#endif
void Threads_Fault(int Num);
void Threads_SegFault(tVAddr Addr);
void Threads_PostSignalTo(tThread *Thread, int SignalNum);
int Threads_SetGID(Uint *Errno, tUID ID);
#endif
void Threads_int_DumpThread(tThread *thread);
+#if 0
void Threads_Dump(void);
+#endif
void Threads_DumpActive(void);
tThread *Threads_int_GetRunnable(void);