Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 338923
b: refs/heads/master
c: cdbab7c
h: refs/heads/master
i:
  338921: ecf5fed
  338919: a58e420
v: v3
  • Loading branch information
Feng Tang authored and Arnaldo Carvalho de Melo committed Oct 29, 2012
1 parent a51e21e commit 1d14474
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 79ee47faa77706f568f0329b7475c123b67a3b4a
refs/heads/master: cdbab7c201ab38f7b8d248ebf289025381166526
38 changes: 38 additions & 0 deletions trunk/tools/perf/ui/browsers/hists.c
Original file line number Diff line number Diff line change
Expand Up @@ -1141,6 +1141,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
int nr_options = 0;
int key = -1;
char buf[64];
char script_opt[64];

if (browser == NULL)
return -1;
Expand All @@ -1159,6 +1160,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
int choice = 0,
annotate = -2, zoom_dso = -2, zoom_thread = -2,
annotate_f = -2, annotate_t = -2, browse_map = -2;
int scripts_comm = -2, scripts_symbol = -2, scripts_all = -2;

nr_options = 0;

Expand Down Expand Up @@ -1211,6 +1213,8 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
hist_browser__reset(browser);
}
continue;
case 'r':
goto do_scripts;
case K_F1:
case 'h':
case '?':
Expand All @@ -1229,6 +1233,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
"E Expand all callchains\n"
"d Zoom into current DSO\n"
"t Zoom into current Thread\n"
"r Run available scripts\n"
"P Print histograms to perf.hist.N\n"
"V Verbose (DSO names in callchains, etc)\n"
"/ Filter symbol by name");
Expand Down Expand Up @@ -1317,6 +1322,25 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
browser->selection->map != NULL &&
asprintf(&options[nr_options], "Browse map details") > 0)
browse_map = nr_options++;

/* perf script support */
if (browser->he_selection) {
struct symbol *sym;

if (asprintf(&options[nr_options], "Run scripts for samples of thread [%s]",
browser->he_selection->thread->comm) > 0)
scripts_comm = nr_options++;

sym = browser->he_selection->ms.sym;
if (sym && sym->namelen &&
asprintf(&options[nr_options], "Run scripts for samples of symbol [%s]",
sym->name) > 0)
scripts_symbol = nr_options++;
}

if (asprintf(&options[nr_options], "Run scripts for all samples") > 0)
scripts_all = nr_options++;

add_exit_option:
options[nr_options++] = (char *)"Exit";
retry_popup_menu:
Expand Down Expand Up @@ -1411,6 +1435,20 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
hists__filter_by_thread(hists);
hist_browser__reset(browser);
}
/* perf scripts support */
else if (choice == scripts_all || choice == scripts_comm ||
choice == scripts_symbol) {
do_scripts:
memset(script_opt, 0, 64);

if (choice == scripts_comm)
sprintf(script_opt, " -c %s ", browser->he_selection->thread->comm);

if (choice == scripts_symbol)
sprintf(script_opt, " -S %s ", browser->he_selection->ms.sym->name);

script_browse(script_opt);
}
}
out_free_stack:
pstack__delete(fstack);
Expand Down

0 comments on commit 1d14474

Please sign in to comment.