diff --git a/Kconfig b/Kconfig index 00f7aa6..196b31e 100644 --- a/Kconfig +++ b/Kconfig @@ -57,4 +57,9 @@ config NCPUS help This option sets the maximum number of CPUs the kernel can support. +config LOG_BUFFER_SHIFT + int "Log buffer size shift" + default 14 + help + This option sets the size of the kernel log buffer as a power of two. The actual size is calculated as 2 raised to the power of this value (i.e., 2^LOG_BUFFER_SHIFT bytes). endmenu diff --git a/src/kern/log.zig b/src/kern/log.zig index e4116ea..747234e 100644 --- a/src/kern/log.zig +++ b/src/kern/log.zig @@ -4,6 +4,7 @@ const rtl = @import("rtl"); const pl = b.pl; const ke = b.ke; const ki = ke.private; +const config = @import("config"); const DebugWriter = struct { interface: std.Io.Writer, @@ -31,7 +32,10 @@ const DebugWriter = struct { } }; -var ringbuffer = ki.log_ring.RingBuffer(14, 5).init(); +// Messages are on average 2^5 = 32 bytes. +const avg_msg_size_bits = 5; + +var ringbuffer = ki.log_ring.RingBuffer(config.CONFIG_LOG_BUFFER_SHIFT, avg_msg_size_bits).init(); pub fn log( comptime level: std.log.Level,