X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fdebug.c;h=7e8acba7ddce4c3dd36cb00bf67a347c8afc4cd2;hb=af41b353233d069060ee2cc639f54f61291b031f;hp=fe063c840bdc535e994bbee68d28c4ffba7a4650;hpb=8e1f78107cc9aa137de29e0c9df3a1fccb483b67;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/debug.c b/KernelLand/Kernel/debug.c index fe063c84..7e8acba7 100644 --- a/KernelLand/Kernel/debug.c +++ b/KernelLand/Kernel/debug.c @@ -7,12 +7,11 @@ #define DEBUG_MAX_LINE_LEN 256 #define LOCK_DEBUG_OUTPUT 1 // Avoid interleaving of output lines? -#define TRACE_TO_KTERM 0 // Send ENTER/DEBUG/LEAVE to debug? +#define TRACE_TO_KTERM 1 // Send ENTER/DEBUG/LEAVE to debug? // === IMPORTS === extern void Threads_Dump(void); -extern void Heap_Dump(void) - ; +extern void Heap_Dump(void); extern void KernelPanic_SetMode(void); extern void KernelPanic_PutChar(char Ch); extern void IPStack_SendDebugText(const char *Text); @@ -24,7 +23,6 @@ void Debug_DbgOnlyFmt(const char *format, va_list args); void Debug_FmtS(int bUseKTerm, const char *format, ...); void Debug_Fmt(int bUseKTerm, const char *format, va_list args); void Debug_SetKTerminal(const char *File); -void LogFV(const char *Fmt, va_list args); // === GLOBALS === int gDebug_Level = 0; @@ -42,7 +40,10 @@ static void Debug_Putchar(char ch) { Debug_PutCharDebug(ch); - if( !gbDebug_IsKPanic ) + if( gbDebug_IsKPanic ) + KernelPanic_PutChar(ch); + + if( gbDebug_IsKPanic < 2 ) { if(gbInPutChar) return ; gbInPutChar = 1; @@ -50,8 +51,6 @@ static void Debug_Putchar(char ch) VFS_Write(giDebug_KTerm, 1, &ch); gbInPutChar = 0; } - else - KernelPanic_PutChar(ch); if( gbSendNetworkDebug ) { @@ -78,7 +77,7 @@ static void Debug_Puts(int UseKTerm, const char *Str) IPStack_SendDebugText(Str); // Output to the kernel terminal - if( UseKTerm && !gbDebug_IsKPanic && giDebug_KTerm != -1) + if( UseKTerm && gbDebug_IsKPanic < 2 && giDebug_KTerm != -1) { if(gbInPutChar) return ; gbInPutChar = 1; @@ -114,10 +113,17 @@ void Debug_FmtS(int bUseKTerm, const char *format, ...) void Debug_KernelPanic(void) { - #if LOCK_DEBUG_OUTPUT - SHORTREL(&glDebug_Lock); - #endif - gbDebug_IsKPanic = 1; + if( !gbDebug_IsKPanic ) + { + #if LOCK_DEBUG_OUTPUT + SHORTREL(&glDebug_Lock); + #endif + VT_SetTerminal(7); + } + // 5 nested panics? Fuck it + if( gbDebug_IsKPanic > 5 ) + for(;;); + gbDebug_IsKPanic ++; KernelPanic_SetMode(); } @@ -244,8 +250,8 @@ void Panic(const char *Fmt, ...) Debug_Putchar('\r'); Debug_Putchar('\n'); - Threads_Dump(); - Heap_Dump(); + //Threads_Dump(); + //Heap_Dump(); for(;;) ; }