Call debugger_puts hooks on modules when serial debug output is enabled (modules themselves must reject loading if they don't find mymodule_debug_output in kernel settings).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24054 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -91,20 +91,30 @@ static int32 sCurrentLine = 0;
|
|||||||
static void
|
static void
|
||||||
kputchar(char c)
|
kputchar(char c)
|
||||||
{
|
{
|
||||||
|
uint32 i;
|
||||||
|
|
||||||
if (sSerialDebugEnabled)
|
if (sSerialDebugEnabled)
|
||||||
arch_debug_serial_putchar(c);
|
arch_debug_serial_putchar(c);
|
||||||
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
||||||
blue_screen_putchar(c);
|
blue_screen_putchar(c);
|
||||||
|
for (i = 0; sSerialDebugEnabled && i < kMaxDebuggerModules; i++)
|
||||||
|
if (sDebuggerModules[i] && sDebuggerModules[i]->debugger_puts)
|
||||||
|
sDebuggerModules[i]->debugger_puts(&c, sizeof(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
kputs(const char *s)
|
kputs(const char *s)
|
||||||
{
|
{
|
||||||
|
uint32 i;
|
||||||
|
|
||||||
if (sSerialDebugEnabled)
|
if (sSerialDebugEnabled)
|
||||||
arch_debug_serial_puts(s);
|
arch_debug_serial_puts(s);
|
||||||
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
||||||
blue_screen_puts(s);
|
blue_screen_puts(s);
|
||||||
|
for (i = 0; sSerialDebugEnabled && i < kMaxDebuggerModules; i++)
|
||||||
|
if (sDebuggerModules[i] && sDebuggerModules[i]->debugger_puts)
|
||||||
|
sDebuggerModules[i]->debugger_puts(s, strlen(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1159,6 +1169,7 @@ flush_pending_repeats(void)
|
|||||||
{
|
{
|
||||||
if (sMessageRepeatCount > 0) {
|
if (sMessageRepeatCount > 0) {
|
||||||
int32 length;
|
int32 length;
|
||||||
|
uint32 i;
|
||||||
|
|
||||||
if (sMessageRepeatCount > 1) {
|
if (sMessageRepeatCount > 1) {
|
||||||
static char temp[40];
|
static char temp[40];
|
||||||
@@ -1171,6 +1182,9 @@ flush_pending_repeats(void)
|
|||||||
syslog_write(temp, length);
|
syslog_write(temp, length);
|
||||||
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
||||||
blue_screen_puts(temp);
|
blue_screen_puts(temp);
|
||||||
|
for (i = 0; sSerialDebugEnabled && i < kMaxDebuggerModules; i++)
|
||||||
|
if (sDebuggerModules[i] && sDebuggerModules[i]->debugger_puts)
|
||||||
|
sDebuggerModules[i]->debugger_puts(temp, length);
|
||||||
} else {
|
} else {
|
||||||
// if we only have one repeat just reprint the last buffer
|
// if we only have one repeat just reprint the last buffer
|
||||||
if (sSerialDebugEnabled)
|
if (sSerialDebugEnabled)
|
||||||
@@ -1179,6 +1193,9 @@ flush_pending_repeats(void)
|
|||||||
syslog_write(sLastOutputBuffer, strlen(sLastOutputBuffer));
|
syslog_write(sLastOutputBuffer, strlen(sLastOutputBuffer));
|
||||||
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
||||||
blue_screen_puts(sLastOutputBuffer);
|
blue_screen_puts(sLastOutputBuffer);
|
||||||
|
for (i = 0; sSerialDebugEnabled && i < kMaxDebuggerModules; i++)
|
||||||
|
if (sDebuggerModules[i] && sDebuggerModules[i]->debugger_puts)
|
||||||
|
sDebuggerModules[i]->debugger_puts(sLastOutputBuffer, strlen(sLastOutputBuffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
sMessageRepeatFirstTime = 0;
|
sMessageRepeatFirstTime = 0;
|
||||||
@@ -1211,6 +1228,7 @@ dprintf_args(const char *format, va_list args, bool syslogOutput)
|
|||||||
{
|
{
|
||||||
cpu_status state;
|
cpu_status state;
|
||||||
int32 length;
|
int32 length;
|
||||||
|
uint32 i;
|
||||||
|
|
||||||
// ToDo: maybe add a non-interrupt buffer and path that only
|
// ToDo: maybe add a non-interrupt buffer and path that only
|
||||||
// needs to acquire a semaphore instead of needing to disable
|
// needs to acquire a semaphore instead of needing to disable
|
||||||
@@ -1239,6 +1257,9 @@ dprintf_args(const char *format, va_list args, bool syslogOutput)
|
|||||||
syslog_write(sOutputBuffer, length);
|
syslog_write(sOutputBuffer, length);
|
||||||
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
if (sBlueScreenEnabled || sDebugScreenEnabled)
|
||||||
blue_screen_puts(sOutputBuffer);
|
blue_screen_puts(sOutputBuffer);
|
||||||
|
for (i = 0; sSerialDebugEnabled && i < kMaxDebuggerModules; i++)
|
||||||
|
if (sDebuggerModules[i] && sDebuggerModules[i]->debugger_puts)
|
||||||
|
sDebuggerModules[i]->debugger_puts(sOutputBuffer, length);
|
||||||
|
|
||||||
memcpy(sLastOutputBuffer, sOutputBuffer, length);
|
memcpy(sLastOutputBuffer, sOutputBuffer, length);
|
||||||
sLastOutputBuffer[length] = 0;
|
sLastOutputBuffer[length] = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user