diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-11-29 11:55:47 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-11-29 11:57:20 +0100 |
| commit | d36487d9fd2c19b54a3b97bdf3562a17184711fe (patch) | |
| tree | 63c6d641925e7a78a9cb9ff89562c26b77b2bf3b /kernel/src/libk/stdio.c | |
| parent | 450b9160fdcdb0b770b316caf1d72ab893bc7aa5 (diff) | |
kernel panic
Diffstat (limited to 'kernel/src/libk/stdio.c')
| -rw-r--r-- | kernel/src/libk/stdio.c | 45 |
1 files changed, 22 insertions, 23 deletions
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 <types.h> #include <libk/stdio.h> -#include <libk/serial_stdio.h> -#include <stdarg.h> #include <libk/string.h> #include <graphics.h> #include <serial.h> -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); } |
