Changeset b9c7425 in mainline
- 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
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/drivers/ski.c
re731b0d rb9c7425 129 129 130 130 outdev_initialize("skiout", &skiout, &skiout_ops); 131 stdout = &skiout;131 stdout_wire(&skiout); 132 132 133 133 sysinfo_set_item_val("fb", NULL, false); -
kernel/arch/sparc64/src/drivers/sgcn.c
re731b0d rb9c7425 380 380 sysinfo_set_item_val("fb.kind", NULL, 4); 381 381 382 outdev_initialize("sgcnout", &sgcnout, &sgcnout_ops); 383 stdout = &sgcnout;382 outdev_initialize("sgcnout", &sgcnout, &sgcnout_ops); 383 stdout_wire(&sgcnout); 384 384 } 385 385 -
kernel/genarch/src/drivers/dsrln/dsrlnout.c
re731b0d rb9c7425 66 66 67 67 outdev_initialize("dsrlnout", &dsrlnout_console, &dsrlnout_ops); 68 stdout = &dsrlnout_console;68 stdout_wire(&dsrlnout_console); 69 69 70 70 sysinfo_set_item_val("fb", NULL, true); -
kernel/genarch/src/drivers/ega/ega.c
re731b0d rb9c7425 567 567 568 568 outdev_initialize("ega", &ega_console, &ega_ops); 569 stdout = &ega_console;569 stdout_wire(&ega_console); 570 570 571 571 sysinfo_set_item_val("fb", NULL, true); -
kernel/genarch/src/fb/fb.c
re731b0d rb9c7425 583 583 584 584 outdev_initialize("fb", &fb_console, &fb_ops); 585 stdout = &fb_console;585 stdout_wire(&fb_console); 586 586 587 587 return true; -
kernel/generic/include/console/chardev.h
re731b0d rb9c7425 36 36 #define KERN_CHARDEV_H_ 37 37 38 #include <adt/list.h> 38 39 #include <arch/types.h> 39 40 #include <synch/waitq.h> … … 75 76 } outdev_operations_t; 76 77 77 /** Character input device. */78 /** Character output device. */ 78 79 typedef struct outdev { 79 80 char *name; … … 81 82 /** Protects everything below. */ 82 83 SPINLOCK_DECLARE(lock); 84 85 /** Fields suitable for multiplexing. */ 86 link_t link; 87 link_t list; 83 88 84 89 /** Implementation of outdev operations. */ -
kernel/generic/include/console/console.h
re731b0d rb9c7425 44 44 45 45 extern indev_t *stdin_wire(void); 46 extern void stdout_wire(outdev_t *outdev); 46 47 extern void console_init(void); 47 48 -
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.