aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung.kim@lge.com>2013-10-31 02:56:03 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2013-11-04 18:59:09 -0500
commit41a4e6e2a0237e8ac895f43158ef7c91ab7af157 (patch)
tree3ab45245e866404b7bc05b494e6770fc580d408a /tools/perf
parent87968f94fbea47df334502a0db645833ce8a848b (diff)
perf hists: Consolidate __hists__add_*entry()
The __hists__add_{branch,mem}_entry() does almost the same thing that __hists__add_entry() does. Consolidate them into one. Signed-off-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Rodrigo Campos <rodrigo@sdfg.com.ar> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/r/1383202576-28141-2-git-send-email-namhyung@kernel.org [ Fixup clash with new COMM infrastructure ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/builtin-annotate.c2
-rw-r--r--tools/perf/builtin-diff.c3
-rw-r--r--tools/perf/builtin-report.c16
-rw-r--r--tools/perf/builtin-top.c5
-rw-r--r--tools/perf/tests/hists_link.c6
-rw-r--r--tools/perf/util/hist.c75
-rw-r--r--tools/perf/util/hist.h18
7 files changed, 30 insertions, 95 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 6c5ae57831f6..4087ab19823c 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -65,7 +65,7 @@ static int perf_evsel__add_sample(struct perf_evsel *evsel,
65 return 0; 65 return 0;
66 } 66 }
67 67
68 he = __hists__add_entry(&evsel->hists, al, NULL, 1, 1, 0); 68 he = __hists__add_entry(&evsel->hists, al, NULL, NULL, NULL, 1, 1, 0);
69 if (he == NULL) 69 if (he == NULL)
70 return -ENOMEM; 70 return -ENOMEM;
71 71
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index b605009e803f..3b67ea2444bd 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -307,7 +307,8 @@ static int hists__add_entry(struct hists *hists,
307 struct addr_location *al, u64 period, 307 struct addr_location *al, u64 period,
308 u64 weight, u64 transaction) 308 u64 weight, u64 transaction)
309{ 309{
310 if (__hists__add_entry(hists, al, NULL, period, weight, transaction) != NULL) 310 if (__hists__add_entry(hists, al, NULL, NULL, NULL, period, weight,
311 transaction) != NULL)
311 return 0; 312 return 0;
312 return -ENOMEM; 313 return -ENOMEM;
313} 314}
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 25f83d5d66fd..8cf8e66ba594 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -115,7 +115,8 @@ static int perf_report__add_mem_hist_entry(struct perf_tool *tool,
115 * and this is indirectly achieved by passing period=weight here 115 * and this is indirectly achieved by passing period=weight here
116 * and the he_stat__add_period() function. 116 * and the he_stat__add_period() function.
117 */ 117 */
118 he = __hists__add_mem_entry(&evsel->hists, al, parent, mi, cost, cost); 118 he = __hists__add_entry(&evsel->hists, al, parent, NULL, mi,
119 cost, cost, 0);
119 if (!he) 120 if (!he)
120 return -ENOMEM; 121 return -ENOMEM;
121 122
@@ -200,12 +201,16 @@ static int perf_report__add_branch_hist_entry(struct perf_tool *tool,
200 201
201 err = -ENOMEM; 202 err = -ENOMEM;
202 203
204 /* overwrite the 'al' to branch-to info */
205 al->map = bi[i].to.map;
206 al->sym = bi[i].to.sym;
207 al->addr = bi[i].to.addr;
203 /* 208 /*
204 * The report shows the percentage of total branches captured 209 * The report shows the percentage of total branches captured
205 * and not events sampled. Thus we use a pseudo period of 1. 210 * and not events sampled. Thus we use a pseudo period of 1.
206 */ 211 */
207 he = __hists__add_branch_entry(&evsel->hists, al, parent, 212 he = __hists__add_entry(&evsel->hists, al, parent, &bi[i], NULL,
208 &bi[i], 1, 1); 213 1, 1, 0);
209 if (he) { 214 if (he) {
210 struct annotation *notes; 215 struct annotation *notes;
211 bx = he->branch_info; 216 bx = he->branch_info;
@@ -266,8 +271,9 @@ static int perf_evsel__add_hist_entry(struct perf_tool *tool,
266 return err; 271 return err;
267 } 272 }
268 273
269 he = __hists__add_entry(&evsel->hists, al, parent, sample->period, 274 he = __hists__add_entry(&evsel->hists, al, parent, NULL, NULL,
270 sample->weight, sample->transaction); 275 sample->period, sample->weight,
276 sample->transaction);
271 if (he == NULL) 277 if (he == NULL)
272 return -ENOMEM; 278 return -ENOMEM;
273 279
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index ca5ca37980fb..21897f0ffcd3 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -246,8 +246,9 @@ static struct hist_entry *perf_evsel__add_hist_entry(struct perf_evsel *evsel,
246 struct hist_entry *he; 246 struct hist_entry *he;
247 247
248 pthread_mutex_lock(&evsel->hists.lock); 248 pthread_mutex_lock(&evsel->hists.lock);
249 he = __hists__add_entry(&evsel->hists, al, NULL, sample->period, 249 he = __hists__add_entry(&evsel->hists, al, NULL, NULL, NULL,
250 sample->weight, sample->transaction); 250 sample->period, sample->weight,
251 sample->transaction);
251 pthread_mutex_unlock(&evsel->hists.lock); 252 pthread_mutex_unlock(&evsel->hists.lock);
252 if (he == NULL) 253 if (he == NULL)
253 return NULL; 254 return NULL;
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
index 6c337e653540..173bf42cc03e 100644
--- a/tools/perf/tests/hists_link.c
+++ b/tools/perf/tests/hists_link.c
@@ -223,7 +223,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
223 goto out; 223 goto out;
224 224
225 he = __hists__add_entry(&evsel->hists, &al, NULL, 225 he = __hists__add_entry(&evsel->hists, &al, NULL,
226 1, 1, 0); 226 NULL, NULL, 1, 1, 0);
227 if (he == NULL) 227 if (he == NULL)
228 goto out; 228 goto out;
229 229
@@ -245,8 +245,8 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
245 &sample) < 0) 245 &sample) < 0)
246 goto out; 246 goto out;
247 247
248 he = __hists__add_entry(&evsel->hists, &al, NULL, 1, 1, 248 he = __hists__add_entry(&evsel->hists, &al, NULL,
249 0); 249 NULL, NULL, 1, 1, 0);
250 if (he == NULL) 250 if (he == NULL)
251 goto out; 251 goto out;
252 252
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 30793f98c8bb..822903eaa201 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -407,73 +407,12 @@ out:
407 return he; 407 return he;
408} 408}
409 409
410struct hist_entry *__hists__add_mem_entry(struct hists *hists,
411 struct addr_location *al,
412 struct symbol *sym_parent,
413 struct mem_info *mi,
414 u64 period,
415 u64 weight)
416{
417 struct hist_entry entry = {
418 .thread = al->thread,
419 .comm = thread__comm(al->thread),
420 .ms = {
421 .map = al->map,
422 .sym = al->sym,
423 },
424 .stat = {
425 .period = period,
426 .weight = weight,
427 .nr_events = 1,
428 },
429 .cpu = al->cpu,
430 .ip = al->addr,
431 .level = al->level,
432 .parent = sym_parent,
433 .filtered = symbol__parent_filter(sym_parent),
434 .hists = hists,
435 .mem_info = mi,
436 .branch_info = NULL,
437 };
438 return add_hist_entry(hists, &entry, al, period, weight);
439}
440
441struct hist_entry *__hists__add_branch_entry(struct hists *hists,
442 struct addr_location *al,
443 struct symbol *sym_parent,
444 struct branch_info *bi,
445 u64 period,
446 u64 weight)
447{
448 struct hist_entry entry = {
449 .thread = al->thread,
450 .comm = thread__comm(al->thread),
451 .ms = {
452 .map = bi->to.map,
453 .sym = bi->to.sym,
454 },
455 .cpu = al->cpu,
456 .ip = bi->to.addr,
457 .level = al->level,
458 .stat = {
459 .period = period,
460 .nr_events = 1,
461 .weight = weight,
462 },
463 .parent = sym_parent,
464 .filtered = symbol__parent_filter(sym_parent),
465 .branch_info = bi,
466 .hists = hists,
467 .mem_info = NULL,
468 };
469
470 return add_hist_entry(hists, &entry, al, period, weight);
471}
472
473struct hist_entry *__hists__add_entry(struct hists *hists, 410struct hist_entry *__hists__add_entry(struct hists *hists,
474 struct addr_location *al, 411 struct addr_location *al,
475 struct symbol *sym_parent, u64 period, 412 struct symbol *sym_parent,
476 u64 weight, u64 transaction) 413 struct branch_info *bi,
414 struct mem_info *mi,
415 u64 period, u64 weight, u64 transaction)
477{ 416{
478 struct hist_entry entry = { 417 struct hist_entry entry = {
479 .thread = al->thread, 418 .thread = al->thread,
@@ -486,15 +425,15 @@ struct hist_entry *__hists__add_entry(struct hists *hists,
486 .ip = al->addr, 425 .ip = al->addr,
487 .level = al->level, 426 .level = al->level,
488 .stat = { 427 .stat = {
489 .period = period,
490 .nr_events = 1, 428 .nr_events = 1,
429 .period = period,
491 .weight = weight, 430 .weight = weight,
492 }, 431 },
493 .parent = sym_parent, 432 .parent = sym_parent,
494 .filtered = symbol__parent_filter(sym_parent), 433 .filtered = symbol__parent_filter(sym_parent),
495 .hists = hists, 434 .hists = hists,
496 .branch_info = NULL, 435 .branch_info = bi,
497 .mem_info = NULL, 436 .mem_info = mi,
498 .transaction = transaction, 437 .transaction = transaction,
499 }; 438 };
500 439
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 9d2d022cdb79..307f1c742563 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -86,7 +86,9 @@ struct hists {
86 86
87struct hist_entry *__hists__add_entry(struct hists *self, 87struct hist_entry *__hists__add_entry(struct hists *self,
88 struct addr_location *al, 88 struct addr_location *al,
89 struct symbol *parent, u64 period, 89 struct symbol *parent,
90 struct branch_info *bi,
91 struct mem_info *mi, u64 period,
90 u64 weight, u64 transaction); 92 u64 weight, u64 transaction);
91int64_t hist_entry__cmp(struct hist_entry *left, struct hist_entry *right); 93int64_t hist_entry__cmp(struct hist_entry *left, struct hist_entry *right);
92int64_t hist_entry__collapse(struct hist_entry *left, struct hist_entry *right); 94int64_t hist_entry__collapse(struct hist_entry *left, struct hist_entry *right);
@@ -95,20 +97,6 @@ int hist_entry__sort_snprintf(struct hist_entry *self, char *bf, size_t size,
95 struct hists *hists); 97 struct hists *hists);
96void hist_entry__free(struct hist_entry *); 98void hist_entry__free(struct hist_entry *);
97 99
98struct hist_entry *__hists__add_branch_entry(struct hists *self,
99 struct addr_location *al,
100 struct symbol *sym_parent,
101 struct branch_info *bi,
102 u64 period,
103 u64 weight);
104
105struct hist_entry *__hists__add_mem_entry(struct hists *self,
106 struct addr_location *al,
107 struct symbol *sym_parent,
108 struct mem_info *mi,
109 u64 period,
110 u64 weight);
111
112void hists__output_resort(struct hists *self); 100void hists__output_resort(struct hists *self);
113void hists__collapse_resort(struct hists *self, struct ui_progress *prog); 101void hists__collapse_resort(struct hists *self, struct ui_progress *prog);
114 102