Changeset fd07e57b in mainline for uspace/lib/c/generic/io/klog.c
- Timestamp:
- 2014-01-05T21:25:41Z (11 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4aa2a27
- Parents:
- aacdb8e (diff), ca05e9b (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/io/klog.c
raacdb8e rfd07e57b 1 1 /* 2 * Copyright (c) 2006 Josef Cejka 3 * Copyright (c) 2006 Jakub Vana 2 * Copyright (c) 2013 Martin Sucha 4 3 * All rights reserved. 5 4 * … … 41 40 #include <abi/klog.h> 42 41 #include <io/klog.h> 43 #include < io/printf_core.h>42 #include <abi/log.h> 44 43 45 size_t klog_write( const void *buf, size_t size)44 size_t klog_write(log_level_t lvl, const void *buf, size_t size) 46 45 { 47 ssize_t ret = (ssize_t) __SYSCALL3(SYS_KLOG, KLOG_WRITE, (sysarg_t) buf, size); 46 ssize_t ret = (ssize_t) __SYSCALL4(SYS_KLOG, KLOG_WRITE, (sysarg_t) buf, 47 size, lvl); 48 48 49 49 if (ret >= 0) … … 53 53 } 54 54 55 void klog_update(void)55 int klog_read(void *data, size_t size) 56 56 { 57 (void) __SYSCALL3(SYS_KLOG, KLOG_UPDATE, (uintptr_t) NULL, 0); 58 } 59 60 void 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 */ 72 int 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 84 static 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 90 static 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 */ 117 int 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); 57 return (int) __SYSCALL4(SYS_KLOG, KLOG_READ, (uintptr_t) data, size, 0); 126 58 } 127 59
Note:
See TracChangeset
for help on using the changeset viewer.