X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/fef29e9e993e62f025d8cbfeb6b8d51588083b7e..874b3b5a74d815aa91f325e5573052a3c8ce1d39:/lunaix-os/kernel/kprintf.c diff --git a/lunaix-os/kernel/kprintf.c b/lunaix-os/kernel/kprintf.c index 3bae867..374fff2 100644 --- a/lunaix-os/kernel/kprintf.c +++ b/lunaix-os/kernel/kprintf.c @@ -1,6 +1,7 @@ +#include +#include #include #include -#include #define MAX_KPRINTF_BUF_SIZE 1024 #define MAX_XFMT_SIZE 1024 @@ -8,53 +9,81 @@ static char buf[MAX_KPRINTF_BUF_SIZE]; void -__kprintf(const char* component, const char* fmt, va_list args) { - if (!fmt) return; +__kprintf(const char* component, const char* fmt, va_list args) +{ + if (!fmt) + return; char log_level = '0'; char expanded_fmt[MAX_XFMT_SIZE]; - vga_attribute current_theme = tty_get_theme(); if (*fmt == '\x1b') { log_level = *(++fmt); fmt++; } - switch (log_level) - { - case '0': - snprintf(expanded_fmt, MAX_XFMT_SIZE, "[%s] (%s) %s", "INFO", component, fmt); - break; - case '1': - tty_set_theme(VGA_COLOR_BROWN, current_theme >> 12); - snprintf(expanded_fmt, MAX_XFMT_SIZE, "[%s] (%s) %s", "INFO", component, fmt); - break; - case '2': - tty_set_theme(VGA_COLOR_LIGHT_RED, current_theme >> 12); - snprintf(expanded_fmt, MAX_XFMT_SIZE, "[%s] (%s) %s", "EROR", component, fmt); - break; - default: - snprintf(expanded_fmt, MAX_XFMT_SIZE, "[%s] (%s) %s", "LOG", component, fmt); - break; + switch (log_level) { + case '0': + snprintf(expanded_fmt, + MAX_XFMT_SIZE, + "[%s] (%s) %s", + "INFO", + component, + fmt); + break; + case '1': + // tty_set_theme(VGA_COLOR_BROWN, current_theme >> 12); + snprintf(expanded_fmt, + MAX_XFMT_SIZE, + "\x033[6;0m[%s] (%s) %s\x033[39;49m", + "WARN", + component, + fmt); + break; + case '2': + // tty_set_theme(VGA_COLOR_LIGHT_RED, current_theme >> 12); + snprintf(expanded_fmt, + MAX_XFMT_SIZE, + "\x033[12;0m[%s] (%s) %s\x033[39;49m", + "EROR", + component, + fmt); + break; + case '3': + // tty_set_theme(VGA_COLOR_LIGHT_BLUE, current_theme >> 12); + snprintf(expanded_fmt, + MAX_XFMT_SIZE, + "\x033[9;0m[%s] (%s) %s\x033[39;49m", + "DEBG", + component, + fmt); + break; + default: + snprintf(expanded_fmt, + MAX_XFMT_SIZE, + "[%s] (%s) %s", + "LOG", + component, + fmt); + break; } __sprintf_internal(buf, expanded_fmt, MAX_KPRINTF_BUF_SIZE, args); - tty_put_str(buf); - tty_set_theme(current_theme >> 8, current_theme >> 12); + console_write_str(buf); } void -kprint_panic(const char* fmt, ...) { +kprint_panic(const char* fmt, ...) +{ va_list args; va_start(args, fmt); - + tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_RED); tty_clear_line(10); tty_clear_line(11); tty_clear_line(12); - tty_set_cpos(0, 11); __sprintf_internal(buf, fmt, MAX_KPRINTF_BUF_SIZE, args); - tty_put_str(buf); + tty_put_str_at(buf, 0, 11); va_end(args); } \ No newline at end of file