aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2025-01-01 08:24:38 -0500
committerRaghuram Subramani <raghus2247@gmail.com>2025-01-01 08:24:38 -0500
commit9f5c5bc6cb88913af96da62f30cdb070f2c30df5 (patch)
tree43ebe6463da9439d3c3e6c5200252ae8a05b4fcf
parent9cd003e3f7ff4cea9945ea1f0330a3044235855a (diff)
kernel: printk: Color output
The sender's name must be colorized in yellow, to make it easier to look at the logs.
-rw-r--r--kernel/drivers/serial/serial.c4
-rw-r--r--kernel/drivers/vga_text_buffer/vga_text_buffer.c13
-rw-r--r--kernel/include/drivers/serial.h4
-rw-r--r--kernel/include/drivers/vga_text_buffer.h6
-rw-r--r--kernel/include/libk/io.h2
-rw-r--r--kernel/kernel/halt.c2
-rw-r--r--kernel/kernel/kernel.c2
-rw-r--r--kernel/kernel/stack_smashing_protector.c2
-rw-r--r--kernel/libk/printk.c7
9 files changed, 24 insertions, 18 deletions
diff --git a/kernel/drivers/serial/serial.c b/kernel/drivers/serial/serial.c
index 122902b..06cbdbb 100644
--- a/kernel/drivers/serial/serial.c
+++ b/kernel/drivers/serial/serial.c
@@ -56,7 +56,7 @@ is_transmit_empty()
}
void
-serial_write_char(char a)
+serial_write_char(const char a)
{
while (is_transmit_empty() == 0)
;
@@ -65,7 +65,7 @@ serial_write_char(char a)
}
void
-serial_write_string(char *string)
+serial_write_string(const char *string)
{
size_t size = strlen(string);
for (size_t i = 0; i < size; i++)
diff --git a/kernel/drivers/vga_text_buffer/vga_text_buffer.c b/kernel/drivers/vga_text_buffer/vga_text_buffer.c
index df92b63..62c7ab8 100644
--- a/kernel/drivers/vga_text_buffer/vga_text_buffer.c
+++ b/kernel/drivers/vga_text_buffer/vga_text_buffer.c
@@ -30,7 +30,7 @@ uint8_t vga_text_buffer_color;
uint16_t *vga_text_buffer_buffer;
static uint8_t
-vga_entry_color(vga_color fg, vga_color bg)
+vga_entry_color(const vga_color fg, const vga_color bg)
{
/*
* bg fg
@@ -40,7 +40,7 @@ vga_entry_color(vga_color fg, vga_color bg)
}
static uint16_t
-vga_entry(unsigned char character, uint8_t color)
+vga_entry(const unsigned char character, const uint8_t color)
{
/*
* color character
@@ -50,7 +50,10 @@ vga_entry(unsigned char character, uint8_t color)
}
static void
-vga_text_buffer_write_entry_at(char c, uint8_t color, uint8_t x, uint8_t y)
+vga_text_buffer_write_entry_at(const char c,
+ const uint8_t color,
+ const uint8_t x,
+ const uint8_t y)
{
size_t index = y * VGA_WIDTH + x;
vga_text_buffer_buffer[index] = vga_entry(c, color);
@@ -71,7 +74,7 @@ vga_text_buffer_initialize(void)
}
void
-vga_text_buffer_write_char(char c)
+vga_text_buffer_write_char(const char c)
{
if (c == '\n') {
vga_text_buffer_row++;
@@ -89,7 +92,7 @@ vga_text_buffer_write_char(char c)
}
void
-vga_text_buffer_write_string(char *string)
+vga_text_buffer_write_string(const char *string)
{
size_t size = strlen(string);
for (size_t i = 0; i < size; i++)
diff --git a/kernel/include/drivers/serial.h b/kernel/include/drivers/serial.h
index eef5e02..949b012 100644
--- a/kernel/include/drivers/serial.h
+++ b/kernel/include/drivers/serial.h
@@ -22,7 +22,7 @@
#define PORT 0x3f8 // COM1
void serial_initialize(void);
-void serial_write_char(char);
-void serial_write_string(char *);
+void serial_write_char(const char);
+void serial_write_string(const char *);
#endif
diff --git a/kernel/include/drivers/vga_text_buffer.h b/kernel/include/drivers/vga_text_buffer.h
index 0362f17..9fd1ac3 100644
--- a/kernel/include/drivers/vga_text_buffer.h
+++ b/kernel/include/drivers/vga_text_buffer.h
@@ -24,8 +24,8 @@
* Implement scrolling
*/
-#include <stdint.h>
#include <stdbool.h>
+#include <stdint.h>
#define VGA_WIDTH 80
#define VGA_HEIGHT 25
@@ -53,7 +53,7 @@ typedef enum {
bool vga_text_buffer_is_initialized(void);
void vga_text_buffer_initialize(void);
-void vga_text_buffer_write_char(char);
-void vga_text_buffer_write_string(char *);
+void vga_text_buffer_write_char(const char);
+void vga_text_buffer_write_string(const char *);
#endif
diff --git a/kernel/include/libk/io.h b/kernel/include/libk/io.h
index 8757dd6..bf23bf1 100644
--- a/kernel/include/libk/io.h
+++ b/kernel/include/libk/io.h
@@ -19,6 +19,6 @@
#ifndef __libk_io_h
#define __libk_io_h
-void printk(char *);
+void printk(const char *, const char *);
#endif
diff --git a/kernel/kernel/halt.c b/kernel/kernel/halt.c
index 53d27e2..96bb62c 100644
--- a/kernel/kernel/halt.c
+++ b/kernel/kernel/halt.c
@@ -23,7 +23,7 @@
void
halt(void)
{
- printk("kernel: halted.");
+ printk("kernel", "Halted.");
for (;;)
;
diff --git a/kernel/kernel/kernel.c b/kernel/kernel/kernel.c
index 9d325d5..dbe0c8b 100644
--- a/kernel/kernel/kernel.c
+++ b/kernel/kernel/kernel.c
@@ -27,5 +27,5 @@ kernel_main(void)
vga_text_buffer_initialize();
serial_initialize();
- printk("kernel_main: Started\n");
+ printk("kernel_main", "Started.");
}
diff --git a/kernel/kernel/stack_smashing_protector.c b/kernel/kernel/stack_smashing_protector.c
index 3cff7dc..f7842d8 100644
--- a/kernel/kernel/stack_smashing_protector.c
+++ b/kernel/kernel/stack_smashing_protector.c
@@ -13,6 +13,6 @@ void
__stack_chk_fail(void)
{
/* TODO: Panic the kernel */
- printk("SSP: Stack smashing detected!\n");
+ printk("Stack Smashing Protector", "Stack smashing detected!");
halt();
}
diff --git a/kernel/libk/printk.c b/kernel/libk/printk.c
index 1bde77f..bac3efe 100644
--- a/kernel/libk/printk.c
+++ b/kernel/libk/printk.c
@@ -22,8 +22,11 @@
#include <libk/io.h>
void
-printk(char *msg)
+printk(const char *from, const char *msg)
{
- vga_text_buffer_write_string(msg);
+ serial_write_string("\033[33m");
+ serial_write_string(from);
+ serial_write_string(":\033[0m ");
serial_write_string(msg);
+ serial_write_string("\033[0m\n");
}