}
static
-char *format_flags(char *buf, char *end, unsigned long flags,
+char *format_flags(struct printf_state *ps, unsigned long flags,
const struct trace_print_flags *names)
{
unsigned long mask;
+ ps->spec = default_str_spec;
for ( ; flags && names->name; names++) {
mask = names->mask;
if ((flags & mask) != mask)
continue;
- buf = string(buf, end, names->name, default_str_spec);
+ printf_string(ps, names->name);
flags &= ~mask;
if (flags) {
- if (buf < end)
- *buf = '|';
- buf++;
+ if (ps->buf < ps->end)
+ *ps->buf = '|';
+ ps->buf++;
}
}
- if (flags)
- buf = number(buf, end, flags, default_flag_spec);
+ if (flags) {
+ ps->spec = default_flag_spec;
+ printf_number(ps, flags);
+ }
- return buf;
+ return ps->buf;
}
static noinline_for_stack
-char *flags_string(char *buf, char *end, void *flags_ptr, const char *fmt)
+char *flags_string(struct printf_state *ps, void *flags_ptr)
{
unsigned long flags;
const struct trace_print_flags *names;
- switch (fmt[1]) {
+ switch (ps->fmt[1]) {
case 'p':
flags = *(unsigned long *)flags_ptr;
/* Remove zone id */
names = gfpflag_names;
break;
default:
- WARN_ONCE(1, "Unsupported flags modifier: %c\n", fmt[1]);
- return buf;
+ WARN_ONCE(1, "Unsupported flags modifier: %c\n", ps->fmt[1]);
+ return ps->buf;
}
- return format_flags(buf, end, flags, names);
+ return format_flags(ps, flags, names);
}
static const char *device_node_name_for_depth(const struct device_node *np, int depth)
#endif
case 'G':
- return flags_string(buf, end, ptr, fmt);
+ return flags_string(ps, ptr);
case 'O':
switch (fmt[1]) {
case 'F':