From 31caaec069513216ff642446ff9b4a9ec5569989 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 16 Sep 2021 15:05:48 -0400 Subject: [PATCH] kernel: Print at the beginning and not the end of dropped regions. This way there is a better indication of where the drop occurred. --- src/system/kernel/debug/debug.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/system/kernel/debug/debug.cpp b/src/system/kernel/debug/debug.cpp index 21f1516981..593d82b196 100644 --- a/src/system/kernel/debug/debug.cpp +++ b/src/system/kernel/debug/debug.cpp @@ -1215,16 +1215,20 @@ syslog_sender(void* data) if (length > (int32)SYSLOG_MAX_MESSAGE_LENGTH) length = SYSLOG_MAX_MESSAGE_LENGTH; - length = ring_buffer_peek(sSyslogBuffer, sSyslogBufferOffset, - (uint8*)sSyslogMessage->message, length); - sSyslogBufferOffset += length; + uint8* message = (uint8*)sSyslogMessage->message; if (sSyslogDropped) { - // Add drop marker - since parts had to be dropped, it's - // guaranteed that we have enough space in the buffer now. - ring_buffer_write(sSyslogBuffer, (uint8*)"", 6); + memcpy(message, "", 6); + message += 6; + if ((length + 6) > (int32)SYSLOG_MAX_MESSAGE_LENGTH) + length -= 6; sSyslogDropped = false; } + length = ring_buffer_peek(sSyslogBuffer, sSyslogBufferOffset, + message, length); + sSyslogBufferOffset += length; + length += (addr_t)message - (addr_t)sSyslogMessage->message; + release_spinlock(&sSpinlock); restore_interrupts(state); }