diff options
author | Anton Kling <anton@kling.gg> | 2024-06-17 22:07:38 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-06-17 22:07:38 +0200 |
commit | f209faffab90186cd88cd0a2fe2cc6236bb53e15 (patch) | |
tree | 68194363c25900f5d349c8ae34d42be9ae638df8 /kernel/log.c | |
parent | 08d0b7eee74b9f345241faad460d145bb0454736 (diff) |
Reorganize logging code
Diffstat (limited to 'kernel/log.c')
-rw-r--r-- | kernel/log.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/kernel/log.c b/kernel/log.c index ff6f45b..47f6d6f 100644 --- a/kernel/log.c +++ b/kernel/log.c @@ -1,6 +1,7 @@ #include "log.h" #include <cpu/arch_inst.h> #include <sched/scheduler.h> +#include <stdarg.h> struct stackframe { struct stackframe *ebp; @@ -8,7 +9,7 @@ struct stackframe { }; void dump_backtrace(u32 max_frames) { - struct stackframe *stk = (void*)get_current_sbp(); + struct stackframe *stk = (void *)get_current_sbp(); kprintf("Stack trace:\n"); for (u32 frame = 0; stk && frame < max_frames; ++frame) { kprintf(" 0x%x\n", stk->eip); @@ -19,22 +20,25 @@ void dump_backtrace(u32 max_frames) { } } -void klog(char *str, int code) { +void klog(int code, char *fmt, ...) { + va_list list; + va_start(list, fmt); switch (code) { + case LOG_SUCCESS: + kprintf("[SUCCESS] "); + break; case LOG_NOTE: kprintf("[NOTE] "); break; case LOG_WARN: kprintf("[WARN] "); break; + default: case LOG_ERROR: kprintf("[ERROR] "); break; - default: - case LOG_SUCCESS: - kprintf("[SUCCESS] "); - break; } - - puts(str); + vkprintf(fmt, list); + va_end(list); + kprintf("\n"); } |