Ignore:
File:
1 edited

Legend:

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

    re3a050c7 r11527051  
    5252#include <errno.h>
    5353#include <str.h>
     54#include <abi/klog.h>
    5455
    5556#define KLOG_PAGES    8
     
    335336 *
    336337 */
    337 sysarg_t sys_klog(int fd, const void *buf, size_t size)
     338sysarg_t sys_klog(int cmd, const void *buf, size_t size)
    338339{
    339340        char *data;
    340341        int rc;
    341        
     342
     343        switch (cmd) {
     344        case KLOG_UPDATE:
     345                klog_update(NULL);
     346                return EOK;
     347        case KLOG_WRITE:
     348        case KLOG_COMMAND:
     349                break;
     350        default:
     351                return ENOTSUP;
     352        }
     353
    342354        if (size > PAGE_SIZE)
    343355                return (sysarg_t) ELIMIT;
     
    355367                data[size] = 0;
    356368               
    357                 printf("%s", data);
     369                switch (cmd) {
     370                case KLOG_WRITE:
     371                        printf("%s", data);
     372                        break;
     373                case KLOG_COMMAND:
     374                        if (!stdin)
     375                                break;
     376                        for (unsigned int i = 0; i < size; i++)
     377                                indev_push_character(stdin, data[i]);
     378                        indev_push_character(stdin, '\n');
     379                        break;
     380                }
     381
    358382                free(data);
    359         } else
    360                 klog_update(NULL);
    361        
     383        }
     384
    362385        return size;
    363386}
Note: See TracChangeset for help on using the changeset viewer.