diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2015-10-21 08:42:01 -0400 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2016-02-05 20:24:36 -0500 |
commit | 1e03a8efc98a5704227bff4cec8e3cba9b4fd06b (patch) | |
tree | fe56fc6fc039048778ee1f44bdd3b733bf7d554f /misc | |
parent | a1d47ba5399b4035aa247de5c05b03b943e4f6ef (diff) |
printk: Standardize support for %%
Tweaks printk() internals to avoid unnecessary special case handling
of %% formatting.
Change-Id: I816b04b458f416a45fd06b5a7b3bebf27453c722
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Diffstat (limited to 'misc')
-rw-r--r-- | misc/printk.c | 91 |
1 files changed, 46 insertions, 45 deletions
diff --git a/misc/printk.c b/misc/printk.c index 050b7ca54..4b681939c 100644 --- a/misc/printk.c +++ b/misc/printk.c @@ -84,54 +84,55 @@ static inline void _vprintk(const char *fmt, va_list ap) might_format = 1; } } else { - if (*fmt == '%') { - _char_out((int)'%'); - might_format = 0; - } else { - switch (*fmt) { - case 'd': - case 'i': { - long d = va_arg(ap, long); - if (d < 0) { - _char_out((int)'-'); - d = -d; - } - _printk_dec_ulong(d); - break; - } - case 'u': { - unsigned long u = va_arg( - ap, unsigned long); - _printk_dec_ulong(u); - break; - } - case 'x': - case 'X': - case 'p': { - unsigned long x = va_arg( - ap, unsigned long); - _printk_hex_ulong(x); - break; - } - case 's': { - char *s = va_arg(ap, char *); - while (*s) - _char_out((int)(*s++)); - break; + switch (*fmt) { + case 'd': + case 'i': { + long d = va_arg(ap, long); + + if (d < 0) { + _char_out((int)'-'); + d = -d; } - case 'c': { - int c = va_arg(ap, int); + _printk_dec_ulong(d); + break; + } + case 'u': { + unsigned long u = va_arg( + ap, unsigned long); + _printk_dec_ulong(u); + break; + } + case 'x': + case 'X': + case 'p': { + unsigned long x = va_arg( + ap, unsigned long); + _printk_hex_ulong(x); + break; + } + case 's': { + char *s = va_arg(ap, char *); - _char_out(c); - break; - } - default: - _char_out((int)'%'); - _char_out((int)*fmt); - break; - } - might_format = 0; + while (*s) + _char_out((int)(*s++)); + break; + } + case 'c': { + int c = va_arg(ap, int); + + _char_out(c); + break; + } + case '%': { + _char_out((int)'%'); + break; + } + default: + _char_out((int)'%'); + _char_out((int)*fmt); + break; } + might_format = 0; } ++fmt; |