diff --git a/kernel/src/console.cpp b/kernel/src/console.cpp index 7e0a805f..b440114c 100644 --- a/kernel/src/console.cpp +++ b/kernel/src/console.cpp @@ -169,6 +169,7 @@ void k_printf(const char* fmt, ...){ auto prev = current_column; + //Decimal if(ch == 'd'){ auto arg = va_arg(va, std::size_t); @@ -186,7 +187,9 @@ void k_printf(const char* fmt, ...){ } k_print(arg); - } else if(ch == 'h'){ + } + //Hexadecimal + else if(ch == 'h'){ k_print("0x"); uint8_t buffer[20]; @@ -239,7 +242,27 @@ void k_printf(const char* fmt, ...){ --i; } - } else if(ch == 's'){ + } + //Memory + else if(ch == 'm'){ + auto memory= va_arg(va, std::size_t); + + if(memory > 1024 * 1024 * 1024){ + k_print(memory / (1024 * 1024 * 1024)); + k_print("GiB"); + } else if(memory > 1024 * 1024){ + k_print(memory / (1024 * 1024)); + k_print("MiB"); + } else if(memory > 1024){ + k_print(memory / 1024); + k_print("KiB"); + } else { + k_print(memory); + k_print("B"); + } + } + //String + else if(ch == 's'){ auto arg = va_arg(va, const char*); k_print(arg); } diff --git a/kernel/src/shell.cpp b/kernel/src/shell.cpp index 1b7f3796..c79e5743 100644 --- a/kernel/src/shell.cpp +++ b/kernel/src/shell.cpp @@ -241,35 +241,23 @@ void mmap_command(const char*){ } else { k_printf("There are %d mmap entry\n", mmap_entry_count()); - k_print_line("Base End Size Type"); + k_print_line("Base End Size Type"); for(std::size_t i = 0; i < mmap_entry_count(); ++i){ auto& entry = mmap_entry(i); - k_printf("%.10h %.10h %.10h %.10d %s\n", + k_printf("%.10h %.10h %.10h %8m %s\n", entry.base, entry.base + entry.size, entry.size, entry.size, str_e820_type(entry.type)); } } } -void print_memory(const char* format, std::size_t memory){ - if(memory > 1024 * 1024 * 1024){ - k_printf(format, memory / (1024 * 1024 * 1024), "GiB"); - } else if(memory > 1024 * 1024){ - k_printf(format, memory / (1024 * 1024), "MiB"); - } else if(memory > 1024){ - k_printf(format, memory / 1024, "KiB"); - } else { - k_printf(format, memory, "B"); - } -} - void memory_command(const char*){ if(mmap_failed()){ k_print_line("The mmap was not correctly loaded from e820"); } else { - print_memory("Total available memory: %d%s\n", available_memory()); - print_memory("Total used memory: %d%s\n", used_memory()); - print_memory("Total free memory: %d%s\n", free_memory()); + k_printf("Total available memory: %m\n", available_memory()); + k_printf("Total used memory: %m\n", used_memory()); + k_printf("Total free memory: %m\n", free_memory()); } }