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: Ian Rogers <irogers@google.com> Signed-off-by: Namhyung 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.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
2b08f219d5
commit
0bfbe661a2
@ -1694,6 +1694,11 @@ repeat:
|
||||
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 @@ do_hotkey: // key came straight from options ui__popup_menu()
|
||||
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],
|
||||
|
Loading…
x
Reference in New Issue
Block a user