X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Flogging.c;h=b419be3d695b28a4c0b1ecb8239dcd7da83f711c;hb=327c86d2221d49994ad49ec0d1717444e04521b8;hp=225ce53e89884a91f04ef52a949c82446c44068e;hpb=7d881c2e5fef91a6570e46ef69a5d4a5cf0e8b4d;p=tpg%2Facess2.git diff --git a/Kernel/logging.c b/Kernel/logging.c index 225ce53e..b419be3d 100644 --- a/Kernel/logging.c +++ b/Kernel/logging.c @@ -5,7 +5,9 @@ * logging.c - Kernel Logging Service */ #include +#include +#define CACHE_MESSAGES 0 #define PRINT_ON_APPEND 1 #define USE_RING_BUFFER 1 #define RING_BUFFER_SIZE 4096 @@ -47,15 +49,15 @@ typedef struct sLogList } tLogList; // === PROTOTYPES === -void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args); +void Log_AddEvent(const char *Ident, int Level, const char *Format, va_list Args); static void Log_Int_PrintMessage(tLogEntry *Entry); -void Log_KernelPanic(char *Ident, char *Message, ...); -void Log_Panic(char *Ident, char *Message, ...); -void Log_Error(char *Ident, char *Message, ...); -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, ...); +//void Log_KernelPanic(const char *Ident, const char *Message, ...); +//void Log_Panic(const char *Ident, const char *Message, ...); +//void Log_Error(const char *Ident, const char *Message, ...); +//void Log_Warning(const char *Ident, const char *Message, ...); +//void Log_Notice(const char *Ident, const char *Message, ...); +//void Log_Log(const char *Ident, const char *Message, ...); +//void Log_Debug(const char *Ident, const char *Message, ...); // === EXPORTS === EXPORT(Log_Panic); @@ -80,7 +82,7 @@ tLogList gLog_Levels[NUM_LOG_LEVELS]; /** * \brief Adds an event to the log */ -void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args) +void Log_AddEvent(const char *Ident, int Level, const char *Format, va_list Args) { int len; tLogEntry *ent; @@ -93,7 +95,7 @@ void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args) //Log("len = %i", len); - #if USE_RING_BUFFER + #if USE_RING_BUFFER || !CACHE_MESSAGES { char buf[sizeof(tLogEntry)+len+1]; ent = (void*)buf; @@ -102,22 +104,26 @@ void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args) #endif ent->Time = now(); strncpy(ent->Ident, Ident, 8); + ent->Ident[8] = '\0'; ent->Level = Level; ent->Length = len; vsnprintf( ent->Data, len+1, Format, Args ); - - #if USE_RING_BUFFER + + #if CACHE_MESSAGES + # if USE_RING_BUFFER { #define LOG_HDR_LEN (14+1+2+8+2) char newData[ LOG_HDR_LEN + len + 2 + 1 ]; - sprintf( newData, "%014lli%s [%+8s] ", + char _ident[9]; + strncpy(_ident, Ident, 9); + sprintf( newData, "%014lli%s [%-8s] ", ent->Time, csaLevelCodes[Level], Ident); strcpy( newData + LOG_HDR_LEN, ent->Data ); strcpy( newData + LOG_HDR_LEN + len, "\r\n" ); gpLog_RingBuffer->Space = RING_BUFFER_SIZE; // Needed to init the buffer RingBuffer_Write( gpLog_RingBuffer, newData, LOG_HDR_LEN + len + 2 ); } - #else + # else Mutex_Acquire( &glLog ); ent->Next = gLog.Tail; @@ -133,13 +139,14 @@ void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args) gLog_Levels[Level].Tail = gLog_Levels[Level].Head = ent; Mutex_Release( &glLog ); + # endif #endif - #if PRINT_ON_APPEND + #if PRINT_ON_APPEND || !CACHE_MESSAGES Log_Int_PrintMessage( ent ); #endif - #if USE_RING_BUFFER + #if USE_RING_BUFFER || !CACHE_MESSAGES } #endif } @@ -150,31 +157,34 @@ void Log_AddEvent(char *Ident, int Level, char *Format, va_list Args) void Log_Int_PrintMessage(tLogEntry *Entry) { SHORTLOCK( &glLogOutput ); - LogF("%s%014lli%s [%+8s] %s\x1B[0m\r\n", + LogF("%s%014lli%s [%-8s] %i - %s", csaLevelColours[Entry->Level], Entry->Time, csaLevelCodes[Entry->Level], Entry->Ident, + Threads_GetTID(), Entry->Data ); + LogF("\x1B[0m\r\n"); // Separate in case Entry->Data is too long SHORTREL( &glLogOutput ); } /** * \brief KERNEL PANIC!!!! */ -void Log_KernelPanic(char *Ident, char *Message, ...) +void Log_KernelPanic(const char *Ident, const char *Message, ...) { va_list args; va_start(args, Message); Log_AddEvent(Ident, LOG_LEVEL_KPANIC, Message, args); va_end(args); + Panic("Log_KernelPanic - %s", Ident); } /** * \brief Panic Message - Driver Unrecoverable error */ -void Log_Panic(char *Ident, char *Message, ...) +void Log_Panic(const char *Ident, const char *Message, ...) { va_list args; va_start(args, Message); @@ -185,7 +195,7 @@ void Log_Panic(char *Ident, char *Message, ...) /** * \brief Error Message - Recoverable Error */ -void Log_Error(char *Ident, char *Message, ...) +void Log_Error(const char *Ident, const char *Message, ...) { va_list args; va_start(args, Message); @@ -196,7 +206,7 @@ void Log_Error(char *Ident, char *Message, ...) /** * \brief Warning Message - Something the user should know */ -void Log_Warning(char *Ident, char *Message, ...) +void Log_Warning(const char *Ident, const char *Message, ...) { va_list args; @@ -208,7 +218,7 @@ void Log_Warning(char *Ident, char *Message, ...) /** * \brief Notice Message - Something the user might like to know */ -void Log_Notice(char *Ident, char *Message, ...) +void Log_Notice(const char *Ident, const char *Message, ...) { va_list args; va_start(args, Message); @@ -219,7 +229,7 @@ void Log_Notice(char *Ident, char *Message, ...) /** * \brief Log Message - Possibly useful information */ -void Log_Log(char *Ident, char *Message, ...) +void Log_Log(const char *Ident, const char *Message, ...) { va_list args; va_start(args, Message); @@ -230,7 +240,7 @@ void Log_Log(char *Ident, char *Message, ...) /** * \brief Debug Message - Only a developer would want this info */ -void Log_Debug(char *Ident, char *Message, ...) +void Log_Debug(const char *Ident, const char *Message, ...) { va_list args; va_start(args, Message);