Changeset 1c03c17 in mainline


Ignore:
Timestamp:
2008-06-06T23:16:37Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c05a50f
Parents:
b7b6753
Message:

uspace klog

Location:
uspace
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/init/init.c

    rb7b6753 r1c03c17  
    131131        spawn("/sbin/tetris");
    132132        // FIXME: spawn("/sbin/tester");
    133         // FIXME: spawn("/sbin/klog");
     133        spawn("/sbin/klog");
    134134       
    135135        free(buf);
  • uspace/app/klog/klog.c

    rb7b6753 r1c03c17  
    4141#include <as.h>
    4242#include <sysinfo.h>
     43#include <io/stream.h>
     44#include <errno.h>
     45
     46#define NAME "klog"
     47
     48#define KLOG_SIZE PAGE_SIZE
    4349
    4450/* Pointer to klog area */
     
    4753static void interrupt_received(ipc_callid_t callid, ipc_call_t *call)
    4854{
    49         int i;
     55        async_serialize_start();
    5056       
    51         async_serialize_start();
    52         for (i=0; klog[i + IPC_GET_ARG1(*call)] && i < IPC_GET_ARG2(*call); i++)
    53                 putchar(klog[i + IPC_GET_ARG1(*call)]);
    54         putchar('\n');
     57        size_t klog_start = (size_t) IPC_GET_ARG1(*call);
     58        size_t klog_len = (size_t) IPC_GET_ARG2(*call);
     59        size_t klog_stored = (size_t) IPC_GET_ARG3(*call);
     60        size_t i;
     61        for (i = klog_len - klog_stored; i < klog_len; i++)
     62                putchar(klog[(klog_start + i) % KLOG_SIZE]);
     63       
    5564        async_serialize_end();
    5665}
     
    5867int main(int argc, char *argv[])
    5968{
    60         int res;
    61         void *mapping;
    62 
    63         printf("Kernel console output.\n");
     69        klog = (char *) as_get_mappable_page(KLOG_SIZE);
     70        if (klog == NULL) {
     71                printf(NAME ": Error allocating memory area\n");
     72                return -1;
     73        }
    6474       
    65         mapping = as_get_mappable_page(PAGE_SIZE);
    66         res = ipc_share_in_start_1_0(PHONE_NS, mapping, PAGE_SIZE,
     75        int res = ipc_share_in_start_1_0(PHONE_NS, (void *) klog, KLOG_SIZE,
    6776            SERVICE_MEM_KLOG);
    68         if (res) {
    69                 printf("Failed to initialize klog memarea\n");
    70                 _exit(1);
     77        if (res != EOK) {
     78                printf(NAME ": Error initializing memory area\n");
     79                return -1;
    7180        }
    72         klog = mapping;
    7381
    7482        int inr = sysinfo_value("klog.inr");
    7583        int devno = sysinfo_value("klog.devno");
    76         if (ipc_register_irq(inr, devno, 0, NULL)) {
    77                 printf("Error registering for klog service.\n");
    78                 return 0;
     84        if (ipc_register_irq(inr, devno, 0, NULL) != EOK) {
     85                printf(NAME ": Error registering klog notifications\n");
     86                return -1;
    7987        }
    80 
     88       
    8189        async_set_interrupt_received(interrupt_received);
    82 
     90        klog_update();
    8391        async_manager();
    8492
  • uspace/lib/libc/generic/io/stream.c

    rb7b6753 r1c03c17  
    8383                return count;
    8484        } else
    85                 return __SYSCALL3(SYS_IO, 1, (sysarg_t) buf, count);
     85                return __SYSCALL3(SYS_KLOG, 1, (sysarg_t) buf, count);
    8686}
    8787
     
    9595}
    9696
     97void klog_update(void)
     98{
     99        (void) __SYSCALL3(SYS_KLOG, 1, NULL, 0);
     100}
     101
    97102int get_cons_phone(void)
    98103{
  • uspace/lib/libc/include/io/stream.h

    rb7b6753 r1c03c17  
    4141
    4242extern void open_console(void);
     43extern void klog_update(void);
    4344
    4445extern ssize_t read_stdin(void *, size_t);
  • uspace/lib/libc/include/stdio.h

    rb7b6753 r1c03c17  
    5050        n = snprintf(buf, sizeof(buf), fmt, ##__VA_ARGS__); \
    5151        if (n > 0) \
    52                 (void) __SYSCALL3(SYS_IO, 1, (sysarg_t) buf, strlen(buf)); \
     52                (void) __SYSCALL3(SYS_KLOG, 1, (sysarg_t) buf, strlen(buf)); \
    5353}
    5454
Note: See TracChangeset for help on using the changeset viewer.