aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-01-31 00:32:26 -0500
committerRaghuram Subramani <raghus2247@gmail.com>2025-01-31 00:32:26 -0500
commitee16fdda814e381351578bb87696c572773df02a (patch)
treea0d54139615ea5dc10e9795d5e2e9c1f6f862fe0
parenteadb94693002a2f5435722f2d967d7fa08866a1d (diff)
drivers: serial: C->C++
-rw-r--r--kernel/CMakeLists.txt4
-rw-r--r--kernel/drivers/serial.cc (renamed from kernel/drivers/serial/serial.c)27
-rw-r--r--kernel/include/drivers/serial.h13
-rw-r--r--kernel/kernel/kernel.cc2
-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);
}