Ignore:
File:
1 edited

Legend:

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

    rb9c7425 r98000fb  
    7676static parea_t klog_parea;
    7777
    78 static indev_t stdin_sink;
    79 static outdev_t stdout_source;
    80 
    8178static indev_operations_t stdin_ops = {
    8279        .poll = NULL
    8380};
    8481
    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 
    9182/** Silence output */
    9283bool silent = false;
     
    9990{
    10091        if (stdin == NULL) {
    101                 indev_initialize("stdin", &stdin_sink, &stdin_ops);
    102                 stdin = &stdin_sink;
     92                stdin = malloc(sizeof(indev_t), FRAME_ATOMIC);
     93                if (stdin != NULL)
     94                        indev_initialize("stdin", stdin, &stdin_ops);
    10395        }
    10496       
    10597        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         }
    12698}
    12799
Note: See TracChangeset for help on using the changeset viewer.