Index: kernel/generic/src/console/chardev.c
===================================================================
--- kernel/generic/src/console/chardev.c	(revision 98000fb4ea6015506f059c9b121e417ce991ecfd)
+++ kernel/generic/src/console/chardev.c	(revision 90c8b8debd741b2a29ed7955b99cd5ea34956065)
@@ -33,4 +33,5 @@
  */
 
+#include <adt/list.h>
 #include <console/chardev.h>
 #include <synch/waitq.h>
@@ -134,4 +135,6 @@
 	outdev->name = name;
 	spinlock_initialize(&outdev->lock, "outdev");
+	link_initialize(&outdev->link);
+	list_initialize(&outdev->list);
 	outdev->op = op;
 }
Index: kernel/generic/src/console/console.c
===================================================================
--- kernel/generic/src/console/console.c	(revision 98000fb4ea6015506f059c9b121e417ce991ecfd)
+++ kernel/generic/src/console/console.c	(revision 90c8b8debd741b2a29ed7955b99cd5ea34956065)
@@ -76,8 +76,17 @@
 static parea_t klog_parea;
 
+static indev_t stdin_sink;
+static outdev_t stdout_source;
+
 static indev_operations_t stdin_ops = {
 	.poll = NULL
 };
 
+static void stdout_write(outdev_t *dev, wchar_t ch, bool silent);
+
+static outdev_operations_t stdout_ops = {
+	.write = stdout_write
+};
+
 /** Silence output */
 bool silent = false;
@@ -90,10 +99,29 @@
 {
 	if (stdin == NULL) {
-		stdin = malloc(sizeof(indev_t), FRAME_ATOMIC);
-		if (stdin != NULL)
-			indev_initialize("stdin", stdin, &stdin_ops);
+		indev_initialize("stdin", &stdin_sink, &stdin_ops);
+		stdin = &stdin_sink;
 	}
 	
 	return stdin;
+}
+
+void stdout_wire(outdev_t *outdev)
+{
+	if (stdout == NULL) {
+		outdev_initialize("stdout", &stdout_source, &stdout_ops);
+		stdout = &stdout_source;
+	}
+	
+	list_append(&outdev->link, &stdout->list);
+}
+
+static void stdout_write(outdev_t *dev, wchar_t ch, bool silent)
+{
+	link_t *cur;
+	
+	for (cur = dev->list.next; cur != &dev->list; cur = cur->next) {
+		outdev_t *sink = list_get_instance(cur, outdev_t, link);
+		sink->op->write(sink, ch, silent);
+	}
 }
 
