[PATCH 2/5] perf hists: Handle field separator properly
From: Namhyung Kim When a field separator is given, the output format doesn't need to be fancy like aligning to column length, coloring the percent value and so on. And since there's a slight difference to normal format, fix it not to break backward compatibility. Signed-off-by: Namhyung Kim --- tools/perf/ui/hist.c | 75 ++ tools/perf/ui/stdio/hist.c | 3 +- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c index c9a566cfd9c2..802a8659c15a 100644 --- a/tools/perf/ui/hist.c +++ b/tools/perf/ui/hist.c @@ -8,10 +8,9 @@ /* hist period print (hpp) functions */ static int hpp__header_overhead(struct perf_hpp *hpp) { - if (hpp->ptr) - return scnprintf(hpp->buf, hpp->size, "Baseline"); - else - return scnprintf(hpp->buf, hpp->size, "Overhead"); + const char *fmt = hpp->ptr ? "Baseline" : "Overhead"; + + return scnprintf(hpp->buf, hpp->size, fmt); } static int hpp__width_overhead(struct perf_hpp *hpp __used) @@ -28,12 +27,16 @@ static int hpp__color_overhead(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, " %5.2f%%", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : " %5.2f%%"; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_sys(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " sys "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%6s"; + + return scnprintf(hpp->buf, hpp->size, fmt, "sys"); } static int hpp__width_overhead_sys(struct perf_hpp *hpp __used) @@ -50,12 +53,16 @@ static int hpp__color_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_sys / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, "%5.2f%%", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : "%5.2f%%"; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_us(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " user "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%6s"; + + return scnprintf(hpp->buf, hpp->size, fmt, "user"); } static int hpp__width_overhead_us(struct perf_hpp *hpp __used) @@ -72,7 +79,9 @@ static int hpp__color_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_us / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, "%5.2f%%", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : "%5.2f%%"; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_guest_sys(struct perf_hpp *hpp) @@ -96,7 +105,9 @@ static int hpp__entry_overhead_guest_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_guest_sys / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, " %5.2f%% ", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : " %5.2f%% "; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_guest_us(struct perf_hpp *hpp) @@ -120,12 +131,16 @@ static int hpp__entry_overhead_guest_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_guest_us / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, " %5.2f%% ", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : " %5.2f%% "; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_samples(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " Samples "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%11s"; + + return scnprintf(hpp->buf, hpp->size, fmt, "Samples"); } static int hpp__width_samples(struct perf_hpp *hpp __used) @@ -135,12 +150,16 @@ static int hpp__width_samples(struct perf_hpp *hpp __used) static int hpp__entry_samples(struct perf_hpp *hpp, struct hist_entry *he) { - return scnprintf(hpp->buf, hpp->size, "%11" PRIu64, he->nr_events); + const char *fmt = symbol_conf.field_sep ? "%" PRIu64 : "%11" PRIu64; + + return scnprintf(hpp->buf, hpp->size, fmt, he->nr_events); } static int hpp__header_period(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " Period "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%12s"; + + return
[PATCH 2/5] perf hists: Handle field separator properly
From: Namhyung Kim namhyung@lge.com When a field separator is given, the output format doesn't need to be fancy like aligning to column length, coloring the percent value and so on. And since there's a slight difference to normal format, fix it not to break backward compatibility. Signed-off-by: Namhyung Kim namhy...@kernel.org --- tools/perf/ui/hist.c | 75 ++ tools/perf/ui/stdio/hist.c | 3 +- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c index c9a566cfd9c2..802a8659c15a 100644 --- a/tools/perf/ui/hist.c +++ b/tools/perf/ui/hist.c @@ -8,10 +8,9 @@ /* hist period print (hpp) functions */ static int hpp__header_overhead(struct perf_hpp *hpp) { - if (hpp-ptr) - return scnprintf(hpp-buf, hpp-size, Baseline); - else - return scnprintf(hpp-buf, hpp-size, Overhead); + const char *fmt = hpp-ptr ? Baseline : Overhead; + + return scnprintf(hpp-buf, hpp-size, fmt); } static int hpp__width_overhead(struct perf_hpp *hpp __used) @@ -28,12 +27,16 @@ static int hpp__color_overhead(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%%, percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%%; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_sys(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size, sys ); + const char *fmt = symbol_conf.field_sep ? %s : %6s; + + return scnprintf(hpp-buf, hpp-size, fmt, sys); } static int hpp__width_overhead_sys(struct perf_hpp *hpp __used) @@ -50,12 +53,16 @@ static int hpp__color_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_sys / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%%, percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%%; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_us(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size, user ); + const char *fmt = symbol_conf.field_sep ? %s : %6s; + + return scnprintf(hpp-buf, hpp-size, fmt, user); } static int hpp__width_overhead_us(struct perf_hpp *hpp __used) @@ -72,7 +79,9 @@ static int hpp__color_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_us / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%%, percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%%; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_guest_sys(struct perf_hpp *hpp) @@ -96,7 +105,9 @@ static int hpp__entry_overhead_guest_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_guest_sys / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%% , percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%% ; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_guest_us(struct perf_hpp *hpp) @@ -120,12 +131,16 @@ static int hpp__entry_overhead_guest_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_guest_us / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%% , percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%% ; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_samples(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size, Samples ); + const char *fmt = symbol_conf.field_sep ? %s : %11s; + + return scnprintf(hpp-buf, hpp-size, fmt, Samples); } static int hpp__width_samples(struct perf_hpp *hpp __used) @@ -135,12 +150,16 @@ static int hpp__width_samples(struct perf_hpp *hpp __used) static int hpp__entry_samples(struct perf_hpp *hpp, struct hist_entry *he) { - return scnprintf(hpp-buf, hpp-size, %11 PRIu64, he-nr_events); + const char *fmt = symbol_conf.field_sep ? % PRIu64 : %11 PRIu64; + + return scnprintf(hpp-buf, hpp-size, fmt, he-nr_events); } static int hpp__header_period(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size,Period ); + const char *fmt = symbol_conf.field_sep ? %s : %12s; + + return scnprintf(hpp-buf, hpp-size, fmt, Period); } static int hpp__width_period(struct perf_hpp *hpp __used)
[PATCH 2/5] perf hists: Handle field separator properly
From: Namhyung Kim When a field separator is given, the output format doesn't need to be fancy like aligning to column length, coloring the percent value and so on. And since there's a slight difference to normal format, fix it not to break backward compatibility. Signed-off-by: Namhyung Kim --- tools/perf/ui/hist.c | 75 ++ tools/perf/ui/stdio/hist.c | 3 +- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c index c9a566cfd9c2..802a8659c15a 100644 --- a/tools/perf/ui/hist.c +++ b/tools/perf/ui/hist.c @@ -8,10 +8,9 @@ /* hist period print (hpp) functions */ static int hpp__header_overhead(struct perf_hpp *hpp) { - if (hpp->ptr) - return scnprintf(hpp->buf, hpp->size, "Baseline"); - else - return scnprintf(hpp->buf, hpp->size, "Overhead"); + const char *fmt = hpp->ptr ? "Baseline" : "Overhead"; + + return scnprintf(hpp->buf, hpp->size, fmt); } static int hpp__width_overhead(struct perf_hpp *hpp __used) @@ -28,12 +27,16 @@ static int hpp__color_overhead(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, " %5.2f%%", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : " %5.2f%%"; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_sys(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " sys "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%6s"; + + return scnprintf(hpp->buf, hpp->size, fmt, "sys"); } static int hpp__width_overhead_sys(struct perf_hpp *hpp __used) @@ -50,12 +53,16 @@ static int hpp__color_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_sys / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, "%5.2f%%", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : "%5.2f%%"; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_us(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " user "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%6s"; + + return scnprintf(hpp->buf, hpp->size, fmt, "user"); } static int hpp__width_overhead_us(struct perf_hpp *hpp __used) @@ -72,7 +79,9 @@ static int hpp__color_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_us / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, "%5.2f%%", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : "%5.2f%%"; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_guest_sys(struct perf_hpp *hpp) @@ -96,7 +105,9 @@ static int hpp__entry_overhead_guest_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_guest_sys / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, " %5.2f%% ", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : " %5.2f%% "; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_overhead_guest_us(struct perf_hpp *hpp) @@ -120,12 +131,16 @@ static int hpp__entry_overhead_guest_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he->period_guest_us / hpp->total_period; - return scnprintf(hpp->buf, hpp->size, " %5.2f%% ", percent); + const char *fmt = symbol_conf.field_sep ? "%.2f" : " %5.2f%% "; + + return scnprintf(hpp->buf, hpp->size, fmt, percent); } static int hpp__header_samples(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " Samples "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%11s"; + + return scnprintf(hpp->buf, hpp->size, fmt, "Samples"); } static int hpp__width_samples(struct perf_hpp *hpp __used) @@ -135,12 +150,16 @@ static int hpp__width_samples(struct perf_hpp *hpp __used) static int hpp__entry_samples(struct perf_hpp *hpp, struct hist_entry *he) { - return scnprintf(hpp->buf, hpp->size, "%11" PRIu64, he->nr_events); + const char *fmt = symbol_conf.field_sep ? "%" PRIu64 : "%11" PRIu64; + + return scnprintf(hpp->buf, hpp->size, fmt, he->nr_events); } static int hpp__header_period(struct perf_hpp *hpp) { - return scnprintf(hpp->buf, hpp->size, " Period "); + const char *fmt = symbol_conf.field_sep ? "%s" : "%12s"; + + return
[PATCH 2/5] perf hists: Handle field separator properly
From: Namhyung Kim namhyung@lge.com When a field separator is given, the output format doesn't need to be fancy like aligning to column length, coloring the percent value and so on. And since there's a slight difference to normal format, fix it not to break backward compatibility. Signed-off-by: Namhyung Kim namhy...@kernel.org --- tools/perf/ui/hist.c | 75 ++ tools/perf/ui/stdio/hist.c | 3 +- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c index c9a566cfd9c2..802a8659c15a 100644 --- a/tools/perf/ui/hist.c +++ b/tools/perf/ui/hist.c @@ -8,10 +8,9 @@ /* hist period print (hpp) functions */ static int hpp__header_overhead(struct perf_hpp *hpp) { - if (hpp-ptr) - return scnprintf(hpp-buf, hpp-size, Baseline); - else - return scnprintf(hpp-buf, hpp-size, Overhead); + const char *fmt = hpp-ptr ? Baseline : Overhead; + + return scnprintf(hpp-buf, hpp-size, fmt); } static int hpp__width_overhead(struct perf_hpp *hpp __used) @@ -28,12 +27,16 @@ static int hpp__color_overhead(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%%, percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%%; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_sys(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size, sys ); + const char *fmt = symbol_conf.field_sep ? %s : %6s; + + return scnprintf(hpp-buf, hpp-size, fmt, sys); } static int hpp__width_overhead_sys(struct perf_hpp *hpp __used) @@ -50,12 +53,16 @@ static int hpp__color_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_sys / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%%, percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%%; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_us(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size, user ); + const char *fmt = symbol_conf.field_sep ? %s : %6s; + + return scnprintf(hpp-buf, hpp-size, fmt, user); } static int hpp__width_overhead_us(struct perf_hpp *hpp __used) @@ -72,7 +79,9 @@ static int hpp__color_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) static int hpp__entry_overhead_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_us / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%%, percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%%; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_guest_sys(struct perf_hpp *hpp) @@ -96,7 +105,9 @@ static int hpp__entry_overhead_guest_sys(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_guest_sys / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%% , percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%% ; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_overhead_guest_us(struct perf_hpp *hpp) @@ -120,12 +131,16 @@ static int hpp__entry_overhead_guest_us(struct perf_hpp *hpp, struct hist_entry *he) { double percent = 100.0 * he-period_guest_us / hpp-total_period; - return scnprintf(hpp-buf, hpp-size, %5.2f%% , percent); + const char *fmt = symbol_conf.field_sep ? %.2f : %5.2f%% ; + + return scnprintf(hpp-buf, hpp-size, fmt, percent); } static int hpp__header_samples(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size, Samples ); + const char *fmt = symbol_conf.field_sep ? %s : %11s; + + return scnprintf(hpp-buf, hpp-size, fmt, Samples); } static int hpp__width_samples(struct perf_hpp *hpp __used) @@ -135,12 +150,16 @@ static int hpp__width_samples(struct perf_hpp *hpp __used) static int hpp__entry_samples(struct perf_hpp *hpp, struct hist_entry *he) { - return scnprintf(hpp-buf, hpp-size, %11 PRIu64, he-nr_events); + const char *fmt = symbol_conf.field_sep ? % PRIu64 : %11 PRIu64; + + return scnprintf(hpp-buf, hpp-size, fmt, he-nr_events); } static int hpp__header_period(struct perf_hpp *hpp) { - return scnprintf(hpp-buf, hpp-size,Period ); + const char *fmt = symbol_conf.field_sep ? %s : %12s; + + return scnprintf(hpp-buf, hpp-size, fmt, Period); } static int hpp__width_period(struct perf_hpp *hpp __used)