X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=KernelLand%2FKernel%2Flogging.c;h=0ae993e5b37ac3d6b690d44e6273023ad5d08f79;hb=aa62597b70c3f3753ee21b174ca695b6b6c4cdef;hp=b419be3d695b28a4c0b1ecb8239dcd7da83f711c;hpb=51ab5f489bc356940c95cc936fd0508e8f07ea97;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/logging.c b/KernelLand/Kernel/logging.c index b419be3d..0ae993e5 100644 --- a/KernelLand/Kernel/logging.c +++ b/KernelLand/Kernel/logging.c @@ -69,14 +69,16 @@ EXPORT(Log_Debug); // === GLOBALS === tShortSpinlock glLogOutput; -#if USE_RING_BUFFER +#if CACHE_MESSAGES +# if USE_RING_BUFFER Uint8 gaLog_RingBufferData[sizeof(tRingBuffer)+RING_BUFFER_SIZE]; tRingBuffer *gpLog_RingBuffer = (void*)gaLog_RingBufferData; -#else +# else tMutex glLog; tLogList gLog; tLogList gLog_Levels[NUM_LOG_LEVELS]; -#endif +# endif // USE_RING_BUFFER +#endif // CACHE_MESSAGES // === CODE === /** @@ -89,11 +91,9 @@ void Log_AddEvent(const char *Ident, int Level, const char *Format, va_list Args va_list args_tmp; if( Level >= NUM_LOG_LEVELS ) return; - + va_copy(args_tmp, Args); - len = vsnprintf(NULL, 256, Format, args_tmp); - - //Log("len = %i", len); + len = vsnprintf(NULL, 0, Format, args_tmp); #if USE_RING_BUFFER || !CACHE_MESSAGES { @@ -156,13 +156,18 @@ void Log_AddEvent(const char *Ident, int Level, const char *Format, va_list Args */ void Log_Int_PrintMessage(tLogEntry *Entry) { + if( CPU_HAS_LOCK(&glLogOutput) ) + return ; // TODO: Error? SHORTLOCK( &glLogOutput ); - LogF("%s%014lli%s [%-8s] %i - %s", + LogF("%s%014lli", csaLevelColours[Entry->Level], - Entry->Time, + Entry->Time + ); + LogF("%s [%-8s] %i - %.*s", csaLevelCodes[Entry->Level], Entry->Ident, Threads_GetTID(), + Entry->Length, Entry->Data ); LogF("\x1B[0m\r\n"); // Separate in case Entry->Data is too long