diff --git a/kernel/include/config.h b/kernel/include/config.h index 72ce5d96..f59a47e0 100644 --- a/kernel/include/config.h +++ b/kernel/include/config.h @@ -2,4 +2,6 @@ int __moon_version_major(); int __moon_version_minor(); -const char* __moon_version_suffix(); \ No newline at end of file +const char* __moon_version_suffix(); + +const char* moon_version(); \ No newline at end of file diff --git a/kernel/src/config.cpp b/kernel/src/config.cpp index 4b04b372..a7213e80 100644 --- a/kernel/src/config.cpp +++ b/kernel/src/config.cpp @@ -1,4 +1,5 @@ #include "config.h" +#include "std/stdio.h" #define STRINGIZE(x) #x #define STRINGIZE_VALUE_OF(x) STRINGIZE(x) @@ -28,4 +29,12 @@ const char* __moon_version_suffix() #else return STRINGIZE_VALUE_OF(_MOON_SUFFIX); #endif +} + +const char* moon_version() +{ + static char version[64]; + snprintf(version, sizeof(version), "%d.%d%s", __moon_version_major(), __moon_version_minor(), + __moon_version_suffix()); // FIXME: this string is constant each build and should only be calculated once + return version; } \ No newline at end of file diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index 297fce11..92b7af10 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -32,7 +32,7 @@ extern "C" void _start() Init::disable_smp(); // Put all other cores except the bootstrap one in an infinite loop Init::early_init(); - kinfoln("Starting Moon %d.%d%s", __moon_version_major(), __moon_version_minor(), __moon_version_suffix()); + kinfoln("Starting Moon %s", moon_version()); CPU::log_cpu_information();