Made the "message" command work correctly again. Broke it with my recent
changes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35540 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
3e5343f226
commit
0ea0681f58
@ -67,8 +67,6 @@ struct debug_strlcpy_parameters {
|
||||
|
||||
static const char* const kKDLPrompt = "kdebug> ";
|
||||
|
||||
static va_list kDummyVaList;
|
||||
|
||||
extern "C" int kgets(char* buffer, int length);
|
||||
|
||||
void call_modules_hook(bool enter);
|
||||
@ -94,7 +92,9 @@ static struct syslog_message* sSyslogMessage;
|
||||
static struct ring_buffer* sSyslogBuffer;
|
||||
static bool sSyslogDropped = false;
|
||||
|
||||
static const char* sCurrentKernelDebuggerMessagePrefix;
|
||||
static const char* sCurrentKernelDebuggerMessage;
|
||||
static va_list sCurrentKernelDebuggerMessageArgs;
|
||||
|
||||
#define DEFAULT_SYSLOG_BUFFER_SIZE 65536
|
||||
#define OUTPUT_BUFFER_SIZE 1024
|
||||
@ -693,6 +693,23 @@ kprintf_args(const char* format, va_list args)
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
print_kernel_debugger_message()
|
||||
{
|
||||
if (sCurrentKernelDebuggerMessagePrefix != NULL
|
||||
|| sCurrentKernelDebuggerMessage != NULL) {
|
||||
if (sCurrentKernelDebuggerMessagePrefix != NULL)
|
||||
kprintf("%s", sCurrentKernelDebuggerMessagePrefix);
|
||||
if (sCurrentKernelDebuggerMessage != NULL) {
|
||||
kprintf_args(sCurrentKernelDebuggerMessage,
|
||||
sCurrentKernelDebuggerMessageArgs);
|
||||
}
|
||||
|
||||
kprintf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
kernel_debugger_loop(const char* messagePrefix, const char* message,
|
||||
va_list args, int32 cpu)
|
||||
@ -702,16 +719,11 @@ kernel_debugger_loop(const char* messagePrefix, const char* message,
|
||||
|
||||
DebugAllocPool* allocPool = create_debug_alloc_pool();
|
||||
|
||||
sCurrentKernelDebuggerMessagePrefix = messagePrefix;
|
||||
sCurrentKernelDebuggerMessage = message;
|
||||
sCurrentKernelDebuggerMessageArgs = args;
|
||||
|
||||
if (messagePrefix != NULL || message != NULL) {
|
||||
if (messagePrefix != NULL)
|
||||
kprintf("%s", messagePrefix);
|
||||
if (message)
|
||||
kprintf_args(message, args);
|
||||
|
||||
kprintf("\n");
|
||||
}
|
||||
print_kernel_debugger_message();
|
||||
|
||||
kprintf("Welcome to Kernel Debugging Land...\n");
|
||||
|
||||
@ -916,11 +928,7 @@ kernel_debugger_internal(const char* messagePrefix, const char* message,
|
||||
static int
|
||||
cmd_dump_kdl_message(int argc, char** argv)
|
||||
{
|
||||
if (sCurrentKernelDebuggerMessage) {
|
||||
kputs(sCurrentKernelDebuggerMessage);
|
||||
kputs("\n");
|
||||
}
|
||||
|
||||
print_kernel_debugger_message();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1534,7 +1542,8 @@ debug_trap_cpu_in_kdl(int32 cpu, bool returnIfHandedOver)
|
||||
if (returnIfHandedOver)
|
||||
break;
|
||||
|
||||
kernel_debugger_internal(NULL, NULL, kDummyVaList, cpu);
|
||||
kernel_debugger_internal(NULL, NULL,
|
||||
sCurrentKernelDebuggerMessageArgs, cpu);
|
||||
} else
|
||||
smp_intercpu_int_handler(cpu);
|
||||
}
|
||||
@ -1546,7 +1555,8 @@ debug_trap_cpu_in_kdl(int32 cpu, bool returnIfHandedOver)
|
||||
void
|
||||
debug_double_fault(int32 cpu)
|
||||
{
|
||||
kernel_debugger_internal("Double Fault!", NULL, kDummyVaList, cpu);
|
||||
kernel_debugger_internal("Double Fault!", NULL,
|
||||
sCurrentKernelDebuggerMessageArgs, cpu);
|
||||
}
|
||||
|
||||
|
||||
@ -1726,7 +1736,7 @@ kernel_debugger(const char* message)
|
||||
{
|
||||
cpu_status state = disable_interrupts();
|
||||
|
||||
kernel_debugger_internal(message, NULL, kDummyVaList,
|
||||
kernel_debugger_internal(message, NULL, sCurrentKernelDebuggerMessageArgs,
|
||||
smp_get_current_cpu());
|
||||
|
||||
restore_interrupts(state);
|
||||
|
Loading…
Reference in New Issue
Block a user