Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/console/console.c

    r98000fb rb9c7425  
    7676static parea_t klog_parea;
    7777
     78static indev_t stdin_sink;
     79static outdev_t stdout_source;
     80
    7881static indev_operations_t stdin_ops = {
    7982        .poll = NULL
    8083};
    8184
     85static void stdout_write(outdev_t *dev, wchar_t ch, bool silent);
     86
     87static outdev_operations_t stdout_ops = {
     88        .write = stdout_write
     89};
     90
    8291/** Silence output */
    8392bool silent = false;
     
    9099{
    91100        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;
    95103        }
    96104       
    97105        return stdin;
     106}
     107
     108void 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
     118static 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        }
    98126}
    99127
Note: See TracChangeset for help on using the changeset viewer.