Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 0fa34dd in mainline


Ignore:
Timestamp:
2012-12-02T16:36:29Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
1152705
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.
Files:
3 deleted
11 edited
1 moved

Legend:

Unmodified
Added
Removed
  • abi/include/klog.h

    r3e6a98c5 r0fa34dd  
    11/*
    2  * Copyright (c) 2006 Ondrej Palkovsky
     2 * Copyright (c) 2012 Jakub Jermar
    33 * All rights reserved.
    44 *
     
    2727 */
    2828
    29 /** @addtogroup amd64debug
     29/** @addtogroup generic
    3030 * @{
    3131 */
     
    3333 */
    3434
    35 #ifndef KERN_amd64_DEBUGGER_H_
    36 #define KERN_amd64_DEBUGGER_H_
     35#ifndef ABI_KLOG_H_
     36#define ABI_KLOG_H_
    3737
    38 #include <typedefs.h>
    39 
    40 #define BKPOINTS_MAX  4
    41 
    42 /* Flags that are passed to breakpoint_add function */
    43 #define BKPOINT_INSTR       0x1U
    44 #define BKPOINT_WRITE       0x2U
    45 #define BKPOINT_READ_WRITE  0x4U
    46 
    47 #define BKPOINT_CHECK_ZERO  0x8U
    48 
    49 
    50 extern void debugger_init(void);
    51 extern int breakpoint_add(const void *, const unsigned int, int);
    52 extern void breakpoint_del(int);
     38enum {
     39        KLOG_UNKNOW,
     40        KLOG_WRITE,
     41        KLOG_UPDATE,
     42        KLOG_COMMAND
     43};
    5344
    5445#endif
  • kernel/arch/amd64/Makefile.inc

    r3e6a98c5 r0fa34dd  
    7676        arch/$(KARCH)/src/proc/thread.c \
    7777        arch/$(KARCH)/src/userspace.c \
    78         arch/$(KARCH)/src/syscall.c \
    79         arch/$(KARCH)/src/debugger.c
     78        arch/$(KARCH)/src/syscall.c
    8079
    8180ifeq ($(CONFIG_SMP),y)
  • kernel/arch/amd64/src/amd64.c

    r3e6a98c5 r0fa34dd  
    4343#include <arch/bios/bios.h>
    4444#include <arch/boot/boot.h>
    45 #include <arch/debugger.h>
    4645#include <arch/drivers/i8254.h>
    4746#include <arch/drivers/i8259.h>
     
    161160#endif
    162161               
    163                 /* Enable debugger */
    164                 debugger_init();
    165162                /* Merge all memory zones to 1 big zone */
    166163                zone_merge_all();
  • kernel/arch/ia32/Makefile.inc

    r3e6a98c5 r0fa34dd  
    105105        arch/$(KARCH)/src/boot/memmap.c \
    106106        arch/$(KARCH)/src/fpu_context.c \
    107         arch/$(KARCH)/src/debugger.c \
    108107        arch/$(KARCH)/src/syscall.c
  • kernel/arch/ia32/src/ia32.c

    r3e6a98c5 r0fa34dd  
    4545#include <arch/bios/bios.h>
    4646#include <arch/boot/boot.h>
    47 #include <arch/debugger.h>
    4847#include <arch/drivers/i8254.h>
    4948#include <arch/drivers/i8259.h>
     
    118117#endif
    119118               
    120                 /* Enable debugger */
    121                 debugger_init();
    122119                /* Merge all memory zones to 1 big zone */
    123120                zone_merge_all();
  • kernel/generic/include/console/console.h

    r3e6a98c5 r0fa34dd  
    6767extern wchar_t getc(indev_t *indev);
    6868extern size_t gets(indev_t *indev, char *buf, size_t buflen);
    69 extern sysarg_t sys_klog(int fd, const void *buf, size_t size);
     69extern sysarg_t sys_klog(int cmd, const void *buf, size_t size);
    7070
    7171extern void grab_console(void);
  • 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}
  • uspace/app/klog/Makefile

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

    r3e6a98c5 r0fa34dd  
    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
  • uspace/lib/c/generic/io/klog.c

    r3e6a98c5 r0fa34dd  
    3939#include <unistd.h>
    4040#include <errno.h>
     41#include <abi/klog.h>
    4142#include <io/klog.h>
    4243#include <io/printf_core.h>
     
    4445size_t klog_write(const void *buf, size_t size)
    4546{
    46         ssize_t ret = (ssize_t) __SYSCALL3(SYS_KLOG, 1, (sysarg_t) buf, size);
     47        ssize_t ret = (ssize_t) __SYSCALL3(SYS_KLOG, KLOG_WRITE, (sysarg_t) buf, size);
    4748       
    4849        if (ret >= 0)
     
    5455void klog_update(void)
    5556{
    56         (void) __SYSCALL3(SYS_KLOG, 1, (uintptr_t) NULL, 0);
     57        (void) __SYSCALL3(SYS_KLOG, KLOG_UPDATE, (uintptr_t) NULL, 0);
     58}
     59
     60void klog_command(const void *buf, size_t size)
     61{
     62        (void) __SYSCALL3(SYS_KLOG, KLOG_COMMAND, (sysarg_t) buf, (sysarg_t) size);
    5763}
    5864
  • uspace/lib/c/include/io/klog.h

    r3e6a98c5 r0fa34dd  
    4242extern size_t klog_write(const void *, size_t);
    4343extern void klog_update(void);
     44extern void klog_command(const void *, size_t);
    4445extern int klog_printf(const char *, ...)
    4546    PRINTF_ATTRIBUTE(1, 2);
  • uspace/lib/c/include/stdio.h

    r3e6a98c5 r0fa34dd  
    4040#include <str.h>
    4141#include <io/verify.h>
     42#include <abi/klog.h>
    4243
    4344#define EOF  (-1)
     
    5152                int _n = snprintf(_buf, sizeof(_buf), fmt, ##__VA_ARGS__); \
    5253                if (_n > 0) \
    53                         (void) __SYSCALL3(SYS_KLOG, 1, (sysarg_t) _buf, str_size(_buf)); \
     54                        (void) __SYSCALL3(SYS_KLOG, KLOG_WRITE, (sysarg_t) _buf, str_size(_buf)); \
    5455        }
    5556
Note: See TracChangeset for help on using the changeset viewer.