X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/0f73e6cc9945f9b4a074bb62b9708d1751fa3723..8c06c883e7b13c115d5ff207f79d4b68fccd5ad6:/lunaix-os/kernel/kprintf.c diff --git a/lunaix-os/kernel/kprintf.c b/lunaix-os/kernel/kprintf.c deleted file mode 100644 index 451abe0..0000000 --- a/lunaix-os/kernel/kprintf.c +++ /dev/null @@ -1,152 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#define MAX_KPRINTF_BUF_SIZE 512 -#define MAX_XFMT_SIZE 512 - -static char* log_prefix[] = { "- ", "W ", "E ", "D " }; -static char* color_code[] = { "", "\033[6;0m", "\033[12;0m", "\033[9;0m" }; - -void -__kprintf_internal(const char* component, - int log_level, - const char* prefix, - const char* fmt, - va_list args) -{ - char buf[MAX_KPRINTF_BUF_SIZE]; - char expanded_fmt[MAX_XFMT_SIZE]; - char* color = color_code[log_level]; - - if (component) { - ksnprintf(expanded_fmt, - MAX_XFMT_SIZE, - "%s%s%s: %s\033[39;49m", - color, - prefix, - component, - fmt); - } else { - ksnprintf( - expanded_fmt, MAX_XFMT_SIZE, "%s%s%s\033[39;49m", color, prefix, fmt); - } - - __ksprintf_internal(buf, expanded_fmt, MAX_KPRINTF_BUF_SIZE, args); - console_write_str(buf); -} - -char* -__get_loglevel(char* fmt, int* log_level_out) -{ - char l = '0'; - if (*fmt == '\x1b') { - l = *(++fmt); - fmt++; - } - l -= '0'; - - if (l > 3) { - l = 0; - } - - *log_level_out = (int)l; - return fmt; -} - -void -kappendf(const char* fmt, ...) -{ - char buf[MAX_KPRINTF_BUF_SIZE]; - - va_list args; - va_start(args, fmt); - - int log_level; - fmt = __get_loglevel(fmt, &log_level); - - __kprintf_internal(NULL, log_level, "", fmt, args); - - va_end(args); -} - -void -__kprintf(const char* component, const char* fmt, va_list args) -{ - if (!fmt) - return; - - int log_level; - fmt = __get_loglevel(fmt, &log_level); - __kprintf_internal(component, log_level, log_prefix[log_level], fmt, args); -} - -void -kprint_panic(const char* fmt, ...) -{ - char buf[MAX_KPRINTF_BUF_SIZE]; - va_list args; - va_start(args, fmt); - - tty_set_theme(VGA_COLOR_WHITE, VGA_COLOR_RED); - tty_clear_line(24); - - __ksprintf_internal(buf, fmt, MAX_KPRINTF_BUF_SIZE, args); - tty_put_str_at(buf, 0, 24); - - va_end(args); - - spin(); -} - -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) -{ - unsigned char* data = (unsigned char*)buffer; - char buf[16]; - char ch_cache[16]; - unsigned int ptr = 0; - int i; - - ch_cache[0] = '|'; - ch_cache[1] = ' '; - while (size) { - ksnprintf(buf, 64, " %.4p: ", ptr); - console_write_str(buf); - for (i = 0; i < 8 && size; i++, size--, ptr++) { - unsigned char c = *(data + ptr) & 0xff; - ch_cache[2 + i] = (32 <= c && c < 127) ? c : '.'; - ksnprintf(buf, 64, "%.2x ", c); - console_write_str(buf); - } - ch_cache[2 + i] = '\0'; - 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