X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=kitten%2Fkernel%2Fprintk.c;fp=kitten%2Fkernel%2Fprintk.c;h=772c87216713a18f0a00a81266ff88277691dce6;hb=66a1a4c7a9edcd7d8bc207aca093d694a6e6b5b2;hp=0000000000000000000000000000000000000000;hpb=f7cf9c19ecb0a589dd45ae0d2c91814bd3c2acc2;p=palacios.git diff --git a/kitten/kernel/printk.c b/kitten/kernel/printk.c new file mode 100644 index 0000000..772c872 --- /dev/null +++ b/kitten/kernel/printk.c @@ -0,0 +1,52 @@ +#include +#include +#include + +/** + * Prints a message to the console. + */ +int printk(const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + int rc = vprintk( fmt, args ); + va_end(args); + return rc; +} + + +int printk_print_cpu_number; + + +int +vprintk( + const char * fmt, + va_list args +) +{ + int len; + char buf[1024]; + char *p = buf; + int remain = sizeof(buf); + + /* Start with a NULL terminated string */ + *p = '\0'; + + /* Tack on the logical CPU ID */ + if( printk_print_cpu_number ) + { + len = sprintf(p, "[%u]:", this_cpu); + p += len; + remain -= len; + } + + /* Construct the string... */ + len = vscnprintf(p, remain, fmt, args); + + /* Pass the string to the console subsystem */ + console_write(buf); + + /* Return number of characters printed */ + return len; +} +