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);