Bit of debug cleanup, fixing bugs found on GrUB2
[tpg/acess2.git] / Kernel / logging.c
index 18f75fb..1895b5b 100644 (file)
@@ -21,7 +21,11 @@ enum eLogLevels
        LOG_LEVEL_DEBUG,
        NUM_LOG_LEVELS
 };
-const char     *csaLevelCodes[] = {"k","p","f","e","w","n","l","d"};
+const char     *csaLevelColours[] = {
+               "\x1B[35m", "\x1B[34m", "\x1B[36m", "\x1B[31m",
+               "\x1B[33m", "\x1B[32m", "\x1B[0m", "\x1B[0m"
+               };
+const char     *csaLevelCodes[] =  {"k","p","f","e","w","n","l","d"};
 
 // === TYPES ===
 typedef struct sLogEntry
@@ -50,10 +54,8 @@ void Log_Warning(char *Ident, char *Message, ...);
 void   Log_Notice(char *Ident, char *Message, ...);
 void   Log_Log(char *Ident, char *Message, ...);
 void   Log_Debug(char *Ident, char *Message, ...);
-//static Uint64        Log_Int_GetIdent(const char *Str);
 
 // === EXPORTS ===
-EXPORT(Log_KernelPanic);
 EXPORT(Log_Panic);
 EXPORT(Log_Error);
 EXPORT(Log_Warning);
@@ -63,6 +65,7 @@ EXPORT(Log_Debug);
 
 // === GLOBALS ===
 tSpinlock      glLog;
+tSpinlock      glLogOutput;
 tLogList       gLog;
 tLogList       gLog_Levels[NUM_LOG_LEVELS];
 
@@ -74,10 +77,12 @@ void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args)
 {
         int    len;
        tLogEntry       *ent;
+       va_list args_tmp;
        
        if( Level >= NUM_LOG_LEVELS )   return;
        
-       len = vsnprintf(NULL, 256, Format, Args);
+       va_copy(args_tmp, Args);
+       len = vsnprintf(NULL, 256, Format, args_tmp);
        
        //Log("len = %i", len);
        
@@ -118,12 +123,15 @@ void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args)
  */
 void Log_Int_PrintMessage(tLogEntry *Entry)
 {
-       LogF("%018lli%s [%+8s] %s\n",
+       //LOCK( &glLogOutput );
+       LogF("%s%014lli%s [%+8s] %s\x1B[0m\r\n",
+               csaLevelColours[Entry->Level],
                Entry->Time,
                csaLevelCodes[Entry->Level],
                Entry->Ident,
                Entry->Data
                );
+       //RELEASE( &glLogOutput );
 }
 
 /**

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