X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e5c3c8accffbcd77fea12ccf2b0accc70c645aaa..87067c7f16425837971f5c1b5fd0fc5338757377:/lunaix-os/kernel/kprintf.c diff --git a/lunaix-os/kernel/kprintf.c b/lunaix-os/kernel/kprintf.c index fd005c0..91646e9 100644 --- a/lunaix-os/kernel/kprintf.c +++ b/lunaix-os/kernel/kprintf.c @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include @@ -7,62 +9,41 @@ #define MAX_XFMT_SIZE 512 void -__kprintf(const char* component, const char* fmt, va_list args) +__kprintf_internal(const char* component, + int log_level, + const char* fmt, + va_list args) { char buf[MAX_KPRINTF_BUF_SIZE]; - if (!fmt) - return; - char log_level = '0'; char expanded_fmt[MAX_XFMT_SIZE]; - if (*fmt == '\x1b') { - log_level = *(++fmt); - fmt++; - } - switch (log_level) { - case '0': - ksnprintf(expanded_fmt, - MAX_XFMT_SIZE, - "[%s] (%s) %s", - "INFO", - component, - fmt); - break; - case '1': + case 1: // tty_set_theme(VGA_COLOR_BROWN, current_theme >> 12); ksnprintf(expanded_fmt, MAX_XFMT_SIZE, - "\033[6;0m[%s] (%s) %s\033[39;49m", - "WARN", + "\033[6;0mW %s: %s\033[39;49m", component, fmt); break; - case '2': + case 2: // tty_set_theme(VGA_COLOR_LIGHT_RED, current_theme >> 12); ksnprintf(expanded_fmt, MAX_XFMT_SIZE, - "\033[12;0m[%s] (%s) %s\033[39;49m", - "EROR", + "\033[12;0mE %s: %s\033[39;49m", component, fmt); break; - case '3': + case 3: // tty_set_theme(VGA_COLOR_LIGHT_BLUE, current_theme >> 12); ksnprintf(expanded_fmt, MAX_XFMT_SIZE, - "\033[9;0m[%s] (%s) %s\033[39;49m", - "DEBG", + "\033[9;0mD %s: %s\033[39;49m", component, fmt); break; default: - ksnprintf(expanded_fmt, - MAX_XFMT_SIZE, - "[%s] (%s) %s", - "LOG", - component, - fmt); + ksnprintf(expanded_fmt, MAX_XFMT_SIZE, "- %s: %s", component, fmt); break; } @@ -70,6 +51,21 @@ __kprintf(const char* component, const char* fmt, va_list args) console_write_str(buf); } +void +__kprintf(const char* component, const char* fmt, va_list args) +{ + if (!fmt) + return; + char log_level = '0'; + + if (*fmt == '\x1b') { + log_level = *(++fmt); + fmt++; + } + + __kprintf_internal(component, log_level - '0', fmt, args); +} + void kprint_panic(const char* fmt, ...) { @@ -86,6 +82,24 @@ kprint_panic(const char* fmt, ...) va_end(args); } +void +kprint_dbg(const char* fmt, ...) +{ + char buf[MAX_KPRINTF_BUF_SIZE]; + va_list args; + va_start(args, fmt); + + tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_MAGENTA); + tty_clear_line(24); + + __ksprintf_internal(buf, fmt, MAX_KPRINTF_BUF_SIZE, args); + tty_put_str_at(buf, 0, 24); + + va_end(args); + + tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_BLACK); +} + void kprint_hex(const void* buffer, unsigned int size) { @@ -110,4 +124,9 @@ kprint_hex(const void* buffer, unsigned int size) console_write_str(ch_cache); console_write_char('\n'); } +} + +__DEFINE_LXSYSCALL3(void, syslog, int, level, const char*, fmt, va_list, args) +{ + __kprintf_internal("syslog", level, fmt, args); } \ No newline at end of file