From 48814535b21093cd859ddceb57e6ed1adc54196e Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Sat, 18 Dec 2021 04:05:01 +0500 Subject: [PATCH] Print kernel info --- kernel/info.c | 23 +++++++++++++++++++++++ kernel/info.h | 1 + kernel/main.c | 2 ++ 3 files changed, 26 insertions(+) diff --git a/kernel/info.c b/kernel/info.c index 2920df9..b0f7fe6 100644 --- a/kernel/info.c +++ b/kernel/info.c @@ -1,5 +1,6 @@ #include "info.h" +#include #include static bool cmdline_terminated(const char *s); @@ -26,6 +27,28 @@ void kernel_info_initialize( kinfo->kernel_stack_top = stack_top; } +void kernel_info_print(const struct Kernel_Info *const kinfo) +{ + kernaux_console_printf("Kernel info\n"); + kernaux_console_printf(" cmdline: %s\n", kinfo->cmdline); + kernaux_console_printf(" modules: %lu\n", kinfo->modules_count); + kernaux_console_printf(" areas: %lu\n", kinfo->areas_count); + kernaux_console_printf("\n"); + kernaux_console_printf(" offset: %lu\n", kinfo->kernel_offset); + kernaux_console_printf(" size: %lu\n", kinfo->kernel_size); + kernaux_console_printf("\n"); + kernaux_console_printf(" phys base: %lu\n", kinfo->kernel_phys_base); + kernaux_console_printf(" phys limit: %lu\n", kinfo->kernel_phys_limit); + kernaux_console_printf("\n"); + kernaux_console_printf(" virt base: %lu\n", kinfo->kernel_virt_base); + kernaux_console_printf(" virt limit: %lu\n", kinfo->kernel_virt_limit); + kernaux_console_printf("\n"); + kernaux_console_printf(" modules size: %lu\n", kinfo->modules_total_size); + kernaux_console_printf(" kernel & modules sizet: %lu\n", kinfo->kernel_and_modules_total_size); + kernaux_console_printf("\n"); + kernaux_console_printf(" stack top: %lu\n", kinfo->kernel_stack_top); +} + bool kernel_info_validate(const struct Kernel_Info *const kinfo) { if (!kinfo) return false; diff --git a/kernel/info.h b/kernel/info.h index 9630d3f..ec971a9 100644 --- a/kernel/info.h +++ b/kernel/info.h @@ -67,6 +67,7 @@ void kernel_info_initialize( ); bool kernel_info_validate(const struct Kernel_Info *kinfo); +void kernel_info_print(const struct Kernel_Info *kinfo); #ifdef __cplusplus } diff --git a/kernel/main.c b/kernel/main.c index 7511239..20d275d 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -153,6 +153,8 @@ void main( kinfo.kernel_and_modules_total_size = kinfo.kernel_size + kinfo.modules_total_size; + kernel_info_print(&kinfo); + paging_clear(); paging_identity(); /* kinfo.freepde_start = */ paging_mapkernel(&kinfo);