Changeset 0fa34dd in mainline for kernel/generic/src/console/console.c


Ignore:
Timestamp:
2012-12-02T16:36:29Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
11527051
Parents:
3e6a98c5 (diff), 4a5ba372 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge non contentious changesets from lp:~jakub/helenos/klog.

  • Removal of the amd64 and ia32 kernel debugger.
  • Allow klog to feed kconsole commands to kernel's stdin.
File:
1 edited

Legend:

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

    r3e6a98c5 r0fa34dd  
    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                        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
    358380                free(data);
    359         } else
    360                 klog_update(NULL);
    361        
     381        }
     382
    362383        return size;
    363384}
Note: See TracChangeset for help on using the changeset viewer.