/** * HULK Kernel Log buffer. */ module hulk.klog; import core.stdc.stdarg; import hulk.console; static import hulk.writef; struct Klog { /** * Kernel buffer size log. * 16 gives a kernel buffer size of 64KB. */ private enum size_t KLOG_SIZE_LOG = 16u; /** Kernel buffer size. */ private enum size_t KLOG_SIZE = 1u << KLOG_SIZE_LOG; /** Kernel log buffer. */ private static __gshared align(4096) ubyte[KLOG_SIZE] klog_buffer; /** Write index in the kernel log buffer. */ private static __gshared size_t klog_index; /** * Initialize the klog module. */ public static void initialize() { } /** * Write a formatted string to the kernel log. * * @param s Format string. * @param args Variable arguments structure. */ public static void writef(string s, va_list args) { hulk.writef.writef(s, args, function void(ubyte ch) { Console.write(ch); }); } /** * Write a formatted string to the kernel log. * * @param s Format string. */ public static extern (C) void writef(string s, ...) { va_list args; va_start(args, s); writef(s, args); va_end(args); } /** * Write a formatted string and newline to the console. * * @param s Format string. */ public static extern (C) void writefln(string s, ...) { va_list args; va_start(args, s); writef(s, args); writef("\n", args); va_end(args); } }