mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 04:23:35 +02:00
tools/power turbostat: Fix delimiter bug in print functions
Commands that add counters, such as 'turbostat --show C1,C1+'
display merged columns without a delimiter.
This is caused by the bad syntax: '(*printed++ ? delim : "")', shared by
print_name()/print_hex_value()/print_decimal_value()/print_float_value()
Use '((*printed)++ ? delim : "")' to correctly increment the value at *printed.
[lenb: fix code and commit message typo, re-word]
Fixes: 56dbb87850 ("tools/power turbostat: Refactor added column header printing")
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
b6398bc2ef
commit
cdbefe9d40
|
|
@ -2837,29 +2837,29 @@ static inline int print_name(int width, int *printed, char *delim, char *name, e
|
|||
UNUSED(type);
|
||||
|
||||
if (format == FORMAT_RAW && width >= 64)
|
||||
return (sprintf(outp, "%s%-8s", (*printed++ ? delim : ""), name));
|
||||
return (sprintf(outp, "%s%-8s", ((*printed)++ ? delim : ""), name));
|
||||
else
|
||||
return (sprintf(outp, "%s%s", (*printed++ ? delim : ""), name));
|
||||
return (sprintf(outp, "%s%s", ((*printed)++ ? delim : ""), name));
|
||||
}
|
||||
|
||||
static inline int print_hex_value(int width, int *printed, char *delim, unsigned long long value)
|
||||
{
|
||||
if (width <= 32)
|
||||
return (sprintf(outp, "%s%08x", (*printed++ ? delim : ""), (unsigned int)value));
|
||||
return (sprintf(outp, "%s%08x", ((*printed)++ ? delim : ""), (unsigned int)value));
|
||||
else
|
||||
return (sprintf(outp, "%s%016llx", (*printed++ ? delim : ""), value));
|
||||
return (sprintf(outp, "%s%016llx", ((*printed)++ ? delim : ""), value));
|
||||
}
|
||||
|
||||
static inline int print_decimal_value(int width, int *printed, char *delim, unsigned long long value)
|
||||
{
|
||||
UNUSED(width);
|
||||
|
||||
return (sprintf(outp, "%s%lld", (*printed++ ? delim : ""), value));
|
||||
return (sprintf(outp, "%s%lld", ((*printed)++ ? delim : ""), value));
|
||||
}
|
||||
|
||||
static inline int print_float_value(int *printed, char *delim, double value)
|
||||
{
|
||||
return (sprintf(outp, "%s%0.2f", (*printed++ ? delim : ""), value));
|
||||
return (sprintf(outp, "%s%0.2f", ((*printed)++ ? delim : ""), value));
|
||||
}
|
||||
|
||||
void print_header(char *delim)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user