Changeset 297cb73 in mainline


Ignore:
Timestamp:
2012-11-23T23:06:00Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4a5ba372
Parents:
ec85df0
Message:

Rudimentary support for passing commands to kconsole from klog.

Files:
3 edited

Legend:

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

    rec85df0 r297cb73  
    367367                data[size] = 0;
    368368               
    369                 printf("%s", data);
     369                switch (cmd) {
     370                case KLOG_WRITE:
     371                        printf("%s", data);
     372                        break;
     373                case KLOG_COMMAND:
     374                        for (unsigned int i = 0; i < size; i++)
     375                                indev_push_character(stdin, data[i]);
     376                        indev_push_character(stdin, '\n');
     377                        break;
     378                }
     379
    370380                free(data);
    371         } else
    372                 klog_update(NULL);
    373        
     381        }
     382
    374383        return size;
    375384}
  • uspace/app/klog/Makefile

    rec85df0 r297cb73  
    2929
    3030USPACE_PREFIX = ../..
     31LIBS = $(LIBCLUI_PREFIX)/libclui.a
     32EXTRA_CFLAGS = -I$(LIBCLUI_PREFIX)
    3133BINARY = klog
    3234
  • uspace/app/klog/klog.c

    rec85df0 r297cb73  
    4848#include <adt/list.h>
    4949#include <adt/prodcons.h>
     50#include <tinput.h>
    5051
    5152#define NAME       "klog"
     
    228229        }
    229230       
     231        tinput_t *input = tinput_new();
     232        if (!input) {
     233                fprintf(stderr, "%s: Could not create input\n", NAME);
     234                return ENOMEM;
     235        }       
     236
    230237        fibril_add_ready(fid);
    231238        event_unmask(EVENT_KLOG);
    232239        klog_update();
    233240       
    234         task_retval(0);
    235         async_manager();
    236        
    237         return 0;
     241        tinput_set_prompt(input, "klog> ");
     242
     243        char *str;
     244        while ((rc = tinput_read(input, &str)) == EOK) {
     245                if (str_cmp(str, "") == 0) {
     246                        free(str);
     247                        continue;
     248                }
     249
     250                klog_command(str, str_size(str));
     251                free(str);
     252        }
     253 
     254        if (rc == ENOENT)
     255                rc = EOK;       
     256
     257        return EOK;
    238258}
    239259
Note: See TracChangeset for help on using the changeset viewer.