From 3cd6e769659b17b782b03b2a2e4b4c6ea04db11c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 7 Feb 2006 23:45:44 +0000 Subject: [PATCH] /dev/dprintf and _kern_debug_output() weren't dumped to the syslog before, even if "syslog_debug_output" was set to "true". Reported by Jerome! git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16290 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/debug/debug.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/system/kernel/debug/debug.c b/src/system/kernel/debug/debug.c index 12f17d9349..f032ea4c50 100644 --- a/src/system/kernel/debug/debug.c +++ b/src/system/kernel/debug/debug.c @@ -108,7 +108,7 @@ kputchar(char c) { if (sSerialDebugEnabled) arch_debug_serial_putchar(c); - if (sBlueScreenEnabled) + if (sBlueScreenEnabled || sDebugScreenEnabled) blue_screen_putchar(c); } @@ -118,7 +118,7 @@ kputs(const char *s) { if (sSerialDebugEnabled) arch_debug_serial_puts(s); - if (sBlueScreenEnabled) + if (sBlueScreenEnabled || sDebugScreenEnabled) blue_screen_puts(s); } @@ -570,11 +570,23 @@ debug_debugger_running(void) void debug_puts(const char *string) { - cpu_status state = disable_interrupts(); + cpu_status state; + + // we only need the length for syslog + size_t length = 0; + if (sSyslogOutputEnabled) + length = strlen(string); + + state = disable_interrupts(); acquire_spinlock(&sSpinlock); kputs(string); + // kputs() doesn't output to syslog (as it's only used + // from the kernel debugger elsewhere) + if (sSyslogOutputEnabled) + syslog_write(sOutputBuffer, length); + release_spinlock(&sSpinlock); restore_interrupts(state); } @@ -836,10 +848,7 @@ kprintf(const char *format, ...) vsnprintf(sOutputBuffer, OUTPUT_BUFFER_SIZE, format, args); va_end(args); - if (sSerialDebugEnabled) - arch_debug_serial_puts(sOutputBuffer); - if (sBlueScreenEnabled) - blue_screen_puts(sOutputBuffer); + kputs(sOutputBuffer); }