Index: kernel/generic/src/console/console.c
===================================================================
--- kernel/generic/src/console/console.c	(revision 65513a5ce7ed4c4905b958d303094f168b7df063)
+++ kernel/generic/src/console/console.c	(revision 312cc6835611cf9973757338ffdd91cb89e0ab0a)
@@ -40,5 +40,4 @@
 #include <synch/spinlock.h>
 #include <arch/types.h>
-#include <ddi/device.h>
 #include <ddi/irq.h>
 #include <ddi/ddi.h>
@@ -48,4 +47,6 @@
 #include <print.h>
 #include <atomic.h>
+#include <syscall/copy.h>
+#include <errno.h>
 
 #define KLOG_SIZE PAGE_SIZE
@@ -121,4 +122,22 @@
 	silent = true;
 	arch_release_console();
+}
+
+/** Tell kernel to get keyboard/console access again */
+unative_t sys_debug_enable_console(void)
+{
+#ifdef CONFIG_KCONSOLE
+	grab_console();
+	return true;
+#else
+	return false;
+#endif
+}
+
+/** Tell kernel to relinquish keyboard/console access */
+unative_t sys_debug_disable_console(void)
+{
+	release_console();
+	return true;
 }
 
@@ -276,4 +295,37 @@
 }
 
+/** Print using kernel facility
+ *
+ * Print to kernel log.
+ *
+ */
+unative_t sys_klog(int fd, const void * buf, size_t count) 
+{
+	char *data;
+	int rc;
+
+	if (count > PAGE_SIZE)
+		return ELIMIT;
+	
+	if (count > 0) {
+		data = (char *) malloc(count + 1, 0);
+		if (!data)
+			return ENOMEM;
+		
+		rc = copy_from_uspace(data, buf, count);
+		if (rc) {
+			free(data);
+			return rc;
+		}
+		data[count] = 0;
+		
+		printf("%s", data);
+		free(data);
+	} else
+		klog_update();
+	
+	return count;
+}
+
 /** @}
  */
