kernel: implement support for magenta_debug over serial

This commit is contained in:
2026-06-06 17:51:44 +01:00
parent eb15d2ffa3
commit c425d6e389
7 changed files with 216 additions and 2 deletions
+13
View File
@@ -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
View File
@@ -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;
}