From e7d63633623f42478be8a42c313411a037dcc89b Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Tue, 30 Jan 2024 17:56:51 +0100 Subject: [PATCH] base-nova: Synchronize output to serial console with the hypervisor. --- repos/base-nova/src/core/core_log_out.cc | 13 +++++++++++++ repos/base/src/core/core_log.cc | 2 ++ repos/base/src/core/include/core_log.h | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/repos/base-nova/src/core/core_log_out.cc b/repos/base-nova/src/core/core_log_out.cc index 84c7c5264c..8894a24cd0 100644 --- a/repos/base-nova/src/core/core_log_out.cc +++ b/repos/base-nova/src/core/core_log_out.cc @@ -18,6 +18,9 @@ #include #include +/* NOVA includes */ +#include + void Genode::Core_log::out(char const c) { enum { CLOCK = 0, BAUDRATE = 115200 }; @@ -28,3 +31,13 @@ void Genode::Core_log::out(char const c) uart.put_char('\r'); uart.put_char(c); } + +void Genode::Core_log::acquire() +{ + Nova::acquire_console(); +} + +void Genode::Core_log::release() +{ + Nova::release_console(); +} diff --git a/repos/base/src/core/core_log.cc b/repos/base/src/core/core_log.cc index 8df8613bd3..ba6fb31e13 100644 --- a/repos/base/src/core/core_log.cc +++ b/repos/base/src/core/core_log.cc @@ -45,8 +45,10 @@ void Genode::init_core_log(Core_log_range const &r) { range = r; } void Genode::Core_log::output(char const * str) { + acquire(); for (unsigned i = 0; i < Genode::strlen(str); i++) { out(str[i]); out_mem(str[i]); } + release(); } diff --git a/repos/base/src/core/include/core_log.h b/repos/base/src/core/include/core_log.h index b298180226..0b0b13bef8 100644 --- a/repos/base/src/core/include/core_log.h +++ b/repos/base/src/core/include/core_log.h @@ -31,6 +31,10 @@ namespace Genode { struct Genode::Core_log { + void acquire(); + + void release(); + void out(char const c); void output(char const * str);