]> 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)
commitbedfd909ba58d6f7ca1c3f36b7d48c61d8cde291
tree8df45257ee07bceeb7b48e87d981fd847cf1f635
parent0aafb45b937672327c6dcacf96cb3abb27743924
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