]> Projects (at) Tadryanom (dot) Me - AdrOS.git/commit
feat: add kernel log ring buffer to kprintf (printk-style dmesg support)
authorTulio A M Mendes <[email protected]>
Tue, 10 Feb 2026 04:53:00 +0000 (01:53 -0300)
committerTulio A M Mendes <[email protected]>
Tue, 10 Feb 2026 04:53:00 +0000 (01:53 -0300)
commit24a96af57b2c86496e8fc59aa7733a1cab5cc11e
tree0dc1eb787b43816d73d64d2943dc7220b7320394
parent37d98f1fdee169827b168ec01ea84c3c9185d8d3
feat: add kernel log ring buffer to kprintf (printk-style dmesg support)

Like Linux's printk, kprintf() now writes every formatted message
into a 16KB circular ring buffer (klog_buf) before dispatching to
console drivers (UART, VGA). This allows old messages to be
retrieved later via klog_read(), enabling dmesg functionality.

Design:
- 16KB static ring buffer (KLOG_BUF_SIZE)
- klog_head tracks next write position, klog_count tracks fill
- klog_append() writes into ring, capping at buffer size
- klog_read(out, size) copies oldest-to-newest into caller buffer
- Protected by dedicated klog_lock spinlock

Flow: kprintf() -> kvsnprintf() -> klog_append() -> console_write()

Passes: make, cppcheck, QEMU smoke test.
include/console.h
src/kernel/console.c