perf hists: Use own hpp_list for hierarchy mode
Now each hists has its own hpp lists in hierarchy. So instead of having a pointer to a single perf_hpp_fmt in a hist entry, make it point the hpp_list for its level. This will be used to support multiple sort keys in a single hierarchy level. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/r/1457361308-514-3-git-send-email-namhyung@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

parent
c3bc0c4368
commit
1b2dbbf41a
@@ -1388,25 +1388,26 @@ static int hist_browser__show_hierarchy_entry(struct hist_browser *browser,
|
||||
HE_COLORSET_NORMAL);
|
||||
}
|
||||
|
||||
ui_browser__write_nstring(&browser->b, "", 2);
|
||||
width -= 2;
|
||||
perf_hpp_list__for_each_format(entry->hpp_list, fmt) {
|
||||
ui_browser__write_nstring(&browser->b, "", 2);
|
||||
width -= 2;
|
||||
|
||||
/*
|
||||
* No need to call hist_entry__snprintf_alignment()
|
||||
* since this fmt is always the last column in the
|
||||
* hierarchy mode.
|
||||
*/
|
||||
fmt = entry->fmt;
|
||||
if (fmt->color) {
|
||||
width -= fmt->color(fmt, &hpp, entry);
|
||||
} else {
|
||||
int i = 0;
|
||||
/*
|
||||
* No need to call hist_entry__snprintf_alignment()
|
||||
* since this fmt is always the last column in the
|
||||
* hierarchy mode.
|
||||
*/
|
||||
if (fmt->color) {
|
||||
width -= fmt->color(fmt, &hpp, entry);
|
||||
} else {
|
||||
int i = 0;
|
||||
|
||||
width -= fmt->entry(fmt, &hpp, entry);
|
||||
ui_browser__printf(&browser->b, "%s", ltrim(s));
|
||||
width -= fmt->entry(fmt, &hpp, entry);
|
||||
ui_browser__printf(&browser->b, "%s", ltrim(s));
|
||||
|
||||
while (isspace(s[i++]))
|
||||
width++;
|
||||
while (isspace(s[i++]))
|
||||
width++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1934,7 +1935,7 @@ static int hist_browser__fprintf_hierarchy_entry(struct hist_browser *browser,
|
||||
struct perf_hpp_fmt *fmt;
|
||||
bool first = true;
|
||||
int ret;
|
||||
int hierarchy_indent = (nr_sort_keys + 1) * HIERARCHY_INDENT;
|
||||
int hierarchy_indent = nr_sort_keys * HIERARCHY_INDENT;
|
||||
|
||||
printed = fprintf(fp, "%*s", level * HIERARCHY_INDENT, "");
|
||||
|
||||
@@ -1962,9 +1963,13 @@ static int hist_browser__fprintf_hierarchy_entry(struct hist_browser *browser,
|
||||
ret = scnprintf(hpp.buf, hpp.size, "%*s", hierarchy_indent, "");
|
||||
advance_hpp(&hpp, ret);
|
||||
|
||||
fmt = he->fmt;
|
||||
ret = fmt->entry(fmt, &hpp, he);
|
||||
advance_hpp(&hpp, ret);
|
||||
perf_hpp_list__for_each_format(he->hpp_list, fmt) {
|
||||
ret = scnprintf(hpp.buf, hpp.size, " ");
|
||||
advance_hpp(&hpp, ret);
|
||||
|
||||
ret = fmt->entry(fmt, &hpp, he);
|
||||
advance_hpp(&hpp, ret);
|
||||
}
|
||||
|
||||
printed += fprintf(fp, "%s\n", rtrim(s));
|
||||
|
||||
|
Reference in New Issue
Block a user