kernel: implement support for magenta_debug over serial
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
#include <arch/serial.h>
|
||||
#include <kernel/machine/debug.h>
|
||||
#include <magenta/status.h>
|
||||
|
||||
kern_status_t debug_read(void *buf, size_t max, size_t *nr_read)
|
||||
{
|
||||
return serial_read(COM1, buf, max, nr_read);
|
||||
}
|
||||
|
||||
kern_status_t debug_write(const void *buf, size_t max, size_t *nr_written)
|
||||
{
|
||||
return serial_write(COM1, buf, max, nr_written);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef KERNEL_X86_64_DEBUG_H_
|
||||
#define KERNEL_X86_64_DEBUG_H_
|
||||
|
||||
#include <magenta/types.h>
|
||||
#include <stddef.h>
|
||||
|
||||
extern kern_status_t debug_read(void *buf, size_t max, size_t *nr_read);
|
||||
extern kern_status_t debug_write(const void *buf, size_t max, size_t *nr_read);
|
||||
|
||||
#endif
|
||||
+9
-1
@@ -7,6 +7,7 @@
|
||||
#include <kernel/clock.h>
|
||||
#include <kernel/console.h>
|
||||
#include <kernel/cpu.h>
|
||||
#include <kernel/debug.h>
|
||||
#include <kernel/init.h>
|
||||
#include <kernel/libc/stdio.h>
|
||||
#include <kernel/machine/cpu.h>
|
||||
@@ -19,6 +20,7 @@
|
||||
#include <kernel/types.h>
|
||||
#include <kernel/util.h>
|
||||
#include <kernel/vm.h>
|
||||
#include <magenta/debug/packet.h>
|
||||
|
||||
#define HARDWARE_RNG
|
||||
|
||||
@@ -69,7 +71,8 @@ static void early_vm_init(uintptr_t reserve_end)
|
||||
void early_console_init(void)
|
||||
{
|
||||
const char *dest = arg_value("kernel.early-console");
|
||||
if (!dest) {
|
||||
bool debug = arg_is_set("kernel.enable-debugger");
|
||||
if (!dest || debug) {
|
||||
dest = "tty0";
|
||||
}
|
||||
|
||||
@@ -186,5 +189,10 @@ int ml_init(uintptr_t arg)
|
||||
pit_start(500);
|
||||
ml_int_enable();
|
||||
|
||||
if (arg_is_set("kernel.enable-debugger")) {
|
||||
debug_await();
|
||||
debug_create_task();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user