diff --git a/kaleid/kernel/init/info.c b/kaleid/kernel/init/info.c index d8dec18..6ee8aba 100644 --- a/kaleid/kernel/init/info.c +++ b/kaleid/kernel/init/info.c @@ -116,6 +116,6 @@ void BtDoSanityChecks(uint mbMagic) { DebugLog("[Init] Kernel successfully loaded at %p with %x magic\n" " and it uses %dKB\n\n", BtLoaderInfo.kernelAddr, - mbMagic,tmp); + mbMagic, tmp); } diff --git a/kaleid/kernel/init/init.c b/kaleid/kernel/init/init.c index 2012209..11f80a4 100644 --- a/kaleid/kernel/init/init.c +++ b/kaleid/kernel/init/init.c @@ -62,8 +62,6 @@ noreturn void BtStartKern(multiboot_info_t *mbInfo, uint mbMagic, void *codeSeg) IoGetRtcTimeChar(); IoPrintRtcTime(); - KernLog("%d\n",realKernelEnd); - KeStartShell(); PoShutdown(); diff --git a/kaleid/kernel/io/rtc.c b/kaleid/kernel/io/rtc.c index c28a3fa..427590d 100644 --- a/kaleid/kernel/io/rtc.c +++ b/kaleid/kernel/io/rtc.c @@ -151,7 +151,7 @@ void RtcHandler(ISRFrame_t *regs) void IoPrintRtcTime(void) { Time_t* RtcTime = IoGetRtcTime(); - KernLog("[RTC Time] %02d/%02d/%04d ; %02d:%02d:%02d \n\n", + KernLog("[RTC Time] %02d/%02d/%04d ; %02d:%02d:%02d \n", RtcTime->day, RtcTime->month, RtcTime->year + RtcTime->century*100, diff --git a/kaleid/kernel/sh/shcmds.c b/kaleid/kernel/sh/shcmds.c index abc58b2..e00a95c 100644 --- a/kaleid/kernel/sh/shcmds.c +++ b/kaleid/kernel/sh/shcmds.c @@ -80,42 +80,114 @@ error_t CmdMemMap(int argc, char **argv, char *cmdline) return EOK; } +extern ulong realKernelEnd; + error_t CmdMemUsage(int argc, char **argv, char *cmdline) { - size_t start, end; - size_t diff, max; + size_t stack_cur; + size_t img_diff, stack_diff; + size_t heap_start, heap_end; + size_t heap_diff, heap_max; ulong flags = KePauseIRQs(); - start = (size_t)_heap_start; - end = (size_t)_heap_end; - max = _heap_max; + heap_start = (size_t)_heap_start; + heap_end = (size_t)_heap_end; + heap_max = _heap_max; KeRestoreIRQs(flags); - diff = (size_t)end - (size_t)start; + img_diff = realKernelEnd - (size_t)BtLoaderInfo.kernelAddr; + stack_diff = (size_t)BtLoaderInfo.kernelEndAddr - (realKernelEnd + 1); + heap_diff = (size_t)heap_end - (size_t)heap_start; - KernLog("Heap start:\t\t%p (%luMB + %luKB + %luB)\n", - start, _ADDR_TO_MB(start), - _ADDR_TO_KB(start), - _ADDR_TO_B(start)); + KernLog("Kernel image:\n"); - KernLog("Heap end:\t\t%p (%luMB + %luKB + %luB)\n", - end, _ADDR_TO_MB(end), - _ADDR_TO_KB(end), - _ADDR_TO_B(end)); + KernLog("\tstarts at:\t\t%p (%04luMB + %04luKB + %04luB)\n", + BtLoaderInfo.kernelAddr, + _ADDR_TO_MB((size_t)BtLoaderInfo.kernelAddr), + _ADDR_TO_KB((size_t)BtLoaderInfo.kernelAddr), + _ADDR_TO_B((size_t)BtLoaderInfo.kernelAddr)); - KernLog("Heap size:\t\t%luMB + %luKB + %luB (%#lx)\n", - _ADDR_TO_MB(diff), - _ADDR_TO_KB(diff), - _ADDR_TO_B(diff), - diff); + KernLog("\tends at:\t\t%p (%04luMB + %04luKB + %04luB)\n", + realKernelEnd, + _ADDR_TO_MB(realKernelEnd), + _ADDR_TO_KB(realKernelEnd), + _ADDR_TO_B(realKernelEnd)); - KernLog("Max heap size:\t%luMB + %luKB + %luB (%#lx)\n", - _ADDR_TO_MB(max), - _ADDR_TO_KB(max), - _ADDR_TO_B(max), - max); + KernLog("\tsize:\t\t\t%04luMB + %04luKB + %04luB (%p)\n", + _ADDR_TO_MB(img_diff), + _ADDR_TO_KB(img_diff), + _ADDR_TO_B(img_diff), + img_diff); + + KernLog("Kernel stack:\n"); + + KernLog("\tstarts at:\t\t%p (%04luMB + %04luKB + %04luB)\n", + BtLoaderInfo.kernelEndAddr, + _ADDR_TO_MB((size_t)BtLoaderInfo.kernelEndAddr), + _ADDR_TO_KB((size_t)BtLoaderInfo.kernelEndAddr), + _ADDR_TO_B((size_t)BtLoaderInfo.kernelEndAddr)); + + BARRIER(); + char var; + (void)var; + + stack_cur = (size_t)BtLoaderInfo.kernelEndAddr - (size_t)&var; + + KernLog("\tends at:\t\t%p (%04luMB + %04luKB + %04luB)\n", + stack_cur, + _ADDR_TO_MB(stack_cur), + _ADDR_TO_KB(stack_cur), + _ADDR_TO_B(stack_cur)); + + KernLog("\tmin addr:\t\t%p (%04luMB + %04luKB + %04luB)\n", + realKernelEnd+1, + _ADDR_TO_MB(realKernelEnd+1), + _ADDR_TO_KB(realKernelEnd+1), + _ADDR_TO_B(realKernelEnd+1)); + + KernLog("\tsize (cur):\t\t%04luMB + %04luKB + %04luB (%p)\n", + _ADDR_TO_MB(stack_cur), + _ADDR_TO_KB(stack_cur), + _ADDR_TO_B(stack_cur), + stack_cur); + + KernLog("\tsize (max):\t\t%04luMB + %04luKB + %04luB (%p)\n", + _ADDR_TO_MB(stack_diff), + _ADDR_TO_KB(stack_diff), + _ADDR_TO_B(stack_diff), + stack_diff); + + KernLog("Kernel heap:\n"); + + KernLog("\tstarts at:\t\t%p (%04luMB + %04luKB + %04luB)\n", + heap_start, _ADDR_TO_MB(heap_start), + _ADDR_TO_KB(heap_start), + _ADDR_TO_B(heap_start)); + + KernLog("\tends at:\t\t%p (%04luMB + %04luKB + %04luB)\n", + heap_end, _ADDR_TO_MB(heap_end), + _ADDR_TO_KB(heap_end), + _ADDR_TO_B(heap_end)); + + KernLog("\tmax addr:\t\t%p (%04luMB + %04luKB + %04luB)\n", + heap_start + heap_max, + _ADDR_TO_MB(heap_start + heap_max), + _ADDR_TO_KB(heap_start + heap_max), + _ADDR_TO_B(heap_start + heap_max)); + + KernLog("\tsize (cur):\t\t%04luMB + %04luKB + %04luB (%p)\n", + _ADDR_TO_MB(heap_diff), + _ADDR_TO_KB(heap_diff), + _ADDR_TO_B(heap_diff), + heap_diff); + + KernLog("\tsize (max):\t\t%04luMB + %04luKB + %04luB (%p)\n", + _ADDR_TO_MB(heap_max), + _ADDR_TO_KB(heap_max), + _ADDR_TO_B(heap_max), + heap_max); return EOK; } diff --git a/kaleid/kernel/sh/shell.h b/kaleid/kernel/sh/shell.h index 591dd3b..1c39878 100644 --- a/kaleid/kernel/sh/shell.h +++ b/kaleid/kernel/sh/shell.h @@ -26,6 +26,7 @@ #include #include +#include #include #include #include