Changeset b9c7425 in mainline for kernel/generic/src
- Timestamp:
- 2009-08-20T20:03:41Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bc7d44c
- Parents:
- e731b0d
- Location:
- kernel/generic/src/console
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/chardev.c
re731b0d rb9c7425 33 33 */ 34 34 35 #include <adt/list.h> 35 36 #include <console/chardev.h> 36 37 #include <synch/waitq.h> … … 134 135 outdev->name = name; 135 136 spinlock_initialize(&outdev->lock, "outdev"); 137 link_initialize(&outdev->link); 138 list_initialize(&outdev->list); 136 139 outdev->op = op; 137 140 } -
kernel/generic/src/console/console.c
re731b0d rb9c7425 76 76 static parea_t klog_parea; 77 77 78 static indev_t stdin_sink; 79 static outdev_t stdout_source; 80 78 81 static indev_operations_t stdin_ops = { 79 82 .poll = NULL 80 83 }; 81 84 85 static void stdout_write(outdev_t *dev, wchar_t ch, bool silent); 86 87 static outdev_operations_t stdout_ops = { 88 .write = stdout_write 89 }; 90 82 91 /** Silence output */ 83 92 bool silent = false; … … 90 99 { 91 100 if (stdin == NULL) { 92 stdin = malloc(sizeof(indev_t), FRAME_ATOMIC); 93 if (stdin != NULL) 94 indev_initialize("stdin", stdin, &stdin_ops); 101 indev_initialize("stdin", &stdin_sink, &stdin_ops); 102 stdin = &stdin_sink; 95 103 } 96 104 97 105 return stdin; 106 } 107 108 void stdout_wire(outdev_t *outdev) 109 { 110 if (stdout == NULL) { 111 outdev_initialize("stdout", &stdout_source, &stdout_ops); 112 stdout = &stdout_source; 113 } 114 115 list_append(&outdev->link, &stdout->list); 116 } 117 118 static void stdout_write(outdev_t *dev, wchar_t ch, bool silent) 119 { 120 link_t *cur; 121 122 for (cur = dev->list.next; cur != &dev->list; cur = cur->next) { 123 outdev_t *sink = list_get_instance(cur, outdev_t, link); 124 sink->op->write(sink, ch, silent); 125 } 98 126 } 99 127
Note:
See TracChangeset
for help on using the changeset viewer.