Commit 0bfbe661 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf report: Add a menu item to annotate data type in TUI

When the hist entry has the type info, it should be able to display the
annotation browser for the type like in `perf annotate --data-type`.
Reviewed-by: default avatarIan Rogers <irogers@google.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20240411033256.2099646-7-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 2b08f219
......@@ -1694,6 +1694,11 @@ int cmd_report(int argc, const char **argv)
else
use_browser = 0;
if (report.data_type && use_browser == 1) {
symbol_conf.annotate_data_member = true;
symbol_conf.annotate_data_sample = true;
}
if (sort_order && strstr(sort_order, "ipc")) {
parse_options_usage(report_usage, options, "s", 1);
goto error;
......
......@@ -38,6 +38,7 @@
#include "../ui.h"
#include "map.h"
#include "annotate.h"
#include "annotate-data.h"
#include "srcline.h"
#include "string2.h"
#include "units.h"
......@@ -2505,6 +2506,32 @@ add_annotate_opt(struct hist_browser *browser __maybe_unused,
return 1;
}
static int
do_annotate_type(struct hist_browser *browser, struct popup_action *act)
{
struct hist_entry *he = browser->he_selection;
hist_entry__annotate_data_tui(he, act->evsel, browser->hbt);
ui_browser__handle_resize(&browser->b);
return 0;
}
static int
add_annotate_type_opt(struct hist_browser *browser,
struct popup_action *act, char **optstr,
struct hist_entry *he)
{
if (he == NULL || he->mem_type == NULL || he->mem_type->histograms == NULL)
return 0;
if (asprintf(optstr, "Annotate type %s", he->mem_type->self.type_name) < 0)
return 0;
act->evsel = hists_to_evsel(browser->hists);
act->fn = do_annotate_type;
return 1;
}
static int
do_zoom_thread(struct hist_browser *browser, struct popup_action *act)
{
......@@ -3307,6 +3334,10 @@ static int evsel__hists_browse(struct evsel *evsel, int nr_events, const char *h
browser->he_selection->ip);
}
skip_annotation:
nr_options += add_annotate_type_opt(browser,
&actions[nr_options],
&options[nr_options],
browser->he_selection);
nr_options += add_thread_opt(browser, &actions[nr_options],
&options[nr_options], thread);
nr_options += add_dso_opt(browser, &actions[nr_options],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment