summaryrefslogtreecommitdiff
path: root/kernel/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/log.c')
-rw-r--r--kernel/log.c20
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");
}