From d36487d9fd2c19b54a3b97bdf3562a17184711fe Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Tue, 29 Nov 2022 11:55:47 +0100 Subject: kernel panic --- kernel/src/libk/stdio.c | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) (limited to 'kernel/src/libk/stdio.c') diff --git a/kernel/src/libk/stdio.c b/kernel/src/libk/stdio.c index e7e372d..8ecd97c 100644 --- a/kernel/src/libk/stdio.c +++ b/kernel/src/libk/stdio.c @@ -1,38 +1,32 @@ -#include #include -#include -#include #include #include #include -uint32_t curr_x; -uint32_t curr_y; - void print_char(char c) { - if (curr_x * 8 >= main_fb.width) { - curr_x = 0; - curr_y++; + if (main_fb.x * 8 >= main_fb.width) { + main_fb.x = 0; + main_fb.y++; } - if (curr_y * 16 >= main_fb.height) { - curr_x = 0; - curr_y = 0; + if (main_fb.y * 16 >= main_fb.height) { + main_fb.x = 0; + main_fb.y = 0; } if (c == '\n') { write_serial('\n'); - curr_x = 0; - curr_y++; + main_fb.x = 0; + main_fb.y++; return; } if (c == '\b') { - if (curr_x != 0) { - curr_x--; + if (main_fb.x != 0) { + main_fb.x--; } return; } - fb_draw_character(main_fb, c, (int32_t)curr_x * 8, (int32_t)curr_y * 16, WHITE, BLACK); - curr_x++; + fb_draw_character(main_fb, c, (int32_t)main_fb.x * 8, (int32_t)main_fb.y * 16); + main_fb.x++; write_serial(c); } @@ -60,12 +54,19 @@ void print_hex(uint64_t num) void printf(const char *s, ...) { - size_t count = 0; - for(size_t i = 0; i < strlen(s); i++) if(s[i] == '%') count++; - va_list list; va_start(list, s); + vprintf(s, list); + + va_end(list); +} + +void vprintf(const char *s, va_list list) +{ + size_t count = 0; + for(size_t i = 0; i < strlen(s); i++) if(s[i] == '%') count++; + for(size_t i = 0; i < strlen(s); i++) { if(s[i] == '%') @@ -83,6 +84,4 @@ void printf(const char *s, ...) } else print_char(s[i]); } - - va_end(list); } -- cgit v1.2.3