74 lines
1.6 KiB
D
74 lines
1.6 KiB
D
/**
|
|
* 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);
|
|
}
|
|
}
|