From e050d6f1513ac0cd0b38e93ad03ff3daa755a6de Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Sat, 6 Apr 2019 11:46:53 -0700 Subject: [PATCH] Move more logging infrastructure into kutil --- src/{kernel => include}/log_areas.inc | 2 +- src/kernel/log.cpp | 19 ++----------------- src/kernel/log.h | 12 ++---------- src/kernel/main.cpp | 4 ++-- src/libraries/kutil/include/kutil/logger.h | 7 +++++++ src/libraries/kutil/logger.cpp | 14 ++++++++++++++ 6 files changed, 28 insertions(+), 30 deletions(-) rename src/{kernel => include}/log_areas.inc (88%) diff --git a/src/kernel/log_areas.inc b/src/include/log_areas.inc similarity index 88% rename from src/kernel/log_areas.inc rename to src/include/log_areas.inc index f8803fa..5c78128 100644 --- a/src/kernel/log_areas.inc +++ b/src/include/log_areas.inc @@ -1,6 +1,6 @@ LOG(apic, info); LOG(device, info); -LOG(paging, debug); +LOG(paging, info); LOG(driver, info); LOG(memory, debug); LOG(fs, info); diff --git a/src/kernel/log.cpp b/src/kernel/log.cpp index 7f6543c..ef19cae 100644 --- a/src/kernel/log.cpp +++ b/src/kernel/log.cpp @@ -1,20 +1,12 @@ -#include "kutil/constexpr_hash.h" #include "kutil/memory.h" #include "console.h" #include "log.h" #include "scheduler.h" -namespace logs { static uint8_t log_buffer[0x10000]; static log::logger g_logger(log_buffer, sizeof(log_buffer)); -#define LOG(name, lvl) \ - log::area_t name = #name ## _h; \ - const char * name ## _name = #name; -#include "log_areas.inc" -#undef LOG - static const uint8_t level_colors[] = {0x07, 0x07, 0x0f, 0x0b, 0x09}; static void @@ -36,7 +28,7 @@ logger_task() auto *ent = reinterpret_cast(buffer); auto *cons = console::get(); - //g_logger.set_immediate(nullptr); + g_logger.set_immediate(nullptr); log::info(logs::task, "Starting kernel logger task"); scheduler &s = scheduler::get(); @@ -56,15 +48,8 @@ logger_task() } } -void init() +void logger_init() { new (&g_logger) log::logger(log_buffer, sizeof(log_buffer)); g_logger.set_immediate(output_log); - -#define LOG(name, lvl) \ - g_logger.register_area(name, name ## _name, log::level ::lvl); -#include "log_areas.inc" -#undef LOG } - -} // namespace logs diff --git a/src/kernel/log.h b/src/kernel/log.h index 8e6c2e3..d3b10b2 100644 --- a/src/kernel/log.h +++ b/src/kernel/log.h @@ -3,15 +3,7 @@ #include "kutil/logger.h" namespace log = kutil::log; +namespace logs = kutil::logs; -namespace logs { - -#define LOG(name, lvl) extern log::area_t name; -#include "log_areas.inc" -#undef LOG - -void init(); +void logger_init(); void logger_task(); - -} // namespace logs - diff --git a/src/kernel/main.cpp b/src/kernel/main.cpp index d2bddd0..fb285a3 100644 --- a/src/kernel/main.cpp +++ b/src/kernel/main.cpp @@ -37,7 +37,7 @@ init_console() cons->set_color(0x08, 0x00); cons->puts(GIT_VERSION " booting...\n"); - logs::init(); + logger_init(); } void @@ -132,7 +132,7 @@ kernel_main(kernel_args *header) syscall_enable(); scheduler *sched = new (&scheduler::get()) scheduler(devices->get_lapic()); - sched->create_kernel_task(-1, logs::logger_task); + sched->create_kernel_task(-1, logger_task); for (auto &f : ird.files()) { if (f.executable()) diff --git a/src/libraries/kutil/include/kutil/logger.h b/src/libraries/kutil/include/kutil/logger.h index 8bdb5bc..56baee6 100644 --- a/src/libraries/kutil/include/kutil/logger.h +++ b/src/libraries/kutil/include/kutil/logger.h @@ -108,4 +108,11 @@ void error(area_t area, const char *fmt, ...); void fatal(area_t area, const char *fmt, ...); } // namespace log + +namespace logs { +#define LOG(name, lvl) extern log::area_t name; +#include "log_areas.inc" +#undef LOG +} // namespace logs + } // namespace kutil diff --git a/src/libraries/kutil/logger.cpp b/src/libraries/kutil/logger.cpp index aac3173..aa2a968 100644 --- a/src/libraries/kutil/logger.cpp +++ b/src/libraries/kutil/logger.cpp @@ -1,9 +1,18 @@ #include "kutil/assert.h" +#include "kutil/constexpr_hash.h" #include "kutil/logger.h" #include "kutil/memory.h" #include "kutil/printf.h" namespace kutil { +namespace logs { +#define LOG(name, lvl) \ + log::area_t name = #name ## _h; \ + const char * name ## _name = #name; +#include "log_areas.inc" +#undef LOG +} + namespace log { using kutil::memset; @@ -30,6 +39,11 @@ logger::logger(uint8_t *buffer, size_t size) : memset(&m_levels, 0, sizeof(m_levels)); memset(&m_names, 0, sizeof(m_names)); s_log = this; + +#define LOG(name, lvl) \ + register_area(logs::name, logs::name ## _name, log::level::lvl); +#include "log_areas.inc" +#undef LOG } void