diff options
-rw-r--r-- | kernel/CMakeLists.txt | 4 | ||||
-rw-r--r-- | kernel/drivers/serial.cc (renamed from kernel/drivers/serial/serial.c) | 27 | ||||
-rw-r--r-- | kernel/include/drivers/serial.h | 13 | ||||
-rw-r--r-- | kernel/kernel/kernel.cc | 2 | ||||
-rw-r--r-- | kernel/libk/printk.cc (renamed from kernel/libk/printk.c) | 12 |
5 files changed, 29 insertions, 29 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 999b7d4..689103a 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -6,7 +6,7 @@ set(SRC boot/gdt/gdt.s boot/init/boot.s - drivers/serial/serial.c + drivers/serial.cc drivers/vga_text_buffer/vga_text_buffer.c kernel/halt.c @@ -16,7 +16,7 @@ set(SRC kernel/stack_smashing_protector.c libk/printf.c - libk/printk.c + libk/printk.cc libk/strlen.c libk/kmalloc.c diff --git a/kernel/drivers/serial/serial.c b/kernel/drivers/serial.cc index aae1793..df40481 100644 --- a/kernel/drivers/serial/serial.c +++ b/kernel/drivers/serial.cc @@ -16,19 +16,20 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include <stdbool.h> - -#include <libk/string.h> - -#include <kernel/io.h> - +#include <common.h> #include <drivers/serial.h> +#include <kernel/io.h> +#include <libk/string.h> +#include <stdbool.h> /* Implementation adapted from * https://wiki.osdev.org/Inline_Assembly/Examples */ +namespace Serial +{ + bool -serial_initialize(void) +initialize(void) { outb(PORT + 1, 0x00); // Disable all interrupts outb(PORT + 3, 0x80); // Enable DLAB (set baud rate divisor) @@ -53,14 +54,14 @@ serial_initialize(void) return true; } -static int -is_transmit_empty() +ALWAYS_INLINE static int +is_transmit_empty(void) { return inb(PORT + 5) & 0x20; } void -serial_write_char(const char chr) +write_char(const char chr) { while (is_transmit_empty() == 0) ; @@ -69,9 +70,11 @@ serial_write_char(const char chr) } void -serial_write_string(const char *string) +write_string(const char *string) { size_t size = strlen(string); for (size_t i = 0; i < size; i++) - serial_write_char(string[i]); + write_char(string[i]); +} + } diff --git a/kernel/include/drivers/serial.h b/kernel/include/drivers/serial.h index fc6c564..33947eb 100644 --- a/kernel/include/drivers/serial.h +++ b/kernel/include/drivers/serial.h @@ -23,16 +23,13 @@ #define PORT 0x3f8 // COM1 -#ifdef __cplusplus -extern "C" { -#endif +namespace Serial +{ -bool serial_initialize(void); -void serial_write_char(const char chr); -void serial_write_string(const char *string); +bool initialize(void); +void write_char(const char chr); +void write_string(const char *string); -#ifdef __cplusplus } -#endif #endif diff --git a/kernel/kernel/kernel.cc b/kernel/kernel/kernel.cc index 239c2f9..a7455aa 100644 --- a/kernel/kernel/kernel.cc +++ b/kernel/kernel/kernel.cc @@ -31,7 +31,7 @@ extern "C" void kernel_main(uint32_t magic, multiboot_info_t *multiboot_info) { - serial_initialize(); + Serial::initialize(); vga_text_buffer_initialize(); if (magic != MULTIBOOT_BOOTLOADER_MAGIC) { diff --git a/kernel/libk/printk.c b/kernel/libk/printk.cc index f97fa1c..c6a1496 100644 --- a/kernel/libk/printk.c +++ b/kernel/libk/printk.cc @@ -32,11 +32,11 @@ printk(const char *from, const char *msg, ...) vsnprintf(str, sizeof(str), msg, ap); va_end(ap); - serial_write_string("\033[33m"); - serial_write_string(from); - serial_write_string(":\033[0m "); - serial_write_string(str); - serial_write_string("\033[0m\n"); + Serial::write_string("\033[33m"); + Serial::write_string(from); + Serial::write_string(":\033[0m "); + Serial::write_string(str); + Serial::write_string("\033[0m\n"); } void @@ -50,5 +50,5 @@ printk_raw(const char *msg, ...) vsnprintf(str, sizeof(str), msg, ap); va_end(ap); - serial_write_string(str); + Serial::write_string(str); } |