Changeset 043eca0 in mainline for kernel/generic/src/printf/vprintf.c
- Timestamp:
- 2009-04-03T07:54:27Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
- Children:
- d1dabe1f
- Parents:
- b888d5f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/printf/vprintf.c
rb888d5f r043eca0 44 44 SPINLOCK_INITIALIZE(printf_lock); /**< vprintf spinlock */ 45 45 46 static int vprintf_ write_utf8(const char *str, size_t size, void *data)46 static int vprintf_str_write(const char *str, size_t size, void *data) 47 47 { 48 48 size_t offset = 0; 49 49 count_t chars = 0; 50 50 51 51 while (offset < size) { 52 putchar( chr_decode(str, &offset, size));52 putchar(str_decode(str, &offset, size)); 53 53 chars++; 54 54 } 55 55 56 56 return chars; 57 57 } 58 58 59 static int vprintf_w rite_utf32(const wchar_t *str, size_t size, void *data)59 static int vprintf_wstr_write(const wchar_t *str, size_t size, void *data) 60 60 { 61 index_t index = 0; 62 63 while (index < (size / sizeof(wchar_t))) { 64 putchar(str[index]); 65 index++; 61 size_t offset = 0; 62 count_t chars = 0; 63 64 while (offset < size) { 65 putchar(str[chars]); 66 chars++; 67 offset += sizeof(wchar_t); 66 68 } 67 68 return index;69 70 return chars; 69 71 } 70 72 … … 74 76 count_t chars = 0; 75 77 wchar_t uc; 76 77 while ((uc = chr_decode(str, &offset, UTF8_NO_LIMIT)) != 0) {78 79 while ((uc = str_decode(str, &offset, STR_NO_LIMIT)) != 0) { 78 80 putchar(uc); 79 81 chars++; 80 82 } 81 83 82 84 return chars; 83 85 } … … 86 88 { 87 89 printf_spec_t ps = { 88 vprintf_ write_utf8,89 vprintf_w rite_utf32,90 vprintf_str_write, 91 vprintf_wstr_write, 90 92 NULL 91 93 }; 92 94 93 95 ipl_t ipl = interrupts_disable(); 94 96 spinlock_lock(&printf_lock); 95 97 96 98 int ret = printf_core(fmt, &ps, ap); 97 99 98 100 spinlock_unlock(&printf_lock); 99 101 interrupts_restore(ipl); 100 102 101 103 return ret; 102 104 }
Note:
See TracChangeset
for help on using the changeset viewer.