Changes in kernel/generic/src/printf/vprintf.c [163e34c:28a5ebd] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/printf/vprintf.c
r163e34c r28a5ebd 33 33 */ 34 34 35 #include <print.h> 36 #include <printf/printf_core.h> 37 #include <putchar.h> 38 #include <synch/spinlock.h> 35 39 #include <arch/asm.h> 36 #include <console/console.h> 37 #include <print.h> 38 #include <printf_core.h> 39 #include <putchar.h> 40 #include <typedefs.h> 40 41 #include <str.h> 41 #include <synch/spinlock.h>42 #include <typedefs.h>43 42 44 static errno_t vprintf_str_write(const char *str, size_t size, void *data)43 static int vprintf_str_write(const char *str, size_t size, void *data) 45 44 { 46 45 size_t offset = 0; 46 size_t chars = 0; 47 47 48 while (offset < size) 48 while (offset < size) { 49 49 putuchar(str_decode(str, &offset, size)); 50 chars++; 51 } 50 52 51 return EOK; 53 return chars; 54 } 55 56 static int vprintf_wstr_write(const char32_t *str, size_t size, void *data) 57 { 58 size_t offset = 0; 59 size_t chars = 0; 60 61 while (offset < size) { 62 putuchar(str[chars]); 63 chars++; 64 offset += sizeof(char32_t); 65 } 66 67 return chars; 52 68 } 53 69 … … 58 74 char32_t uc; 59 75 60 console_lock();61 62 76 while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) { 63 77 putuchar(uc); … … 66 80 67 81 putuchar('\n'); 68 69 console_unlock();70 82 return chars; 71 83 } … … 75 87 printf_spec_t ps = { 76 88 vprintf_str_write, 89 vprintf_wstr_write, 77 90 NULL 78 91 }; 79 92 80 console_lock(); 81 int ret = printf_core(fmt, &ps, ap); 82 console_unlock(); 83 return ret; 93 return printf_core(fmt, &ps, ap); 84 94 } 85 95
Note:
See TracChangeset
for help on using the changeset viewer.