Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/io/klog.c

    r91db0280 rec85df0  
    11/*
    2  * Copyright (c) 2013 Martin Sucha
     2 * Copyright (c) 2006 Josef Cejka
     3 * Copyright (c) 2006 Jakub Vana
    34 * All rights reserved.
    45 *
     
    4041#include <abi/klog.h>
    4142#include <io/klog.h>
    42 #include <abi/log.h>
     43#include <io/printf_core.h>
    4344
    44 size_t klog_write(log_level_t lvl, const void *buf, size_t size)
     45size_t klog_write(const void *buf, size_t size)
    4546{
    46         ssize_t ret = (ssize_t) __SYSCALL4(SYS_KLOG, KLOG_WRITE, (sysarg_t) buf,
    47             size, lvl);
     47        ssize_t ret = (ssize_t) __SYSCALL3(SYS_KLOG, KLOG_WRITE, (sysarg_t) buf, size);
    4848       
    4949        if (ret >= 0)
     
    5353}
    5454
    55 int klog_read(void *data, size_t size)
     55void klog_update(void)
    5656{
    57         return (int) __SYSCALL4(SYS_KLOG, KLOG_READ, (uintptr_t) data, size, 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);
     63}
     64
     65/** Print formatted text to klog.
     66 *
     67 * @param fmt Format string
     68 *
     69 * \see For more details about format string see printf_core.
     70 *
     71 */
     72int klog_printf(const char *fmt, ...)
     73{
     74        va_list args;
     75        va_start(args, fmt);
     76       
     77        int ret = klog_vprintf(fmt, args);
     78       
     79        va_end(args);
     80       
     81        return ret;
     82}
     83
     84static int klog_vprintf_str_write(const char *str, size_t size, void *data)
     85{
     86        size_t wr = klog_write(str, size);
     87        return str_nlength(str, wr);
     88}
     89
     90static int klog_vprintf_wstr_write(const wchar_t *str, size_t size, void *data)
     91{
     92        size_t offset = 0;
     93        size_t chars = 0;
     94       
     95        while (offset < size) {
     96                char buf[STR_BOUNDS(1)];
     97                size_t sz = 0;
     98               
     99                if (chr_encode(str[chars], buf, &sz, STR_BOUNDS(1)) == EOK)
     100                        klog_write(buf, sz);
     101               
     102                chars++;
     103                offset += sizeof(wchar_t);
     104        }
     105       
     106        return chars;
     107}
     108
     109/** Print formatted text to klog.
     110 *
     111 * @param fmt Format string
     112 * @param ap  Format parameters
     113 *
     114 * \see For more details about format string see printf_core.
     115 *
     116 */
     117int klog_vprintf(const char *fmt, va_list ap)
     118{
     119        printf_spec_t ps = {
     120                klog_vprintf_str_write,
     121                klog_vprintf_wstr_write,
     122                NULL
     123        };
     124       
     125        return printf_core(fmt, &ps, ap);
    58126}
    59127
Note: See TracChangeset for help on using the changeset viewer.