diff options
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"); } |