Fixes a nit:
put a spinlock around the serial debug routines to keep multiple cpus from interleaving their output. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19548 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
10f6ed940b
commit
9bc7a58b1d
|
@ -97,6 +97,7 @@ static bool sKeyboardHandlerInstalled = false;
|
||||||
static bool sBochsOutput = false;
|
static bool sBochsOutput = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static spinlock sSerialOutputSpinlock = 0;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
put_char(const char c)
|
put_char(const char c)
|
||||||
|
@ -280,8 +281,8 @@ arch_debug_serial_getchar(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
static void
|
||||||
arch_debug_serial_putchar(const char c)
|
_arch_debug_serial_putchar(const char c)
|
||||||
{
|
{
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
put_char('\r');
|
put_char('\r');
|
||||||
|
@ -290,14 +291,32 @@ arch_debug_serial_putchar(const char c)
|
||||||
put_char(c);
|
put_char(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
arch_debug_serial_putchar(const char c)
|
||||||
|
{
|
||||||
|
cpu_status state = disable_interrupts();
|
||||||
|
acquire_spinlock(&sSerialOutputSpinlock);
|
||||||
|
|
||||||
|
_arch_debug_serial_putchar(c);
|
||||||
|
|
||||||
|
release_spinlock(&sSerialOutputSpinlock);
|
||||||
|
restore_interrupts(state);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_debug_serial_puts(const char *s)
|
arch_debug_serial_puts(const char *s)
|
||||||
{
|
{
|
||||||
|
cpu_status state = disable_interrupts();
|
||||||
|
acquire_spinlock(&sSerialOutputSpinlock);
|
||||||
|
|
||||||
while (*s != '\0') {
|
while (*s != '\0') {
|
||||||
arch_debug_serial_putchar(*s);
|
_arch_debug_serial_putchar(*s);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
release_spinlock(&sSerialOutputSpinlock);
|
||||||
|
restore_interrupts(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue