diff options
author | Raghuram Subramani <raghus2247@gmail.com> | 2025-01-05 12:29:12 -0500 |
---|---|---|
committer | Raghuram Subramani <raghus2247@gmail.com> | 2025-01-05 12:29:12 -0500 |
commit | 0738bd96222da824ff89f7505fa40066d271ae53 (patch) | |
tree | 30b1264eecae347894b2c8bf9fcec994f7cc0760 | |
parent | 2466c6f9d6eb287de8cfe6d1f15cf929265f856c (diff) |
kernel: drivers; vga_text_buffer: Add a printf wrapper
-rw-r--r-- | kernel/drivers/vga_text_buffer/vga_text_buffer.c | 15 | ||||
-rw-r--r-- | kernel/include/drivers/vga_text_buffer.h | 1 | ||||
-rw-r--r-- | kernel/kernel/kernel.c | 3 |
3 files changed, 17 insertions, 2 deletions
diff --git a/kernel/drivers/vga_text_buffer/vga_text_buffer.c b/kernel/drivers/vga_text_buffer/vga_text_buffer.c index 3122056..b2fa331 100644 --- a/kernel/drivers/vga_text_buffer/vga_text_buffer.c +++ b/kernel/drivers/vga_text_buffer/vga_text_buffer.c @@ -20,6 +20,7 @@ #include <stddef.h> #include <stdint.h> +#include <libk/stdio.h> #include <libk/string.h> #include <drivers/vga_text_buffer.h> @@ -98,3 +99,17 @@ vga_text_buffer_write_string(const char *string) for (size_t i = 0; i < size; i++) vga_text_buffer_write_char(string[i]); } + +void +vga_text_buffer_printf(const char *string, ...) +{ + /* TODO: Dynamic Memory Allocation */ + char str[256]; + + va_list ap; + va_start(ap, string); + vsnprintf(str, sizeof(str), string, ap); + va_end(ap); + + vga_text_buffer_write_string(str); +} diff --git a/kernel/include/drivers/vga_text_buffer.h b/kernel/include/drivers/vga_text_buffer.h index f060c7f..7bb88d6 100644 --- a/kernel/include/drivers/vga_text_buffer.h +++ b/kernel/include/drivers/vga_text_buffer.h @@ -55,5 +55,6 @@ bool vga_text_buffer_is_initialized(void); void vga_text_buffer_initialize(void); void vga_text_buffer_write_char(const char); void vga_text_buffer_write_string(const char *); +void vga_text_buffer_printf(const char *string, ...); #endif diff --git a/kernel/kernel/kernel.c b/kernel/kernel/kernel.c index c999a1e..2e4470b 100644 --- a/kernel/kernel/kernel.c +++ b/kernel/kernel/kernel.c @@ -32,6 +32,7 @@ void kernel_main(uint32_t magic, multiboot_info_t *multiboot_info) { serial_initialize(); + vga_text_buffer_initialize(); if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { printk("Kernel", "Invalid Multiboot Magic: %x", magic); @@ -41,8 +42,6 @@ kernel_main(uint32_t magic, multiboot_info_t *multiboot_info) GDT_load(); memory_map_load(multiboot_info); - vga_text_buffer_initialize(); - printk("Kernel", "Started."); free_memory_regions_t *free_memory_regions = memory_map_get_free_regions(); |