summaryrefslogtreecommitdiff
path: root/kernel/log.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-06-17 22:07:38 +0200
committerAnton Kling <anton@kling.gg>2024-06-17 22:07:38 +0200
commitf209faffab90186cd88cd0a2fe2cc6236bb53e15 (patch)
tree68194363c25900f5d349c8ae34d42be9ae638df8 /kernel/log.c
parent08d0b7eee74b9f345241faad460d145bb0454736 (diff)
Reorganize logging code
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");
}