summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2015-10-21 08:42:01 -0400
committerAnas Nashif <anas.nashif@intel.com>2016-02-05 20:24:36 -0500
commit1e03a8efc98a5704227bff4cec8e3cba9b4fd06b (patch)
treefe56fc6fc039048778ee1f44bdd3b733bf7d554f /misc
parenta1d47ba5399b4035aa247de5c05b03b943e4f6ef (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.c91
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;