* [GIT PULL 00/29] perf/core improvements and fixes
@ 2013-11-04 17:58 Arnaldo Carvalho de Melo
2013-11-04 20:16 ` Ingo Molnar
0 siblings, 1 reply; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2013-11-04 17:58 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen,
Andrew Morton, Corey Ashford, David Ahern, Frederic Weisbecker,
Howard Cochran, Jiri Olsa, Masami Hiramatsu, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
Steven Rostedt, Xenia Ragiadakou, Yoshihiro YUNOMAE,
Arnaldo Carvalho de Melo
From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 46d525eae2a076adfde92dca1db12d9a3b8ad8bb:
perf test: Update command line callchain attribute tests (2013-11-01 10:42:57 -0300)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-urgent-for-mingo
for you to fetch changes up to 46d525eae2a076adfde92dca1db12d9a3b8ad8bb:
perf test: Update command line callchain attribute tests (2013-11-01 10:42:57 -0300)
----------------------------------------------------------------
perf/urgent fixes:
. Fix command line callchain attribute tests to handle the new
-g/--call-chain semantics.
. Remove cast of non-variadic function to variadic, fixing perf output
on armhf arch. Fix from Michael Hudson-Doyle.
. Fix 32-bit building of 'perf bench', from Wei Yang.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2013-11-04 17:58 Arnaldo Carvalho de Melo
@ 2013-11-04 20:16 ` Ingo Molnar
2013-11-05 7:52 ` Ingo Molnar
0 siblings, 1 reply; 41+ messages in thread
From: Ingo Molnar @ 2013-11-04 20:16 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen,
Andrew Morton, Corey Ashford, David Ahern, Frederic Weisbecker,
Howard Cochran, Jiri Olsa, Masami Hiramatsu, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
Steven Rostedt, Xenia Ragiadakou, Yoshihiro YUNOMAE,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@infradead.org> wrote:
> From: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
>
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 46d525eae2a076adfde92dca1db12d9a3b8ad8bb:
>
> perf test: Update command line callchain attribute tests (2013-11-01 10:42:57 -0300)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-urgent-for-mingo
I guess this wanted to be perf-core-for-mingo?
Pulled those bits, thanks Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2013-11-04 20:16 ` Ingo Molnar
@ 2013-11-05 7:52 ` Ingo Molnar
2013-11-05 8:05 ` Ingo Molnar
0 siblings, 1 reply; 41+ messages in thread
From: Ingo Molnar @ 2013-11-05 7:52 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen,
Andrew Morton, Corey Ashford, David Ahern, Frederic Weisbecker,
Howard Cochran, Jiri Olsa, Masami Hiramatsu, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
Steven Rostedt, Xenia Ragiadakou, Yoshihiro YUNOMAE,
Arnaldo Carvalho de Melo
hm, probably one of these commits:
8a0c4c2843d3 perf tools: Fix libunwind build and feature detection for 32-bit build
28e962b9d79f perf tools: Fix 32-bit cross build
74af377bc25d perf tools: Fix non-debug build
9402802a416c perf tools: Fix test_on_exit for 32-bit build
broke the suppression of the auto-detection messages on repeat invocations
of 'make', if all testcases pass.
'make' used to display this on repeat invocations:
comet:~/tip/tools/perf> make
BUILD: Doing 'make -j12' parallel build
comet:~/tip/tools/perf> make
BUILD: Doing 'make -j12' parallel build
comet:~/tip/tools/perf> make
BUILD: Doing 'make -j12' parallel build
Now it displays the spammy auto-detection all the time:
comet:~/tip/tools/perf> make
BUILD: Doing 'make -j12' parallel build
Auto-detecting system features:
... backtrace: [ on ]
... dwarf: [ on ]
... fortify-source: [ on ]
... glibc: [ on ]
... gtk2: [ on ]
... gtk2-infobar: [ on ]
... libaudit: [ on ]
... libbfd: [ on ]
... libelf: [ on ]
... libelf-getphdrnum: [ on ]
... libelf-mmap: [ on ]
... libnuma: [ on ]
... libperl: [ on ]
... libpython: [ on ]
... libpython-version: [ on ]
... libslang: [ on ]
... libunwind: [ on ]
... on-exit: [ on ]
... stackprotector: [ on ]
... stackprotector-all: [ on ]
maybe a new testcase fails on my box, but is not properly displayed?
Thanks,
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2013-11-05 7:52 ` Ingo Molnar
@ 2013-11-05 8:05 ` Ingo Molnar
0 siblings, 0 replies; 41+ messages in thread
From: Ingo Molnar @ 2013-11-05 8:05 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo, Namhyung Kim
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen,
Andrew Morton, Corey Ashford, David Ahern, Frederic Weisbecker,
Howard Cochran, Jiri Olsa, Masami Hiramatsu, Mike Galbraith,
Namhyung Kim, Paul Mackerras, Peter Zijlstra, Stephane Eranian,
Steven Rostedt, Xenia Ragiadakou, Yoshihiro YUNOMAE,
Arnaldo Carvalho de Melo
* Ingo Molnar <mingo@kernel.org> wrote:
> Now it displays the spammy auto-detection all the time:
>
> comet:~/tip/tools/perf> make
> BUILD: Doing 'make -j12' parallel build
>
> Auto-detecting system features:
> ... backtrace: [ on ]
> ... dwarf: [ on ]
> ... fortify-source: [ on ]
> ... glibc: [ on ]
> ... gtk2: [ on ]
> ... gtk2-infobar: [ on ]
> ... libaudit: [ on ]
> ... libbfd: [ on ]
> ... libelf: [ on ]
> ... libelf-getphdrnum: [ on ]
> ... libelf-mmap: [ on ]
> ... libnuma: [ on ]
> ... libperl: [ on ]
> ... libpython: [ on ]
> ... libpython-version: [ on ]
> ... libslang: [ on ]
> ... libunwind: [ on ]
> ... on-exit: [ on ]
> ... stackprotector: [ on ]
> ... stackprotector-all: [ on ]
>
> maybe a new testcase fails on my box, but is not properly displayed?
Hm, a 'make clean' cleaned up the condition and it now works as expected.
So what happened is that GCC got upgraded from 4.8.1 to 4.8.2 and
test-all.c failed to build:
comet:~/tip/tools/perf/config/feature-checks> make -i
make: *** No rule to make target `/usr/lib/gcc/x86_64-redhat-linux/4.8.1/include/limits.h', needed by `test-all'. Stop.
but the individual testcases got built successfully and the perf build was
fine and correct - it's just that the test-all.c .d file never got updated
due to the broken dependency.
I think Namhyung warned about this during the feature-detection
discussion, and I dismissed the concern - but Namhyung was right, it's a
real problem.
I think to fix this we should automatically clean out potentially stale .d
files automatically after testcase build failures (be it test-all.c or any
other testcase)?
That would still preserve all the good roles of these dependencies and it
would preserve the build speed and detection of system library changes.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
* [GIT PULL 00/29] perf/core improvements and fixes
@ 2016-02-03 16:33 Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 01/29] perf hists: Factor output_resort from hists__output_resort Arnaldo Carvalho de Melo
` (29 more replies)
0 siblings, 30 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Andi Kleen, David Ahern,
Jiri Olsa, Namhyung Kim, Peter Zijlstra, Stephane Eranian,
Wang Nan, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit 8eb22c984eb9eeaed47130f5679acd367af69678:
Merge tag 'perf-core-for-mingo-3' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-03 11:02:37 +0100)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
for you to fetch changes up to b62e8dfcda8cb133c062c0e1207afea2476eb7fd:
perf hists browser: Add 'L' hotkey to change percent limit (2016-02-03 12:24:22 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
New features:
- Add 'L' hotkey to dynamicly set the percent threshold for histogram
entries and callchains, i.e. dynamicly do what the --percent-limit
command line option to 'top' and 'report' does. (Namhyung Kim)
Infrastructure:
- Per hists field and sort lists, that will be used, for instance,
in the c2c tool (Jiri Olsa)
Documentation:
- Update documentation of --sort and --perf-limit options
for 'perf report' (Namhyung Kim)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
perf top: Move UI initialization ahead of sort setup
Jiri Olsa (25):
perf hists: Factor output_resort from hists__output_resort
perf hists: Introduce perf_evsel__output_resort function
perf hists: Add _idx fields into struct perf_hpp_fmt
perf hists: Use struct perf_hpp_fmt::idx in perf_hpp__reset_width
perf hists: Add 'equal' method to perf_hpp_fmt struct
perf hists: Add 'hpp__equal' callback function
perf hists: Make hpp setup function generic
perf report: Move UI initialization ahead of sort setup
perf hists: Allocate output sort field
perf hists: Remove perf_hpp__column_(disable|enable)
perf hists: Properly release format fields
perf hists: Separate sort fields parsing into setup_sort_list function
perf hists: Separate output fields parsing into setup_output_list function
perf hists: Introduce struct perf_hpp_list
perf hists: Introduce perf_hpp_list__init function
perf hists: Add perf_hpp_list register helpers
perf hists: Pass perf_hpp_list all the way through setup_output_list
perf hists: Introduce perf_hpp_list__for_each_format macro
perf hists: Introduce perf_hpp_list__for_each_format_safe macro
perf hists: Introduce perf_hpp_list__for_each_sort_list macro
perf hists: Introduce perf_hpp_list__for_each_sort_list_safe macro
perf hists: Add struct perf_hpp_list argument to helper functions
perf tools: Add hpp_list into struct hists object
perf hists: Introduce hists__for_each_format macro
perf hists: Introduce hists__for_each_sort_list macro
Namhyung Kim (3):
perf report: Update documentation of --sort option
perf report: Update documention of --percent-limit option
perf hists browser: Add 'L' hotkey to change percent limit
tools/perf/Documentation/perf-report.txt | 37 +++---
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-report.c | 20 +--
tools/perf/builtin-top.c | 24 ++--
tools/perf/tests/hists_cumulate.c | 2 +-
tools/perf/tests/hists_filter.c | 2 +-
tools/perf/tests/hists_output.c | 10 +-
tools/perf/ui/browsers/hists.c | 63 +++++++++-
tools/perf/ui/gtk/hists.c | 6 +-
tools/perf/ui/hist.c | 170 +++++++++++++------------
tools/perf/ui/stdio/hist.c | 8 +-
tools/perf/util/hist.c | 47 +++++--
tools/perf/util/hist.h | 65 +++++++---
tools/perf/util/sort.c | 205 +++++++++++++++++++++----------
14 files changed, 425 insertions(+), 236 deletions(-)
^ permalink raw reply [flat|nested] 41+ messages in thread
* [PATCH 01/29] perf hists: Factor output_resort from hists__output_resort
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 02/29] perf hists: Introduce perf_evsel__output_resort function Arnaldo Carvalho de Melo
` (28 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Currently hists__output_resort() depends on hists based on hists_evsel
struct, but we need to be able to sort common hists as well.
Cutting out the sorting base sorting code into output_resort
function, so it can be reused in following patch.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-2-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/hist.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 098310bc4489..7797d06d4993 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1197,19 +1197,13 @@ static void __hists__insert_output_entry(struct rb_root *entries,
rb_insert_color(&he->rb_node, entries);
}
-void hists__output_resort(struct hists *hists, struct ui_progress *prog)
+static void output_resort(struct hists *hists, struct ui_progress *prog,
+ bool use_callchain)
{
struct rb_root *root;
struct rb_node *next;
struct hist_entry *n;
u64 min_callchain_hits;
- struct perf_evsel *evsel = hists_to_evsel(hists);
- bool use_callchain;
-
- if (evsel && symbol_conf.use_callchain && !symbol_conf.show_ref_callgraph)
- use_callchain = evsel->attr.sample_type & PERF_SAMPLE_CALLCHAIN;
- else
- use_callchain = symbol_conf.use_callchain;
min_callchain_hits = hists__total_period(hists) * (callchain_param.min_percent / 100);
@@ -1239,6 +1233,19 @@ void hists__output_resort(struct hists *hists, struct ui_progress *prog)
}
}
+void hists__output_resort(struct hists *hists, struct ui_progress *prog)
+{
+ struct perf_evsel *evsel = hists_to_evsel(hists);
+ bool use_callchain;
+
+ if (evsel && symbol_conf.use_callchain && !symbol_conf.show_ref_callgraph)
+ use_callchain = evsel->attr.sample_type & PERF_SAMPLE_CALLCHAIN;
+ else
+ use_callchain = symbol_conf.use_callchain;
+
+ output_resort(hists, prog, use_callchain);
+}
+
static void hists__remove_entry_filter(struct hists *hists, struct hist_entry *h,
enum hist_filter filter)
{
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 02/29] perf hists: Introduce perf_evsel__output_resort function
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 01/29] perf hists: Factor output_resort from hists__output_resort Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 03/29] perf hists: Add _idx fields into struct perf_hpp_fmt Arnaldo Carvalho de Melo
` (27 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Adding evsel specific function to sort hists_evsel based hists. The
hists__output_resort can be now used to sort common hists object.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-3-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-annotate.c | 2 +-
tools/perf/builtin-report.c | 2 +-
tools/perf/builtin-top.c | 10 ++++++----
tools/perf/tests/hists_cumulate.c | 2 +-
tools/perf/tests/hists_filter.c | 2 +-
tools/perf/tests/hists_output.c | 10 +++++-----
tools/perf/util/hist.c | 10 +++++++---
tools/perf/util/hist.h | 1 +
8 files changed, 23 insertions(+), 16 deletions(-)
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index cc5c1267c738..cfe366375c4b 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -245,7 +245,7 @@ static int __cmd_annotate(struct perf_annotate *ann)
hists__collapse_resort(hists, NULL);
/* Don't sort callchain */
perf_evsel__reset_sample_bit(pos, CALLCHAIN);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(pos, NULL);
if (symbol_conf.event_group &&
!perf_evsel__is_group_leader(pos))
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 72ed0b46d5a1..54ce0479ca28 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -507,7 +507,7 @@ static void report__output_resort(struct report *rep)
ui_progress__init(&prog, rep->nr_entries, "Sorting events for output...");
evlist__for_each(rep->session->evlist, pos)
- hists__output_resort(evsel__hists(pos), &prog);
+ perf_evsel__output_resort(pos, &prog);
ui_progress__finish();
}
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index bf01cbb0ef23..f1bbe2a589f5 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -252,7 +252,8 @@ static void perf_top__print_sym_table(struct perf_top *top)
char bf[160];
int printed = 0;
const int win_width = top->winsize.ws_col - 1;
- struct hists *hists = evsel__hists(top->sym_evsel);
+ struct perf_evsel *evsel = top->sym_evsel;
+ struct hists *hists = evsel__hists(evsel);
puts(CONSOLE_CLEAR);
@@ -288,7 +289,7 @@ static void perf_top__print_sym_table(struct perf_top *top)
}
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
hists__output_recalc_col_len(hists, top->print_entries - printed);
putchar('\n');
@@ -540,6 +541,7 @@ static bool perf_top__handle_keypress(struct perf_top *top, int c)
static void perf_top__sort_new_samples(void *arg)
{
struct perf_top *t = arg;
+ struct perf_evsel *evsel = t->sym_evsel;
struct hists *hists;
perf_top__reset_sample_counters(t);
@@ -547,7 +549,7 @@ static void perf_top__sort_new_samples(void *arg)
if (t->evlist->selected != NULL)
t->sym_evsel = t->evlist->selected;
- hists = evsel__hists(t->sym_evsel);
+ hists = evsel__hists(evsel);
if (t->evlist->enabled) {
if (t->zero) {
@@ -559,7 +561,7 @@ static void perf_top__sort_new_samples(void *arg)
}
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
}
static void *display_thread_tui(void *arg)
diff --git a/tools/perf/tests/hists_cumulate.c b/tools/perf/tests/hists_cumulate.c
index 5e6a86e50fb9..ecf136c385d5 100644
--- a/tools/perf/tests/hists_cumulate.c
+++ b/tools/perf/tests/hists_cumulate.c
@@ -191,7 +191,7 @@ static int do_test(struct hists *hists, struct result *expected, size_t nr_expec
* function since TEST_ASSERT_VAL() returns in case of failure.
*/
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(hists_to_evsel(hists), NULL);
if (verbose > 2) {
pr_info("use callchain: %d, cumulate callchain: %d\n",
diff --git a/tools/perf/tests/hists_filter.c b/tools/perf/tests/hists_filter.c
index 351a42463444..34b945a55d4d 100644
--- a/tools/perf/tests/hists_filter.c
+++ b/tools/perf/tests/hists_filter.c
@@ -145,7 +145,7 @@ int test__hists_filter(int subtest __maybe_unused)
struct hists *hists = evsel__hists(evsel);
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
if (verbose > 2) {
pr_info("Normal histogram\n");
diff --git a/tools/perf/tests/hists_output.c b/tools/perf/tests/hists_output.c
index b231265148d8..23cce67c7e48 100644
--- a/tools/perf/tests/hists_output.c
+++ b/tools/perf/tests/hists_output.c
@@ -156,7 +156,7 @@ static int test1(struct perf_evsel *evsel, struct machine *machine)
goto out;
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
if (verbose > 2) {
pr_info("[fields = %s, sort = %s]\n", field_order, sort_order);
@@ -256,7 +256,7 @@ static int test2(struct perf_evsel *evsel, struct machine *machine)
goto out;
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
if (verbose > 2) {
pr_info("[fields = %s, sort = %s]\n", field_order, sort_order);
@@ -310,7 +310,7 @@ static int test3(struct perf_evsel *evsel, struct machine *machine)
goto out;
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
if (verbose > 2) {
pr_info("[fields = %s, sort = %s]\n", field_order, sort_order);
@@ -388,7 +388,7 @@ static int test4(struct perf_evsel *evsel, struct machine *machine)
goto out;
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
if (verbose > 2) {
pr_info("[fields = %s, sort = %s]\n", field_order, sort_order);
@@ -491,7 +491,7 @@ static int test5(struct perf_evsel *evsel, struct machine *machine)
goto out;
hists__collapse_resort(hists, NULL);
- hists__output_resort(hists, NULL);
+ perf_evsel__output_resort(evsel, NULL);
if (verbose > 2) {
pr_info("[fields = %s, sort = %s]\n", field_order, sort_order);
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 7797d06d4993..d07955c145e5 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1233,9 +1233,8 @@ static void output_resort(struct hists *hists, struct ui_progress *prog,
}
}
-void hists__output_resort(struct hists *hists, struct ui_progress *prog)
+void perf_evsel__output_resort(struct perf_evsel *evsel, struct ui_progress *prog)
{
- struct perf_evsel *evsel = hists_to_evsel(hists);
bool use_callchain;
if (evsel && symbol_conf.use_callchain && !symbol_conf.show_ref_callgraph)
@@ -1243,7 +1242,12 @@ void hists__output_resort(struct hists *hists, struct ui_progress *prog)
else
use_callchain = symbol_conf.use_callchain;
- output_resort(hists, prog, use_callchain);
+ output_resort(evsel__hists(evsel), prog, use_callchain);
+}
+
+void hists__output_resort(struct hists *hists, struct ui_progress *prog)
+{
+ output_resort(hists, prog, symbol_conf.use_callchain);
}
static void hists__remove_entry_filter(struct hists *hists, struct hist_entry *h,
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index d4ec4822a103..bc2499794bef 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -128,6 +128,7 @@ int hist_entry__sort_snprintf(struct hist_entry *he, char *bf, size_t size,
struct hists *hists);
void hist_entry__delete(struct hist_entry *he);
+void perf_evsel__output_resort(struct perf_evsel *evsel, struct ui_progress *prog);
void hists__output_resort(struct hists *hists, struct ui_progress *prog);
void hists__collapse_resort(struct hists *hists, struct ui_progress *prog);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 03/29] perf hists: Add _idx fields into struct perf_hpp_fmt
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 01/29] perf hists: Factor output_resort from hists__output_resort Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 02/29] perf hists: Introduce perf_evsel__output_resort function Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 04/29] perf hists: Use struct perf_hpp_fmt::idx in perf_hpp__reset_width Arnaldo Carvalho de Melo
` (26 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Currently there's no way of comparing hpp format entries, which is
needed in following patches.
Adding _idx fields into struct perf_hpp_fmt to recognize and be able to
compare hpp format entries.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-4-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 25 ++++++++++++++-----------
tools/perf/util/hist.h | 1 +
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index bf2a66e254ea..d392801ea17e 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -371,7 +371,7 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
return 0;
}
-#define HPP__COLOR_PRINT_FNS(_name, _fn) \
+#define HPP__COLOR_PRINT_FNS(_name, _fn, _idx) \
{ \
.name = _name, \
.header = hpp__header_fn, \
@@ -381,9 +381,10 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
.cmp = hpp__nop_cmp, \
.collapse = hpp__nop_cmp, \
.sort = hpp__sort_ ## _fn, \
+ .idx = PERF_HPP__ ## _idx, \
}
-#define HPP__COLOR_ACC_PRINT_FNS(_name, _fn) \
+#define HPP__COLOR_ACC_PRINT_FNS(_name, _fn, _idx) \
{ \
.name = _name, \
.header = hpp__header_fn, \
@@ -393,9 +394,10 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
.cmp = hpp__nop_cmp, \
.collapse = hpp__nop_cmp, \
.sort = hpp__sort_ ## _fn, \
+ .idx = PERF_HPP__ ## _idx, \
}
-#define HPP__PRINT_FNS(_name, _fn) \
+#define HPP__PRINT_FNS(_name, _fn, _idx) \
{ \
.name = _name, \
.header = hpp__header_fn, \
@@ -404,17 +406,18 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
.cmp = hpp__nop_cmp, \
.collapse = hpp__nop_cmp, \
.sort = hpp__sort_ ## _fn, \
+ .idx = PERF_HPP__ ## _idx, \
}
struct perf_hpp_fmt perf_hpp__format[] = {
- HPP__COLOR_PRINT_FNS("Overhead", overhead),
- HPP__COLOR_PRINT_FNS("sys", overhead_sys),
- HPP__COLOR_PRINT_FNS("usr", overhead_us),
- HPP__COLOR_PRINT_FNS("guest sys", overhead_guest_sys),
- HPP__COLOR_PRINT_FNS("guest usr", overhead_guest_us),
- HPP__COLOR_ACC_PRINT_FNS("Children", overhead_acc),
- HPP__PRINT_FNS("Samples", samples),
- HPP__PRINT_FNS("Period", period)
+ HPP__COLOR_PRINT_FNS("Overhead", overhead, OVERHEAD),
+ HPP__COLOR_PRINT_FNS("sys", overhead_sys, OVERHEAD_SYS),
+ HPP__COLOR_PRINT_FNS("usr", overhead_us, OVERHEAD_US),
+ HPP__COLOR_PRINT_FNS("guest sys", overhead_guest_sys, OVERHEAD_GUEST_SYS),
+ HPP__COLOR_PRINT_FNS("guest usr", overhead_guest_us, OVERHEAD_GUEST_US),
+ HPP__COLOR_ACC_PRINT_FNS("Children", overhead_acc, OVERHEAD_ACC),
+ HPP__PRINT_FNS("Samples", samples, SAMPLES),
+ HPP__PRINT_FNS("Period", period, PERIOD)
};
LIST_HEAD(perf_hpp__list);
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index bc2499794bef..8a0cbdeb449e 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -221,6 +221,7 @@ struct perf_hpp_fmt {
bool elide;
int len;
int user_len;
+ int idx;
};
extern struct list_head perf_hpp__list;
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 04/29] perf hists: Use struct perf_hpp_fmt::idx in perf_hpp__reset_width
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (2 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 03/29] perf hists: Add _idx fields into struct perf_hpp_fmt Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 05/29] perf hists: Add 'equal' method to perf_hpp_fmt struct Arnaldo Carvalho de Melo
` (25 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
We are going to add dynamic hpp format fields, so we need to make the
'len' change for the format itself, not in the perf_hpp__format
template.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-5-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index d392801ea17e..5a11bf0aabc7 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -629,20 +629,12 @@ unsigned int hists__sort_list_width(struct hists *hists)
void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists)
{
- int idx;
-
if (perf_hpp__is_sort_entry(fmt))
return perf_hpp__reset_sort_width(fmt, hists);
- for (idx = 0; idx < PERF_HPP__MAX_INDEX; idx++) {
- if (fmt == &perf_hpp__format[idx])
- break;
- }
-
- if (idx == PERF_HPP__MAX_INDEX)
- return;
+ BUG_ON(fmt->idx >= PERF_HPP__MAX_INDEX);
- switch (idx) {
+ switch (fmt->idx) {
case PERF_HPP__OVERHEAD:
case PERF_HPP__OVERHEAD_SYS:
case PERF_HPP__OVERHEAD_US:
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 05/29] perf hists: Add 'equal' method to perf_hpp_fmt struct
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (3 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 04/29] perf hists: Use struct perf_hpp_fmt::idx in perf_hpp__reset_width Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 06/29] perf hists: Add 'hpp__equal' callback function Arnaldo Carvalho de Melo
` (24 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
To easily compare format entries and make it available for all kinds of
format entries.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-6-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 9 +++++++--
tools/perf/util/hist.h | 2 +-
tools/perf/util/sort.c | 39 ++++++++++++++++++++-------------------
3 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 5a11bf0aabc7..71c8bb71a350 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -524,6 +524,11 @@ void perf_hpp__cancel_cumulate(void)
perf_hpp__format[PERF_HPP__OVERHEAD].name = "Overhead";
}
+static bool fmt_equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
+{
+ return a->equal && a->equal(a, b);
+}
+
void perf_hpp__setup_output_field(void)
{
struct perf_hpp_fmt *fmt;
@@ -542,7 +547,7 @@ void perf_hpp__setup_output_field(void)
struct perf_hpp_fmt *pos;
perf_hpp__for_each_format(pos) {
- if (perf_hpp__same_sort_entry(pos, fmt))
+ if (fmt_equal(fmt, pos))
goto next;
}
}
@@ -571,7 +576,7 @@ void perf_hpp__append_sort_keys(void)
struct perf_hpp_fmt *pos;
perf_hpp__for_each_sort_list(pos) {
- if (perf_hpp__same_sort_entry(pos, fmt))
+ if (fmt_equal(fmt, pos))
goto next;
}
}
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 8a0cbdeb449e..9a240d7b8d3b 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -215,6 +215,7 @@ struct perf_hpp_fmt {
struct hist_entry *a, struct hist_entry *b);
int64_t (*sort)(struct perf_hpp_fmt *fmt,
struct hist_entry *a, struct hist_entry *b);
+ bool (*equal)(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b);
struct list_head list;
struct list_head sort_list;
@@ -268,7 +269,6 @@ void perf_hpp__reset_output_field(void);
void perf_hpp__append_sort_keys(void);
bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format);
-bool perf_hpp__same_sort_entry(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b);
bool perf_hpp__is_dynamic_entry(struct perf_hpp_fmt *format);
bool perf_hpp__defined_dynamic_entry(struct perf_hpp_fmt *fmt, struct hists *hists);
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 898e4b0724bf..170f7f73fe93 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1441,20 +1441,6 @@ struct hpp_sort_entry {
struct sort_entry *se;
};
-bool perf_hpp__same_sort_entry(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
-{
- struct hpp_sort_entry *hse_a;
- struct hpp_sort_entry *hse_b;
-
- if (!perf_hpp__is_sort_entry(a) || !perf_hpp__is_sort_entry(b))
- return false;
-
- hse_a = container_of(a, struct hpp_sort_entry, hpp);
- hse_b = container_of(b, struct hpp_sort_entry, hpp);
-
- return hse_a->se == hse_b->se;
-}
-
void perf_hpp__reset_sort_width(struct perf_hpp_fmt *fmt, struct hists *hists)
{
struct hpp_sort_entry *hse;
@@ -1540,6 +1526,25 @@ static int64_t __sort__hpp_sort(struct perf_hpp_fmt *fmt,
return sort_fn(a, b);
}
+bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format)
+{
+ return format->header == __sort__hpp_header;
+}
+
+static bool __sort__hpp_equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
+{
+ struct hpp_sort_entry *hse_a;
+ struct hpp_sort_entry *hse_b;
+
+ if (!perf_hpp__is_sort_entry(a) || !perf_hpp__is_sort_entry(b))
+ return false;
+
+ hse_a = container_of(a, struct hpp_sort_entry, hpp);
+ hse_b = container_of(b, struct hpp_sort_entry, hpp);
+
+ return hse_a->se == hse_b->se;
+}
+
static struct hpp_sort_entry *
__sort_dimension__alloc_hpp(struct sort_dimension *sd)
{
@@ -1561,6 +1566,7 @@ __sort_dimension__alloc_hpp(struct sort_dimension *sd)
hse->hpp.cmp = __sort__hpp_cmp;
hse->hpp.collapse = __sort__hpp_collapse;
hse->hpp.sort = __sort__hpp_sort;
+ hse->hpp.equal = __sort__hpp_equal;
INIT_LIST_HEAD(&hse->hpp.list);
INIT_LIST_HEAD(&hse->hpp.sort_list);
@@ -1571,11 +1577,6 @@ __sort_dimension__alloc_hpp(struct sort_dimension *sd)
return hse;
}
-bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format)
-{
- return format->header == __sort__hpp_header;
-}
-
static int __sort_dimension__add_hpp_sort(struct sort_dimension *sd)
{
struct hpp_sort_entry *hse = __sort_dimension__alloc_hpp(sd);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 06/29] perf hists: Add 'hpp__equal' callback function
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (4 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 05/29] perf hists: Add 'equal' method to perf_hpp_fmt struct Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 07/29] perf hists: Make hpp setup function generic Arnaldo Carvalho de Melo
` (23 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Adding 'hpp__equal' callback function to compare hpp output format
entries.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-7-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 71c8bb71a350..b543f4b7d7d3 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -371,6 +371,19 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
return 0;
}
+static bool perf_hpp__is_hpp_entry(struct perf_hpp_fmt *a)
+{
+ return a->header == hpp__header_fn;
+}
+
+static bool hpp__equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
+{
+ if (!perf_hpp__is_hpp_entry(a) || !perf_hpp__is_hpp_entry(b))
+ return false;
+
+ return a->idx == b->idx;
+}
+
#define HPP__COLOR_PRINT_FNS(_name, _fn, _idx) \
{ \
.name = _name, \
@@ -382,6 +395,7 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
.collapse = hpp__nop_cmp, \
.sort = hpp__sort_ ## _fn, \
.idx = PERF_HPP__ ## _idx, \
+ .equal = hpp__equal, \
}
#define HPP__COLOR_ACC_PRINT_FNS(_name, _fn, _idx) \
@@ -395,6 +409,7 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
.collapse = hpp__nop_cmp, \
.sort = hpp__sort_ ## _fn, \
.idx = PERF_HPP__ ## _idx, \
+ .equal = hpp__equal, \
}
#define HPP__PRINT_FNS(_name, _fn, _idx) \
@@ -407,6 +422,7 @@ static int64_t hpp__nop_cmp(struct perf_hpp_fmt *fmt __maybe_unused,
.collapse = hpp__nop_cmp, \
.sort = hpp__sort_ ## _fn, \
.idx = PERF_HPP__ ## _idx, \
+ .equal = hpp__equal, \
}
struct perf_hpp_fmt perf_hpp__format[] = {
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 07/29] perf hists: Make hpp setup function generic
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (5 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 06/29] perf hists: Add 'hpp__equal' callback function Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 08/29] perf report: Move UI initialization ahead of sort setup Arnaldo Carvalho de Melo
` (22 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Now that we have the 'equal' method implemented for hpp format entries
we can ease up the logic in the following functions and make them
generic wrt comparing format entries:
perf_hpp__setup_output_field
perf_hpp__append_sort_keys
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-8-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 36 ++++++++----------------------------
1 file changed, 8 insertions(+), 28 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index b543f4b7d7d3..b0fcaecb7d1d 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -551,21 +551,11 @@ void perf_hpp__setup_output_field(void)
/* append sort keys to output field */
perf_hpp__for_each_sort_list(fmt) {
- if (!list_empty(&fmt->list))
- continue;
+ struct perf_hpp_fmt *pos;
- /*
- * sort entry fields are dynamically created,
- * so they can share a same sort key even though
- * the list is empty.
- */
- if (perf_hpp__is_sort_entry(fmt)) {
- struct perf_hpp_fmt *pos;
-
- perf_hpp__for_each_format(pos) {
- if (fmt_equal(fmt, pos))
- goto next;
- }
+ perf_hpp__for_each_format(pos) {
+ if (fmt_equal(fmt, pos))
+ goto next;
}
perf_hpp__column_register(fmt);
@@ -580,21 +570,11 @@ void perf_hpp__append_sort_keys(void)
/* append output fields to sort keys */
perf_hpp__for_each_format(fmt) {
- if (!list_empty(&fmt->sort_list))
- continue;
+ struct perf_hpp_fmt *pos;
- /*
- * sort entry fields are dynamically created,
- * so they can share a same sort key even though
- * the list is empty.
- */
- if (perf_hpp__is_sort_entry(fmt)) {
- struct perf_hpp_fmt *pos;
-
- perf_hpp__for_each_sort_list(pos) {
- if (fmt_equal(fmt, pos))
- goto next;
- }
+ perf_hpp__for_each_sort_list(pos) {
+ if (fmt_equal(fmt, pos))
+ goto next;
}
perf_hpp__register_sort_field(fmt);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 08/29] perf report: Move UI initialization ahead of sort setup
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (6 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 07/29] perf hists: Make hpp setup function generic Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 09/29] perf top: " Arnaldo Carvalho de Melo
` (21 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
The ui initialization changes hpp format callbacks, based on the used
browser. Thus we need this init being processed before setup_sorting.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-9-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-report.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 54ce0479ca28..1eab50ac1ef6 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -912,15 +912,6 @@ repeat:
symbol_conf.cumulate_callchain = false;
}
- if (setup_sorting(session->evlist) < 0) {
- if (sort_order)
- parse_options_usage(report_usage, options, "s", 1);
- if (field_order)
- parse_options_usage(sort_order ? NULL : report_usage,
- options, "F", 1);
- goto error;
- }
-
/* Force tty output for header output and per-thread stat. */
if (report.header || report.header_only || report.show_threads)
use_browser = 0;
@@ -930,6 +921,15 @@ repeat:
else
use_browser = 0;
+ if (setup_sorting(session->evlist) < 0) {
+ if (sort_order)
+ parse_options_usage(report_usage, options, "s", 1);
+ if (field_order)
+ parse_options_usage(sort_order ? NULL : report_usage,
+ options, "F", 1);
+ goto error;
+ }
+
if (report.header || report.header_only) {
perf_session__fprintf_info(session, stdout,
report.show_full_info);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 09/29] perf top: Move UI initialization ahead of sort setup
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (7 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 08/29] perf report: Move UI initialization ahead of sort setup Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 10/29] perf hists: Allocate output sort field Arnaldo Carvalho de Melo
` (20 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, David Ahern, Jiri Olsa,
Namhyung Kim, Peter Zijlstra
From: Arnaldo Carvalho de Melo <acme@redhat.com>
The ui initialization changes hpp format callbacks, based on the used
browser. Thus we need this init being processed before setup_sorting.
Replica of a patch by Jiri for 'perf report'.
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-9-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/builtin-top.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index f1bbe2a589f5..a75de3940b97 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -1245,6 +1245,13 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
/* display thread wants entries to be collapsed in a different tree */
sort__need_collapse = 1;
+ if (top.use_stdio)
+ use_browser = 0;
+ else if (top.use_tui)
+ use_browser = 1;
+
+ setup_browser(false);
+
if (setup_sorting(top.evlist) < 0) {
if (sort_order)
parse_options_usage(top_usage, options, "s", 1);
@@ -1254,13 +1261,6 @@ int cmd_top(int argc, const char **argv, const char *prefix __maybe_unused)
goto out_delete_evlist;
}
- if (top.use_stdio)
- use_browser = 0;
- else if (top.use_tui)
- use_browser = 1;
-
- setup_browser(false);
-
status = target__validate(target);
if (status) {
target__strerror(target, status, errbuf, BUFSIZ);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 10/29] perf hists: Allocate output sort field
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (8 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 09/29] perf top: " Arnaldo Carvalho de Melo
@ 2016-02-03 16:33 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 11/29] perf hists: Remove perf_hpp__column_(disable|enable) Arnaldo Carvalho de Melo
` (19 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:33 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Currently we use static output fields, because we have single global
list of all sort/output fields.
We will add hists specific sort and output lists in following patches,
so we need all format entries to be dynamically allocated. Adding
support to allocate output sort field.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-10-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 16 ++++++++++++++--
tools/perf/util/sort.c | 41 +++++++++++++++++++++++++++++++++--------
2 files changed, 47 insertions(+), 10 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index b0fcaecb7d1d..c877c52ff4bc 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -533,11 +533,23 @@ void perf_hpp__column_disable(unsigned col)
void perf_hpp__cancel_cumulate(void)
{
+ struct perf_hpp_fmt *fmt, *acc, *ovh, *tmp;
+
if (is_strict_order(field_order))
return;
- perf_hpp__column_disable(PERF_HPP__OVERHEAD_ACC);
- perf_hpp__format[PERF_HPP__OVERHEAD].name = "Overhead";
+ ovh = &perf_hpp__format[PERF_HPP__OVERHEAD];
+ acc = &perf_hpp__format[PERF_HPP__OVERHEAD_ACC];
+
+ perf_hpp__for_each_format_safe(fmt, tmp) {
+ if (acc->equal(acc, fmt)) {
+ perf_hpp__column_unregister(fmt);
+ continue;
+ }
+
+ if (ovh->equal(ovh, fmt))
+ fmt->name = "Overhead";
+ }
}
static bool fmt_equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 170f7f73fe93..52e4a3674985 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1577,6 +1577,19 @@ __sort_dimension__alloc_hpp(struct sort_dimension *sd)
return hse;
}
+static struct perf_hpp_fmt *__hpp_dimension__alloc_hpp(struct hpp_dimension *hd)
+{
+ struct perf_hpp_fmt *fmt;
+
+ fmt = memdup(hd->fmt, sizeof(*fmt));
+ if (fmt) {
+ INIT_LIST_HEAD(&fmt->list);
+ INIT_LIST_HEAD(&fmt->sort_list);
+ }
+
+ return fmt;
+}
+
static int __sort_dimension__add_hpp_sort(struct sort_dimension *sd)
{
struct hpp_sort_entry *hse = __sort_dimension__alloc_hpp(sd);
@@ -2066,11 +2079,17 @@ static int __sort_dimension__add(struct sort_dimension *sd)
static int __hpp_dimension__add(struct hpp_dimension *hd)
{
- if (!hd->taken) {
- hd->taken = 1;
+ struct perf_hpp_fmt *fmt;
- perf_hpp__register_sort_field(hd->fmt);
- }
+ if (hd->taken)
+ return 0;
+
+ fmt = __hpp_dimension__alloc_hpp(hd);
+ if (!fmt)
+ return -1;
+
+ hd->taken = 1;
+ perf_hpp__register_sort_field(fmt);
return 0;
}
@@ -2088,11 +2107,17 @@ static int __sort_dimension__add_output(struct sort_dimension *sd)
static int __hpp_dimension__add_output(struct hpp_dimension *hd)
{
- if (!hd->taken) {
- hd->taken = 1;
+ struct perf_hpp_fmt *fmt;
- perf_hpp__column_register(hd->fmt);
- }
+ if (hd->taken)
+ return 0;
+
+ fmt = __hpp_dimension__alloc_hpp(hd);
+ if (!fmt)
+ return -1;
+
+ hd->taken = 1;
+ perf_hpp__column_register(fmt);
return 0;
}
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 11/29] perf hists: Remove perf_hpp__column_(disable|enable)
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (9 preceding siblings ...)
2016-02-03 16:33 ` [PATCH 10/29] perf hists: Allocate output sort field Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 12/29] perf hists: Properly release format fields Arnaldo Carvalho de Melo
` (18 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Those functions are no longer needed. They operate over perf_hpp__format
array which is now used only as template for dynamic entries.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-11-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 12 ------------
tools/perf/util/hist.h | 2 --
2 files changed, 14 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index c877c52ff4bc..80d63a997287 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -519,18 +519,6 @@ void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
list_add_tail(&format->sort_list, &perf_hpp__sort_list);
}
-void perf_hpp__column_enable(unsigned col)
-{
- BUG_ON(col >= PERF_HPP__MAX_INDEX);
- perf_hpp__column_register(&perf_hpp__format[col]);
-}
-
-void perf_hpp__column_disable(unsigned col)
-{
- BUG_ON(col >= PERF_HPP__MAX_INDEX);
- perf_hpp__column_unregister(&perf_hpp__format[col]);
-}
-
void perf_hpp__cancel_cumulate(void)
{
struct perf_hpp_fmt *fmt, *acc, *ovh, *tmp;
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 9a240d7b8d3b..1f9e21dd53f3 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -259,8 +259,6 @@ enum {
void perf_hpp__init(void);
void perf_hpp__column_register(struct perf_hpp_fmt *format);
void perf_hpp__column_unregister(struct perf_hpp_fmt *format);
-void perf_hpp__column_enable(unsigned col);
-void perf_hpp__column_disable(unsigned col);
void perf_hpp__cancel_cumulate(void);
void perf_hpp__register_sort_field(struct perf_hpp_fmt *format);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 12/29] perf hists: Properly release format fields
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (10 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 11/29] perf hists: Remove perf_hpp__column_(disable|enable) Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 13/29] perf hists: Separate sort fields parsing into setup_sort_list function Arnaldo Carvalho de Melo
` (17 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
With multiple list holding format entries, we need the support properly
releasing format output/sort fields.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-12-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 8 ++++++++
tools/perf/util/hist.h | 1 +
tools/perf/util/sort.c | 24 ++++++++++++++++++++++++
3 files changed, 33 insertions(+)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 80d63a997287..2cd1a03bf375 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -583,6 +583,12 @@ next:
}
}
+static void fmt_free(struct perf_hpp_fmt *fmt)
+{
+ if (fmt->free)
+ fmt->free(fmt);
+}
+
void perf_hpp__reset_output_field(void)
{
struct perf_hpp_fmt *fmt, *tmp;
@@ -591,12 +597,14 @@ void perf_hpp__reset_output_field(void)
perf_hpp__for_each_format_safe(fmt, tmp) {
list_del_init(&fmt->list);
list_del_init(&fmt->sort_list);
+ fmt_free(fmt);
}
/* reset sort keys */
perf_hpp__for_each_sort_list_safe(fmt, tmp) {
list_del_init(&fmt->list);
list_del_init(&fmt->sort_list);
+ fmt_free(fmt);
}
}
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 1f9e21dd53f3..f3bcf2d38733 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -216,6 +216,7 @@ struct perf_hpp_fmt {
int64_t (*sort)(struct perf_hpp_fmt *fmt,
struct hist_entry *a, struct hist_entry *b);
bool (*equal)(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b);
+ void (*free)(struct perf_hpp_fmt *fmt);
struct list_head list;
struct list_head sort_list;
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 52e4a3674985..b5389a54356d 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1545,6 +1545,14 @@ static bool __sort__hpp_equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
return hse_a->se == hse_b->se;
}
+static void hse_free(struct perf_hpp_fmt *fmt)
+{
+ struct hpp_sort_entry *hse;
+
+ hse = container_of(fmt, struct hpp_sort_entry, hpp);
+ free(hse);
+}
+
static struct hpp_sort_entry *
__sort_dimension__alloc_hpp(struct sort_dimension *sd)
{
@@ -1567,6 +1575,7 @@ __sort_dimension__alloc_hpp(struct sort_dimension *sd)
hse->hpp.collapse = __sort__hpp_collapse;
hse->hpp.sort = __sort__hpp_sort;
hse->hpp.equal = __sort__hpp_equal;
+ hse->hpp.free = hse_free;
INIT_LIST_HEAD(&hse->hpp.list);
INIT_LIST_HEAD(&hse->hpp.sort_list);
@@ -1577,6 +1586,11 @@ __sort_dimension__alloc_hpp(struct sort_dimension *sd)
return hse;
}
+static void hpp_free(struct perf_hpp_fmt *fmt)
+{
+ free(fmt);
+}
+
static struct perf_hpp_fmt *__hpp_dimension__alloc_hpp(struct hpp_dimension *hd)
{
struct perf_hpp_fmt *fmt;
@@ -1585,6 +1599,7 @@ static struct perf_hpp_fmt *__hpp_dimension__alloc_hpp(struct hpp_dimension *hd)
if (fmt) {
INIT_LIST_HEAD(&fmt->list);
INIT_LIST_HEAD(&fmt->sort_list);
+ fmt->free = hpp_free;
}
return fmt;
@@ -1818,6 +1833,14 @@ bool perf_hpp__is_dynamic_entry(struct perf_hpp_fmt *fmt)
return fmt->cmp == __sort__hde_cmp;
}
+static void hde_free(struct perf_hpp_fmt *fmt)
+{
+ struct hpp_dynamic_entry *hde;
+
+ hde = container_of(fmt, struct hpp_dynamic_entry, hpp);
+ free(hde);
+}
+
static struct hpp_dynamic_entry *
__alloc_dynamic_entry(struct perf_evsel *evsel, struct format_field *field)
{
@@ -1842,6 +1865,7 @@ __alloc_dynamic_entry(struct perf_evsel *evsel, struct format_field *field)
hde->hpp.cmp = __sort__hde_cmp;
hde->hpp.collapse = __sort__hde_cmp;
hde->hpp.sort = __sort__hde_cmp;
+ hde->hpp.free = hde_free;
INIT_LIST_HEAD(&hde->hpp.list);
INIT_LIST_HEAD(&hde->hpp.sort_list);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 13/29] perf hists: Separate sort fields parsing into setup_sort_list function
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (11 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 12/29] perf hists: Properly release format fields Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 14/29] perf hists: Separate output fields parsing into setup_output_list function Arnaldo Carvalho de Melo
` (16 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Separating sort fields parsing into setup_sort_list function, so it's
separated from sort_order string setup and could be reused later in
following patches.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-13-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/sort.c | 34 ++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index b5389a54356d..ab1c21a950f6 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2241,6 +2241,26 @@ static int sort_dimension__add(const char *tok,
return -ESRCH;
}
+static int setup_sort_list(char *str, struct perf_evlist *evlist)
+{
+ char *tmp, *tok;
+ int ret = 0;
+
+ for (tok = strtok_r(str, ", ", &tmp);
+ tok; tok = strtok_r(NULL, ", ", &tmp)) {
+ ret = sort_dimension__add(tok, evlist);
+ if (ret == -EINVAL) {
+ error("Invalid --sort key: `%s'", tok);
+ break;
+ } else if (ret == -ESRCH) {
+ error("Unknown --sort key: `%s'", tok);
+ break;
+ }
+ }
+
+ return ret;
+}
+
static const char *get_default_sort_order(struct perf_evlist *evlist)
{
const char *default_sort_orders[] = {
@@ -2335,7 +2355,7 @@ static char *setup_overhead(char *keys)
static int __setup_sorting(struct perf_evlist *evlist)
{
- char *tmp, *tok, *str;
+ char *str;
const char *sort_keys;
int ret = 0;
@@ -2373,17 +2393,7 @@ static int __setup_sorting(struct perf_evlist *evlist)
}
}
- for (tok = strtok_r(str, ", ", &tmp);
- tok; tok = strtok_r(NULL, ", ", &tmp)) {
- ret = sort_dimension__add(tok, evlist);
- if (ret == -EINVAL) {
- error("Invalid --sort key: `%s'", tok);
- break;
- } else if (ret == -ESRCH) {
- error("Unknown --sort key: `%s'", tok);
- break;
- }
- }
+ ret = setup_sort_list(str, evlist);
free(str);
return ret;
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 14/29] perf hists: Separate output fields parsing into setup_output_list function
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (12 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 13/29] perf hists: Separate sort fields parsing into setup_sort_list function Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 15/29] perf hists: Introduce struct perf_hpp_list Arnaldo Carvalho de Melo
` (15 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Separating output fields parsing into setup_output_list function, so
it's separated from field_order string setup and could be reused later
in following patches.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-14-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/sort.c | 34 ++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index ab1c21a950f6..36dbd5554f0e 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2535,6 +2535,26 @@ static int output_field_add(char *tok)
return -ESRCH;
}
+static int setup_output_list(char *str)
+{
+ char *tmp, *tok;
+ int ret = 0;
+
+ for (tok = strtok_r(str, ", ", &tmp);
+ tok; tok = strtok_r(NULL, ", ", &tmp)) {
+ ret = output_field_add(tok);
+ if (ret == -EINVAL) {
+ error("Invalid --fields key: `%s'", tok);
+ break;
+ } else if (ret == -ESRCH) {
+ error("Unknown --fields key: `%s'", tok);
+ break;
+ }
+ }
+
+ return ret;
+}
+
static void reset_dimensions(void)
{
unsigned int i;
@@ -2559,7 +2579,7 @@ bool is_strict_order(const char *order)
static int __setup_output_field(void)
{
- char *tmp, *tok, *str, *strp;
+ char *str, *strp;
int ret = -EINVAL;
if (field_order == NULL)
@@ -2579,17 +2599,7 @@ static int __setup_output_field(void)
goto out;
}
- for (tok = strtok_r(strp, ", ", &tmp);
- tok; tok = strtok_r(NULL, ", ", &tmp)) {
- ret = output_field_add(tok);
- if (ret == -EINVAL) {
- error("Invalid --fields key: `%s'", tok);
- break;
- } else if (ret == -ESRCH) {
- error("Unknown --fields key: `%s'", tok);
- break;
- }
- }
+ ret = setup_output_list(strp);
out:
free(str);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 15/29] perf hists: Introduce struct perf_hpp_list
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (13 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 14/29] perf hists: Separate output fields parsing into setup_output_list function Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 16/29] perf hists: Introduce perf_hpp_list__init function Arnaldo Carvalho de Melo
` (14 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Gather output and sort lists under struct perf_hpp_list, so we could
have multiple instancies of sort/output format entries.
Replacing current perf_hpp__list and perf_hpp__sort_list lists with
single perf_hpp_list instance.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-15-git-send-email-jolsa@kernel.org
[ Renamed fields to .{fields,sorts} as suggested by Namhyung and acked by Jiri ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 11 ++++++-----
tools/perf/util/hist.h | 16 ++++++++++------
2 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 2cd1a03bf375..74dbeac4753b 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -436,9 +436,10 @@ struct perf_hpp_fmt perf_hpp__format[] = {
HPP__PRINT_FNS("Period", period, PERIOD)
};
-LIST_HEAD(perf_hpp__list);
-LIST_HEAD(perf_hpp__sort_list);
-
+struct perf_hpp_list perf_hpp_list = {
+ .fields = LIST_HEAD_INIT(perf_hpp_list.fields),
+ .sorts = LIST_HEAD_INIT(perf_hpp_list.sorts),
+};
#undef HPP__COLOR_PRINT_FNS
#undef HPP__COLOR_ACC_PRINT_FNS
@@ -506,7 +507,7 @@ void perf_hpp__init(void)
void perf_hpp__column_register(struct perf_hpp_fmt *format)
{
- list_add_tail(&format->list, &perf_hpp__list);
+ list_add_tail(&format->list, &perf_hpp_list.fields);
}
void perf_hpp__column_unregister(struct perf_hpp_fmt *format)
@@ -516,7 +517,7 @@ void perf_hpp__column_unregister(struct perf_hpp_fmt *format)
void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
{
- list_add_tail(&format->sort_list, &perf_hpp__sort_list);
+ list_add_tail(&format->sort_list, &perf_hpp_list.sorts);
}
void perf_hpp__cancel_cumulate(void)
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index f3bcf2d38733..203397a6ea07 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -226,20 +226,24 @@ struct perf_hpp_fmt {
int idx;
};
-extern struct list_head perf_hpp__list;
-extern struct list_head perf_hpp__sort_list;
+struct perf_hpp_list {
+ struct list_head fields;
+ struct list_head sorts;
+};
+
+extern struct perf_hpp_list perf_hpp_list;
#define perf_hpp__for_each_format(format) \
- list_for_each_entry(format, &perf_hpp__list, list)
+ list_for_each_entry(format, &perf_hpp_list.fields, list)
#define perf_hpp__for_each_format_safe(format, tmp) \
- list_for_each_entry_safe(format, tmp, &perf_hpp__list, list)
+ list_for_each_entry_safe(format, tmp, &perf_hpp_list.fields, list)
#define perf_hpp__for_each_sort_list(format) \
- list_for_each_entry(format, &perf_hpp__sort_list, sort_list)
+ list_for_each_entry(format, &perf_hpp_list.sorts, sort_list)
#define perf_hpp__for_each_sort_list_safe(format, tmp) \
- list_for_each_entry_safe(format, tmp, &perf_hpp__sort_list, sort_list)
+ list_for_each_entry_safe(format, tmp, &perf_hpp_list.sorts, sort_list)
extern struct perf_hpp_fmt perf_hpp__format[];
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 16/29] perf hists: Introduce perf_hpp_list__init function
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (14 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 15/29] perf hists: Introduce struct perf_hpp_list Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 17/29] perf hists: Add perf_hpp_list register helpers Arnaldo Carvalho de Melo
` (13 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Introducing perf_hpp_list__init function to have an easy way to
initialize perf_hpp_list struct.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-16-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/hist.c | 6 ++++++
tools/perf/util/hist.h | 2 ++
2 files changed, 8 insertions(+)
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index d07955c145e5..b762ecc31505 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1642,3 +1642,9 @@ int hists__init(void)
return err;
}
+
+void perf_hpp_list__init(struct perf_hpp_list *list)
+{
+ INIT_LIST_HEAD(&list->fields);
+ INIT_LIST_HEAD(&list->sorts);
+}
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 203397a6ea07..e22f98e3fc6d 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -386,4 +386,6 @@ int parse_filter_percentage(const struct option *opt __maybe_unused,
const char *arg, int unset __maybe_unused);
int perf_hist_config(const char *var, const char *value);
+void perf_hpp_list__init(struct perf_hpp_list *list);
+
#endif /* __PERF_HIST_H */
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 17/29] perf hists: Add perf_hpp_list register helpers
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (15 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 16/29] perf hists: Introduce perf_hpp_list__init function Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 18/29] perf hists: Pass perf_hpp_list all the way through setup_output_list Arnaldo Carvalho de Melo
` (12 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Adding 2 perf_hpp_list register helpers:
perf_hpp_list__column_register()
perf_hpp_list__register_sort_field()
to be called within existing helpers:
perf_hpp__column_register()
perf_hpp__register_sort_field()
to register format entries within global perf_hpp_list object.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-17-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 14 ++++++++------
tools/perf/util/hist.h | 18 +++++++++++++++---
2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 74dbeac4753b..1655c0d9c089 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -505,19 +505,21 @@ void perf_hpp__init(void)
hpp_dimension__add_output(PERF_HPP__PERIOD);
}
-void perf_hpp__column_register(struct perf_hpp_fmt *format)
+void perf_hpp_list__column_register(struct perf_hpp_list *list,
+ struct perf_hpp_fmt *format)
{
- list_add_tail(&format->list, &perf_hpp_list.fields);
+ list_add_tail(&format->list, &list->fields);
}
-void perf_hpp__column_unregister(struct perf_hpp_fmt *format)
+void perf_hpp_list__register_sort_field(struct perf_hpp_list *list,
+ struct perf_hpp_fmt *format)
{
- list_del(&format->list);
+ list_add_tail(&format->sort_list, &list->sorts);
}
-void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
+void perf_hpp__column_unregister(struct perf_hpp_fmt *format)
{
- list_add_tail(&format->sort_list, &perf_hpp_list.sorts);
+ list_del(&format->list);
}
void perf_hpp__cancel_cumulate(void)
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index e22f98e3fc6d..a7769d778374 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -233,6 +233,21 @@ struct perf_hpp_list {
extern struct perf_hpp_list perf_hpp_list;
+void perf_hpp_list__column_register(struct perf_hpp_list *list,
+ struct perf_hpp_fmt *format);
+void perf_hpp_list__register_sort_field(struct perf_hpp_list *list,
+ struct perf_hpp_fmt *format);
+
+static inline void perf_hpp__column_register(struct perf_hpp_fmt *format)
+{
+ perf_hpp_list__column_register(&perf_hpp_list, format);
+}
+
+static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
+{
+ perf_hpp_list__register_sort_field(&perf_hpp_list, format);
+}
+
#define perf_hpp__for_each_format(format) \
list_for_each_entry(format, &perf_hpp_list.fields, list)
@@ -262,11 +277,8 @@ enum {
};
void perf_hpp__init(void);
-void perf_hpp__column_register(struct perf_hpp_fmt *format);
void perf_hpp__column_unregister(struct perf_hpp_fmt *format);
void perf_hpp__cancel_cumulate(void);
-
-void perf_hpp__register_sort_field(struct perf_hpp_fmt *format);
void perf_hpp__setup_output_field(void);
void perf_hpp__reset_output_field(void);
void perf_hpp__append_sort_keys(void);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 18/29] perf hists: Pass perf_hpp_list all the way through setup_output_list
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (16 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 17/29] perf hists: Add perf_hpp_list register helpers Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 19/29] perf hists: Introduce perf_hpp_list__for_each_format macro Arnaldo Carvalho de Melo
` (11 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Passing perf_hpp_list all the way through setup_output_list so the
output entry could be added on the arbitrary list.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-19-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/sort.c | 33 ++++++++++++++++++---------------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 36dbd5554f0e..f643bed8f63b 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -1616,14 +1616,15 @@ static int __sort_dimension__add_hpp_sort(struct sort_dimension *sd)
return 0;
}
-static int __sort_dimension__add_hpp_output(struct sort_dimension *sd)
+static int __sort_dimension__add_hpp_output(struct perf_hpp_list *list,
+ struct sort_dimension *sd)
{
struct hpp_sort_entry *hse = __sort_dimension__alloc_hpp(sd);
if (hse == NULL)
return -1;
- perf_hpp__column_register(&hse->hpp);
+ perf_hpp_list__column_register(list, &hse->hpp);
return 0;
}
@@ -2117,19 +2118,21 @@ static int __hpp_dimension__add(struct hpp_dimension *hd)
return 0;
}
-static int __sort_dimension__add_output(struct sort_dimension *sd)
+static int __sort_dimension__add_output(struct perf_hpp_list *list,
+ struct sort_dimension *sd)
{
if (sd->taken)
return 0;
- if (__sort_dimension__add_hpp_output(sd) < 0)
+ if (__sort_dimension__add_hpp_output(list, sd) < 0)
return -1;
sd->taken = 1;
return 0;
}
-static int __hpp_dimension__add_output(struct hpp_dimension *hd)
+static int __hpp_dimension__add_output(struct perf_hpp_list *list,
+ struct hpp_dimension *hd)
{
struct perf_hpp_fmt *fmt;
@@ -2141,14 +2144,14 @@ static int __hpp_dimension__add_output(struct hpp_dimension *hd)
return -1;
hd->taken = 1;
- perf_hpp__column_register(fmt);
+ perf_hpp_list__column_register(list, fmt);
return 0;
}
int hpp_dimension__add_output(unsigned col)
{
BUG_ON(col >= PERF_HPP__MAX_INDEX);
- return __hpp_dimension__add_output(&hpp_sort_dimensions[col]);
+ return __hpp_dimension__add_output(&perf_hpp_list, &hpp_sort_dimensions[col]);
}
static int sort_dimension__add(const char *tok,
@@ -2492,7 +2495,7 @@ void sort__setup_elide(FILE *output)
}
}
-static int output_field_add(char *tok)
+static int output_field_add(struct perf_hpp_list *list, char *tok)
{
unsigned int i;
@@ -2502,7 +2505,7 @@ static int output_field_add(char *tok)
if (strncasecmp(tok, sd->name, strlen(tok)))
continue;
- return __sort_dimension__add_output(sd);
+ return __sort_dimension__add_output(list, sd);
}
for (i = 0; i < ARRAY_SIZE(hpp_sort_dimensions); i++) {
@@ -2511,7 +2514,7 @@ static int output_field_add(char *tok)
if (strncasecmp(tok, hd->name, strlen(tok)))
continue;
- return __hpp_dimension__add_output(hd);
+ return __hpp_dimension__add_output(list, hd);
}
for (i = 0; i < ARRAY_SIZE(bstack_sort_dimensions); i++) {
@@ -2520,7 +2523,7 @@ static int output_field_add(char *tok)
if (strncasecmp(tok, sd->name, strlen(tok)))
continue;
- return __sort_dimension__add_output(sd);
+ return __sort_dimension__add_output(list, sd);
}
for (i = 0; i < ARRAY_SIZE(memory_sort_dimensions); i++) {
@@ -2529,20 +2532,20 @@ static int output_field_add(char *tok)
if (strncasecmp(tok, sd->name, strlen(tok)))
continue;
- return __sort_dimension__add_output(sd);
+ return __sort_dimension__add_output(list, sd);
}
return -ESRCH;
}
-static int setup_output_list(char *str)
+static int setup_output_list(struct perf_hpp_list *list, char *str)
{
char *tmp, *tok;
int ret = 0;
for (tok = strtok_r(str, ", ", &tmp);
tok; tok = strtok_r(NULL, ", ", &tmp)) {
- ret = output_field_add(tok);
+ ret = output_field_add(list, tok);
if (ret == -EINVAL) {
error("Invalid --fields key: `%s'", tok);
break;
@@ -2599,7 +2602,7 @@ static int __setup_output_field(void)
goto out;
}
- ret = setup_output_list(strp);
+ ret = setup_output_list(&perf_hpp_list, strp);
out:
free(str);
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 19/29] perf hists: Introduce perf_hpp_list__for_each_format macro
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (17 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 18/29] perf hists: Pass perf_hpp_list all the way through setup_output_list Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 20/29] perf hists: Introduce perf_hpp_list__for_each_format_safe macro Arnaldo Carvalho de Melo
` (10 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Introducing perf_hpp_list__for_each_format macro to iterate
perf_hpp_list object's output entries.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-20-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/browsers/hists.c | 8 ++++----
tools/perf/ui/gtk/hists.c | 6 +++---
tools/perf/ui/hist.c | 8 ++++----
tools/perf/ui/stdio/hist.c | 8 ++++----
tools/perf/util/hist.h | 4 ++--
tools/perf/util/sort.c | 8 ++++----
6 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 61d578bf4ffd..df0aedfaea75 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -1095,7 +1095,7 @@ static int hist_browser__show_entry(struct hist_browser *browser,
hist_browser__gotorc(browser, row, 0);
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, entry->hists) ||
column++ < browser->b.horiz_scroll)
continue;
@@ -1175,7 +1175,7 @@ static int hists_browser__scnprintf_headers(struct hist_browser *browser, char *
return ret;
}
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, hists) || column++ < browser->b.horiz_scroll)
continue;
@@ -1441,7 +1441,7 @@ static int hist_browser__fprintf_entry(struct hist_browser *browser,
if (symbol_conf.use_callchain)
printed += fprintf(fp, "%c ", folded_sign);
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, he->hists))
continue;
@@ -2104,7 +2104,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
memset(options, 0, sizeof(options));
memset(actions, 0, sizeof(actions));
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
perf_hpp__reset_width(fmt, hists);
/*
* This is done just once, and activates the horizontal scrolling
diff --git a/tools/perf/ui/gtk/hists.c b/tools/perf/ui/gtk/hists.c
index 0f8dcfdfb10f..eca5151f91d7 100644
--- a/tools/perf/ui/gtk/hists.c
+++ b/tools/perf/ui/gtk/hists.c
@@ -306,7 +306,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists,
nr_cols = 0;
- perf_hpp__for_each_format(fmt)
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt)
col_types[nr_cols++] = G_TYPE_STRING;
store = gtk_tree_store_newv(nr_cols, col_types);
@@ -317,7 +317,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists,
col_idx = 0;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, hists))
continue;
@@ -367,7 +367,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists,
col_idx = 0;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, h->hists))
continue;
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 1655c0d9c089..7b5e8cedf853 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -556,7 +556,7 @@ void perf_hpp__setup_output_field(void)
perf_hpp__for_each_sort_list(fmt) {
struct perf_hpp_fmt *pos;
- perf_hpp__for_each_format(pos) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, pos) {
if (fmt_equal(fmt, pos))
goto next;
}
@@ -572,7 +572,7 @@ void perf_hpp__append_sort_keys(void)
struct perf_hpp_fmt *fmt;
/* append output fields to sort keys */
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
struct perf_hpp_fmt *pos;
perf_hpp__for_each_sort_list(pos) {
@@ -621,7 +621,7 @@ unsigned int hists__sort_list_width(struct hists *hists)
bool first = true;
struct perf_hpp dummy_hpp;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, hists))
continue;
@@ -674,7 +674,7 @@ void perf_hpp__set_user_width(const char *width_list_str)
struct perf_hpp_fmt *fmt;
const char *ptr = width_list_str;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
char *p;
int len = strtol(ptr, &p, 10);
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index 691e52ce7510..83e0bf2ab986 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -384,7 +384,7 @@ static int hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp)
if (symbol_conf.exclude_other && !he->parent)
return 0;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, he->hists))
continue;
@@ -453,7 +453,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
init_rem_hits();
- perf_hpp__for_each_format(fmt)
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt)
perf_hpp__reset_width(fmt, hists);
if (symbol_conf.col_width_list_str)
@@ -464,7 +464,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
fprintf(fp, "# ");
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, hists))
continue;
@@ -488,7 +488,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
fprintf(fp, "# ");
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
unsigned int i;
if (perf_hpp__should_skip(fmt, hists))
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index a7769d778374..eadffca1a501 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -248,8 +248,8 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
perf_hpp_list__register_sort_field(&perf_hpp_list, format);
}
-#define perf_hpp__for_each_format(format) \
- list_for_each_entry(format, &perf_hpp_list.fields, list)
+#define perf_hpp_list__for_each_format(_list, format) \
+ list_for_each_entry(format, &(_list)->fields, list)
#define perf_hpp__for_each_format_safe(format, tmp) \
list_for_each_entry_safe(format, tmp, &perf_hpp_list.fields, list)
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index f643bed8f63b..1e134ff56ad4 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2407,7 +2407,7 @@ void perf_hpp__set_elide(int idx, bool elide)
struct perf_hpp_fmt *fmt;
struct hpp_sort_entry *hse;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (!perf_hpp__is_sort_entry(fmt))
continue;
@@ -2467,7 +2467,7 @@ void sort__setup_elide(FILE *output)
struct perf_hpp_fmt *fmt;
struct hpp_sort_entry *hse;
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (!perf_hpp__is_sort_entry(fmt))
continue;
@@ -2479,7 +2479,7 @@ void sort__setup_elide(FILE *output)
* It makes no sense to elide all of sort entries.
* Just revert them to show up again.
*/
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (!perf_hpp__is_sort_entry(fmt))
continue;
@@ -2487,7 +2487,7 @@ void sort__setup_elide(FILE *output)
return;
}
- perf_hpp__for_each_format(fmt) {
+ perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
if (!perf_hpp__is_sort_entry(fmt))
continue;
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 20/29] perf hists: Introduce perf_hpp_list__for_each_format_safe macro
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (18 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 19/29] perf hists: Introduce perf_hpp_list__for_each_format macro Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 21/29] perf hists: Introduce perf_hpp_list__for_each_sort_list macro Arnaldo Carvalho de Melo
` (9 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Introducing perf_hpp_list__for_each_format_safe macro to iterate
perf_hpp_list object's output entries safely.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-21-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 4 ++--
tools/perf/util/hist.h | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 7b5e8cedf853..348706a908f9 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -532,7 +532,7 @@ void perf_hpp__cancel_cumulate(void)
ovh = &perf_hpp__format[PERF_HPP__OVERHEAD];
acc = &perf_hpp__format[PERF_HPP__OVERHEAD_ACC];
- perf_hpp__for_each_format_safe(fmt, tmp) {
+ perf_hpp_list__for_each_format_safe(&perf_hpp_list, fmt, tmp) {
if (acc->equal(acc, fmt)) {
perf_hpp__column_unregister(fmt);
continue;
@@ -597,7 +597,7 @@ void perf_hpp__reset_output_field(void)
struct perf_hpp_fmt *fmt, *tmp;
/* reset output fields */
- perf_hpp__for_each_format_safe(fmt, tmp) {
+ perf_hpp_list__for_each_format_safe(&perf_hpp_list, fmt, tmp) {
list_del_init(&fmt->list);
list_del_init(&fmt->sort_list);
fmt_free(fmt);
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index eadffca1a501..f5b2309de16e 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -251,8 +251,8 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
#define perf_hpp_list__for_each_format(_list, format) \
list_for_each_entry(format, &(_list)->fields, list)
-#define perf_hpp__for_each_format_safe(format, tmp) \
- list_for_each_entry_safe(format, tmp, &perf_hpp_list.fields, list)
+#define perf_hpp_list__for_each_format_safe(_list, format, tmp) \
+ list_for_each_entry_safe(format, tmp, &(_list)->fields, list)
#define perf_hpp__for_each_sort_list(format) \
list_for_each_entry(format, &perf_hpp_list.sorts, sort_list)
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 21/29] perf hists: Introduce perf_hpp_list__for_each_sort_list macro
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (19 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 20/29] perf hists: Introduce perf_hpp_list__for_each_format_safe macro Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 22/29] perf hists: Introduce perf_hpp_list__for_each_sort_list_safe macro Arnaldo Carvalho de Melo
` (8 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Introducing perf_hpp_list__for_each_sort_list macro to iterate
perf_hpp_list object's sort entries.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-22-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 4 ++--
tools/perf/util/hist.c | 6 +++---
tools/perf/util/hist.h | 4 ++--
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 348706a908f9..f09eabe18167 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -553,7 +553,7 @@ void perf_hpp__setup_output_field(void)
struct perf_hpp_fmt *fmt;
/* append sort keys to output field */
- perf_hpp__for_each_sort_list(fmt) {
+ perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
struct perf_hpp_fmt *pos;
perf_hpp_list__for_each_format(&perf_hpp_list, pos) {
@@ -575,7 +575,7 @@ void perf_hpp__append_sort_keys(void)
perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
struct perf_hpp_fmt *pos;
- perf_hpp__for_each_sort_list(pos) {
+ perf_hpp_list__for_each_sort_list(&perf_hpp_list, pos) {
if (fmt_equal(fmt, pos))
goto next;
}
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index b762ecc31505..dea475d1fab0 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -961,7 +961,7 @@ hist_entry__cmp(struct hist_entry *left, struct hist_entry *right)
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;
- perf_hpp__for_each_sort_list(fmt) {
+ perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
cmp = fmt->cmp(fmt, left, right);
if (cmp)
break;
@@ -976,7 +976,7 @@ hist_entry__collapse(struct hist_entry *left, struct hist_entry *right)
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;
- perf_hpp__for_each_sort_list(fmt) {
+ perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
cmp = fmt->collapse(fmt, left, right);
if (cmp)
break;
@@ -1120,7 +1120,7 @@ static int hist_entry__sort(struct hist_entry *a, struct hist_entry *b)
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;
- perf_hpp__for_each_sort_list(fmt) {
+ perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
if (perf_hpp__should_skip(fmt, a->hists))
continue;
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index f5b2309de16e..c9b2ea4a4929 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -254,8 +254,8 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
#define perf_hpp_list__for_each_format_safe(_list, format, tmp) \
list_for_each_entry_safe(format, tmp, &(_list)->fields, list)
-#define perf_hpp__for_each_sort_list(format) \
- list_for_each_entry(format, &perf_hpp_list.sorts, sort_list)
+#define perf_hpp_list__for_each_sort_list(_list, format) \
+ list_for_each_entry(format, &(_list)->sorts, sort_list)
#define perf_hpp__for_each_sort_list_safe(format, tmp) \
list_for_each_entry_safe(format, tmp, &perf_hpp_list.sorts, sort_list)
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 22/29] perf hists: Introduce perf_hpp_list__for_each_sort_list_safe macro
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (20 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 21/29] perf hists: Introduce perf_hpp_list__for_each_sort_list macro Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 23/29] perf hists: Add struct perf_hpp_list argument to helper functions Arnaldo Carvalho de Melo
` (7 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Introducing perf_hpp_list__for_each_sort_list_safe macro
to iterate perf_hpp_list object's sort entries safely.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-23-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 2 +-
tools/perf/util/hist.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index f09eabe18167..9cda51edfdbd 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -604,7 +604,7 @@ void perf_hpp__reset_output_field(void)
}
/* reset sort keys */
- perf_hpp__for_each_sort_list_safe(fmt, tmp) {
+ perf_hpp_list__for_each_sort_list_safe(&perf_hpp_list, fmt, tmp) {
list_del_init(&fmt->list);
list_del_init(&fmt->sort_list);
fmt_free(fmt);
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index c9b2ea4a4929..61d35a9f928b 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -257,8 +257,8 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
#define perf_hpp_list__for_each_sort_list(_list, format) \
list_for_each_entry(format, &(_list)->sorts, sort_list)
-#define perf_hpp__for_each_sort_list_safe(format, tmp) \
- list_for_each_entry_safe(format, tmp, &perf_hpp_list.sorts, sort_list)
+#define perf_hpp_list__for_each_sort_list_safe(_list, format, tmp) \
+ list_for_each_entry_safe(format, tmp, &(_list)->sorts, sort_list)
extern struct perf_hpp_fmt perf_hpp__format[];
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 23/29] perf hists: Add struct perf_hpp_list argument to helper functions
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (21 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 22/29] perf hists: Introduce perf_hpp_list__for_each_sort_list_safe macro Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 24/29] perf tools: Add hpp_list into struct hists object Arnaldo Carvalho de Melo
` (6 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
Adding struct perf_hpp_list argument to following helper functions:
void perf_hpp__setup_output_field(struct perf_hpp_list *list);
void perf_hpp__reset_output_field(struct perf_hpp_list *list);
void perf_hpp__append_sort_keys(struct perf_hpp_list *list);
so they could be used on hists's hpp_list.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-24-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/hist.c | 19 ++++++++++---------
tools/perf/util/hist.h | 7 ++++---
tools/perf/util/sort.c | 6 +++---
3 files changed, 17 insertions(+), 15 deletions(-)
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 9cda51edfdbd..8075d4cc54a8 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -548,15 +548,15 @@ static bool fmt_equal(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b)
return a->equal && a->equal(a, b);
}
-void perf_hpp__setup_output_field(void)
+void perf_hpp__setup_output_field(struct perf_hpp_list *list)
{
struct perf_hpp_fmt *fmt;
/* append sort keys to output field */
- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ perf_hpp_list__for_each_sort_list(list, fmt) {
struct perf_hpp_fmt *pos;
- perf_hpp_list__for_each_format(&perf_hpp_list, pos) {
+ perf_hpp_list__for_each_format(list, pos) {
if (fmt_equal(fmt, pos))
goto next;
}
@@ -567,15 +567,15 @@ next:
}
}
-void perf_hpp__append_sort_keys(void)
+void perf_hpp__append_sort_keys(struct perf_hpp_list *list)
{
struct perf_hpp_fmt *fmt;
/* append output fields to sort keys */
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ perf_hpp_list__for_each_format(list, fmt) {
struct perf_hpp_fmt *pos;
- perf_hpp_list__for_each_sort_list(&perf_hpp_list, pos) {
+ perf_hpp_list__for_each_sort_list(list, pos) {
if (fmt_equal(fmt, pos))
goto next;
}
@@ -586,25 +586,26 @@ next:
}
}
+
static void fmt_free(struct perf_hpp_fmt *fmt)
{
if (fmt->free)
fmt->free(fmt);
}
-void perf_hpp__reset_output_field(void)
+void perf_hpp__reset_output_field(struct perf_hpp_list *list)
{
struct perf_hpp_fmt *fmt, *tmp;
/* reset output fields */
- perf_hpp_list__for_each_format_safe(&perf_hpp_list, fmt, tmp) {
+ perf_hpp_list__for_each_format_safe(list, fmt, tmp) {
list_del_init(&fmt->list);
list_del_init(&fmt->sort_list);
fmt_free(fmt);
}
/* reset sort keys */
- perf_hpp_list__for_each_sort_list_safe(&perf_hpp_list, fmt, tmp) {
+ perf_hpp_list__for_each_sort_list_safe(list, fmt, tmp) {
list_del_init(&fmt->list);
list_del_init(&fmt->sort_list);
fmt_free(fmt);
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 61d35a9f928b..a39c9c1159ff 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -279,9 +279,10 @@ enum {
void perf_hpp__init(void);
void perf_hpp__column_unregister(struct perf_hpp_fmt *format);
void perf_hpp__cancel_cumulate(void);
-void perf_hpp__setup_output_field(void);
-void perf_hpp__reset_output_field(void);
-void perf_hpp__append_sort_keys(void);
+void perf_hpp__setup_output_field(struct perf_hpp_list *list);
+void perf_hpp__reset_output_field(struct perf_hpp_list *list);
+void perf_hpp__append_sort_keys(struct perf_hpp_list *list);
+
bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format);
bool perf_hpp__is_dynamic_entry(struct perf_hpp_fmt *format);
diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
index 1e134ff56ad4..de620f7f40f4 100644
--- a/tools/perf/util/sort.c
+++ b/tools/perf/util/sort.c
@@ -2636,9 +2636,9 @@ int setup_sorting(struct perf_evlist *evlist)
return err;
/* copy sort keys to output fields */
- perf_hpp__setup_output_field();
+ perf_hpp__setup_output_field(&perf_hpp_list);
/* and then copy output fields to sort keys */
- perf_hpp__append_sort_keys();
+ perf_hpp__append_sort_keys(&perf_hpp_list);
return 0;
}
@@ -2654,5 +2654,5 @@ void reset_output_field(void)
sort_order = NULL;
reset_dimensions();
- perf_hpp__reset_output_field();
+ perf_hpp__reset_output_field(&perf_hpp_list);
}
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 24/29] perf tools: Add hpp_list into struct hists object
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (22 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 23/29] perf hists: Add struct perf_hpp_list argument to helper functions Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 25/29] perf hists: Introduce hists__for_each_format macro Arnaldo Carvalho de Melo
` (5 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
From: Jiri Olsa <jolsa@kernel.org>
Adding hpp_list into struct hists object.
Initializing struct hists_evsel hists object to carry global
perf_hpp_list list.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-25-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/hist.c | 5 +++--
tools/perf/util/hist.h | 3 ++-
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index dea475d1fab0..2b9cc9129692 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -1578,7 +1578,7 @@ int perf_hist_config(const char *var, const char *value)
return 0;
}
-int __hists__init(struct hists *hists)
+int __hists__init(struct hists *hists, struct perf_hpp_list *hpp_list)
{
memset(hists, 0, sizeof(*hists));
hists->entries_in_array[0] = hists->entries_in_array[1] = RB_ROOT;
@@ -1587,6 +1587,7 @@ int __hists__init(struct hists *hists)
hists->entries = RB_ROOT;
pthread_mutex_init(&hists->lock, NULL);
hists->socket_filter = -1;
+ hists->hpp_list = hpp_list;
return 0;
}
@@ -1623,7 +1624,7 @@ static int hists_evsel__init(struct perf_evsel *evsel)
{
struct hists *hists = evsel__hists(evsel);
- __hists__init(hists);
+ __hists__init(hists, &perf_hpp_list);
return 0;
}
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index a39c9c1159ff..b296ff5b9683 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -75,6 +75,7 @@ struct hists {
u64 event_stream;
u16 col_len[HISTC_NR_COLS];
int socket_filter;
+ struct perf_hpp_list *hpp_list;
};
struct hist_entry_iter;
@@ -186,7 +187,7 @@ static inline struct hists *evsel__hists(struct perf_evsel *evsel)
}
int hists__init(void);
-int __hists__init(struct hists *hists);
+int __hists__init(struct hists *hists, struct perf_hpp_list *hpp_list);
struct rb_root *hists__get_rotate_entries_in(struct hists *hists);
bool hists__collapse_insert_entry(struct hists *hists __maybe_unused,
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 25/29] perf hists: Introduce hists__for_each_format macro
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (23 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 24/29] perf tools: Add hpp_list into struct hists object Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 26/29] perf hists: Introduce hists__for_each_sort_list macro Arnaldo Carvalho de Melo
` (4 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
With the hist object having the perf_hpp_list we can now iterate output
format entries based in the hists object. Adding hists__for_each_format
macro to do that.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-26-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/browsers/hists.c | 8 ++++----
tools/perf/ui/gtk/hists.c | 6 +++---
tools/perf/ui/hist.c | 2 +-
tools/perf/ui/stdio/hist.c | 8 ++++----
tools/perf/util/hist.h | 3 +++
5 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index df0aedfaea75..3a1e0965a8fd 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -1095,7 +1095,7 @@ static int hist_browser__show_entry(struct hist_browser *browser,
hist_browser__gotorc(browser, row, 0);
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(browser->hists, fmt) {
if (perf_hpp__should_skip(fmt, entry->hists) ||
column++ < browser->b.horiz_scroll)
continue;
@@ -1175,7 +1175,7 @@ static int hists_browser__scnprintf_headers(struct hist_browser *browser, char *
return ret;
}
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(browser->hists, fmt) {
if (perf_hpp__should_skip(fmt, hists) || column++ < browser->b.horiz_scroll)
continue;
@@ -1441,7 +1441,7 @@ static int hist_browser__fprintf_entry(struct hist_browser *browser,
if (symbol_conf.use_callchain)
printed += fprintf(fp, "%c ", folded_sign);
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(browser->hists, fmt) {
if (perf_hpp__should_skip(fmt, he->hists))
continue;
@@ -2104,7 +2104,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
memset(options, 0, sizeof(options));
memset(actions, 0, sizeof(actions));
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(browser->hists, fmt) {
perf_hpp__reset_width(fmt, hists);
/*
* This is done just once, and activates the horizontal scrolling
diff --git a/tools/perf/ui/gtk/hists.c b/tools/perf/ui/gtk/hists.c
index eca5151f91d7..32cc38a5b57f 100644
--- a/tools/perf/ui/gtk/hists.c
+++ b/tools/perf/ui/gtk/hists.c
@@ -306,7 +306,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists,
nr_cols = 0;
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt)
+ hists__for_each_format(hists, fmt)
col_types[nr_cols++] = G_TYPE_STRING;
store = gtk_tree_store_newv(nr_cols, col_types);
@@ -317,7 +317,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists,
col_idx = 0;
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(hists, fmt) {
if (perf_hpp__should_skip(fmt, hists))
continue;
@@ -367,7 +367,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists,
col_idx = 0;
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(hists, fmt) {
if (perf_hpp__should_skip(fmt, h->hists))
continue;
diff --git a/tools/perf/ui/hist.c b/tools/perf/ui/hist.c
index 8075d4cc54a8..1ba4117d9c2d 100644
--- a/tools/perf/ui/hist.c
+++ b/tools/perf/ui/hist.c
@@ -622,7 +622,7 @@ unsigned int hists__sort_list_width(struct hists *hists)
bool first = true;
struct perf_hpp dummy_hpp;
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(hists, fmt) {
if (perf_hpp__should_skip(fmt, hists))
continue;
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index 83e0bf2ab986..1a6e8f7f38c4 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -384,7 +384,7 @@ static int hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp)
if (symbol_conf.exclude_other && !he->parent)
return 0;
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(he->hists, fmt) {
if (perf_hpp__should_skip(fmt, he->hists))
continue;
@@ -453,7 +453,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
init_rem_hits();
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt)
+ hists__for_each_format(hists, fmt)
perf_hpp__reset_width(fmt, hists);
if (symbol_conf.col_width_list_str)
@@ -464,7 +464,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
fprintf(fp, "# ");
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(hists, fmt) {
if (perf_hpp__should_skip(fmt, hists))
continue;
@@ -488,7 +488,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
fprintf(fp, "# ");
- perf_hpp_list__for_each_format(&perf_hpp_list, fmt) {
+ hists__for_each_format(hists, fmt) {
unsigned int i;
if (perf_hpp__should_skip(fmt, hists))
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index b296ff5b9683..bc900448e36f 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -261,6 +261,9 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
#define perf_hpp_list__for_each_sort_list_safe(_list, format, tmp) \
list_for_each_entry_safe(format, tmp, &(_list)->sorts, sort_list)
+#define hists__for_each_format(hists, format) \
+ perf_hpp_list__for_each_format((hists)->hpp_list, fmt)
+
extern struct perf_hpp_fmt perf_hpp__format[];
enum {
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 26/29] perf hists: Introduce hists__for_each_sort_list macro
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (24 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 25/29] perf hists: Introduce hists__for_each_format macro Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 27/29] perf report: Update documentation of --sort option Arnaldo Carvalho de Melo
` (3 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Jiri Olsa, David Ahern, Namhyung Kim,
Peter Zijlstra, Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Jiri Olsa <jolsa@kernel.org>
With the hist object having the perf_hpp_list we can now iterate sort
format entries based in the hists object. Adding
hists__for_each_sort_list macro to do that.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1453109064-1026-27-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/hist.c | 9 ++++++---
tools/perf/util/hist.h | 3 +++
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c
index 2b9cc9129692..12f2d794dc28 100644
--- a/tools/perf/util/hist.c
+++ b/tools/perf/util/hist.c
@@ -958,10 +958,11 @@ out:
int64_t
hist_entry__cmp(struct hist_entry *left, struct hist_entry *right)
{
+ struct hists *hists = left->hists;
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;
- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ hists__for_each_sort_list(hists, fmt) {
cmp = fmt->cmp(fmt, left, right);
if (cmp)
break;
@@ -973,10 +974,11 @@ hist_entry__cmp(struct hist_entry *left, struct hist_entry *right)
int64_t
hist_entry__collapse(struct hist_entry *left, struct hist_entry *right)
{
+ struct hists *hists = left->hists;
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;
- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ hists__for_each_sort_list(hists, fmt) {
cmp = fmt->collapse(fmt, left, right);
if (cmp)
break;
@@ -1117,10 +1119,11 @@ void hists__collapse_resort(struct hists *hists, struct ui_progress *prog)
static int hist_entry__sort(struct hist_entry *a, struct hist_entry *b)
{
+ struct hists *hists = a->hists;
struct perf_hpp_fmt *fmt;
int64_t cmp = 0;
- perf_hpp_list__for_each_sort_list(&perf_hpp_list, fmt) {
+ hists__for_each_sort_list(hists, fmt) {
if (perf_hpp__should_skip(fmt, a->hists))
continue;
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index bc900448e36f..1c7544a8fe1a 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -264,6 +264,9 @@ static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format)
#define hists__for_each_format(hists, format) \
perf_hpp_list__for_each_format((hists)->hpp_list, fmt)
+#define hists__for_each_sort_list(hists, format) \
+ perf_hpp_list__for_each_sort_list((hists)->hpp_list, fmt)
+
extern struct perf_hpp_fmt perf_hpp__format[];
enum {
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 27/29] perf report: Update documentation of --sort option
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (25 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 26/29] perf hists: Introduce hists__for_each_sort_list macro Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 28/29] perf report: Update documention of --percent-limit option Arnaldo Carvalho de Melo
` (2 subsequent siblings)
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Namhyung Kim, Andi Kleen, David Ahern, Jiri Olsa,
Peter Zijlstra, Stephane Eranian, Wang Nan,
Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Namhyung Kim <namhyung@kernel.org>
The description of the memory sort key (used by --mem-mode) was
misplaced. Move it under the --sort option so that it can be referenced
properly.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1454508683-5735-1-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-report.txt | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 8a301f6afb37..1cb8fac596b1 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -117,6 +117,22 @@ OPTIONS
And default sort keys are changed to comm, dso_from, symbol_from, dso_to
and symbol_to, see '--branch-stack'.
+ If the --mem-mode option is used, the following sort keys are also available
+ (incompatible with --branch-stack):
+ symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline.
+
+ - symbol_daddr: name of data symbol being executed on at the time of sample
+ - dso_daddr: name of library or module containing the data being executed
+ on at the time of the sample
+ - locked: whether the bus was locked at the time of the sample
+ - tlb: type of tlb access for the data at the time of the sample
+ - mem: type of memory access for the data at the time of the sample
+ - snoop: type of snoop (if any) for the data at the time of the sample
+ - dcacheline: the cacheline the data address is on at the time of the sample
+
+ And the default sort keys are changed to local_weight, mem, sym, dso,
+ symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'.
+
If the data file has tracepoint event(s), following (dynamic) sort keys
are also available:
trace, trace_fields, [<event>.]<field>[/raw]
@@ -151,22 +167,6 @@ OPTIONS
By default, every sort keys not specified in -F will be appended
automatically.
- If --mem-mode option is used, following sort keys are also available
- (incompatible with --branch-stack):
- symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline.
-
- - symbol_daddr: name of data symbol being executed on at the time of sample
- - dso_daddr: name of library or module containing the data being executed
- on at the time of sample
- - locked: whether the bus was locked at the time of sample
- - tlb: type of tlb access for the data at the time of sample
- - mem: type of memory access for the data at the time of sample
- - snoop: type of snoop (if any) for the data at the time of sample
- - dcacheline: the cacheline the data address is on at the time of sample
-
- And default sort keys are changed to local_weight, mem, sym, dso,
- symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'.
-
-p::
--parent=<regex>::
A regex filter to identify parent. The parent is a caller of this
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 28/29] perf report: Update documention of --percent-limit option
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (26 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 27/29] perf report: Update documentation of --sort option Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 29/29] perf hists browser: Add 'L' hotkey to change percent limit Arnaldo Carvalho de Melo
2016-02-04 7:59 ` [GIT PULL 00/29] perf/core improvements and fixes Ingo Molnar
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Namhyung Kim, Andi Kleen, David Ahern, Jiri Olsa,
Peter Zijlstra, Stephane Eranian, Wang Nan,
Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Namhyung Kim <namhyung@kernel.org>
The --percent-limit option was changed to be applied to callchains as
well as to hist entries recently, but it missed to update the doc.
Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1454508683-5735-2-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/Documentation/perf-report.txt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Documentation/perf-report.txt
index 1cb8fac596b1..89cab84e92fd 100644
--- a/tools/perf/Documentation/perf-report.txt
+++ b/tools/perf/Documentation/perf-report.txt
@@ -351,7 +351,10 @@ OPTIONS
--percent-limit::
Do not show entries which have an overhead under that percent.
- (Default: 0).
+ (Default: 0). Note that this option also sets the percent limit (threshold)
+ of callchains. However the default value of callchain threshold is
+ different than the default value of hist entries. Please see the
+ --call-graph option for details.
--percentage::
Determine how to display the overhead percentage of filtered entries.
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH 29/29] perf hists browser: Add 'L' hotkey to change percent limit
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (27 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 28/29] perf report: Update documention of --percent-limit option Arnaldo Carvalho de Melo
@ 2016-02-03 16:34 ` Arnaldo Carvalho de Melo
2016-02-04 7:59 ` [GIT PULL 00/29] perf/core improvements and fixes Ingo Molnar
29 siblings, 0 replies; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-02-03 16:34 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Namhyung Kim, Andi Kleen, David Ahern, Jiri Olsa,
Peter Zijlstra, Stephane Eranian, Wang Nan,
Arnaldo Carvalho de Melo
See http://www.infradead.org/rpr.html
From: Namhyung Kim <namhyung@kernel.org>
Add 'L' key action to change the percent limit applied to both of hist
entries and callchains.
Suggested-by: Arnaldo Carvalho de Melo <acme@kernel.org>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/r/1454508683-5735-4-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/ui/browsers/hists.c | 55 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 3a1e0965a8fd..a5a5390476ac 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -2029,6 +2029,42 @@ static void hist_browser__update_nr_entries(struct hist_browser *hb)
hb->nr_non_filtered_entries = nr_entries;
}
+static void hist_browser__update_percent_limit(struct hist_browser *hb,
+ double percent)
+{
+ struct hist_entry *he;
+ struct rb_node *nd = rb_first(&hb->hists->entries);
+ u64 total = hists__total_period(hb->hists);
+ u64 min_callchain_hits = total * (percent / 100);
+
+ hb->min_pcnt = callchain_param.min_percent = percent;
+
+ if (!symbol_conf.use_callchain)
+ return;
+
+ while ((nd = hists__filter_entries(nd, hb->min_pcnt)) != NULL) {
+ he = rb_entry(nd, struct hist_entry, rb_node);
+
+ if (callchain_param.mode == CHAIN_GRAPH_REL) {
+ total = he->stat.period;
+
+ if (symbol_conf.cumulate_callchain)
+ total = he->stat_acc->period;
+
+ min_callchain_hits = total * (percent / 100);
+ }
+
+ callchain_param.sort(&he->sorted_chain, he->callchain,
+ min_callchain_hits, &callchain_param);
+
+ /* force to re-evaluate folding state of callchains */
+ he->init_have_children = false;
+ hist_entry__set_folding(he, false);
+
+ nd = rb_next(nd);
+ }
+}
+
static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
const char *helpline,
bool left_exits,
@@ -2064,6 +2100,7 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
"E Expand all callchains\n" \
"F Toggle percentage of filtered entries\n" \
"H Display column headers\n" \
+ "L Change percent limit\n" \
"m Display context menu\n" \
"S Zoom into current Processor Socket\n" \
@@ -2219,6 +2256,24 @@ static int perf_evsel__hists_browse(struct perf_evsel *evsel, int nr_events,
top->zero = !top->zero;
}
continue;
+ case 'L':
+ if (ui_browser__input_window("Percent Limit",
+ "Please enter the value you want to hide entries under that percent.",
+ buf, "ENTER: OK, ESC: Cancel",
+ delay_secs * 2) == K_ENTER) {
+ char *end;
+ double new_percent = strtod(buf, &end);
+
+ if (new_percent < 0 || new_percent > 100) {
+ ui_browser__warning(&browser->b, delay_secs * 2,
+ "Invalid percent: %.2f", new_percent);
+ continue;
+ }
+
+ hist_browser__update_percent_limit(browser, new_percent);
+ hist_browser__reset(browser);
+ }
+ continue;
case K_F1:
case 'h':
case '?':
--
2.5.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
` (28 preceding siblings ...)
2016-02-03 16:34 ` [PATCH 29/29] perf hists browser: Add 'L' hotkey to change percent limit Arnaldo Carvalho de Melo
@ 2016-02-04 7:59 ` Ingo Molnar
29 siblings, 0 replies; 41+ messages in thread
From: Ingo Molnar @ 2016-02-04 7:59 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Andi Kleen, David Ahern, Jiri Olsa, Namhyung Kim,
Peter Zijlstra, Stephane Eranian, Wang Nan,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 8eb22c984eb9eeaed47130f5679acd367af69678:
>
> Merge tag 'perf-core-for-mingo-3' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2016-02-03 11:02:37 +0100)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo
>
> for you to fetch changes up to b62e8dfcda8cb133c062c0e1207afea2476eb7fd:
>
> perf hists browser: Add 'L' hotkey to change percent limit (2016-02-03 12:24:22 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> New features:
>
> - Add 'L' hotkey to dynamicly set the percent threshold for histogram
> entries and callchains, i.e. dynamicly do what the --percent-limit
> command line option to 'top' and 'report' does. (Namhyung Kim)
>
> Infrastructure:
>
> - Per hists field and sort lists, that will be used, for instance,
> in the c2c tool (Jiri Olsa)
>
> Documentation:
>
> - Update documentation of --sort and --perf-limit options
> for 'perf report' (Namhyung Kim)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (1):
> perf top: Move UI initialization ahead of sort setup
>
> Jiri Olsa (25):
> perf hists: Factor output_resort from hists__output_resort
> perf hists: Introduce perf_evsel__output_resort function
> perf hists: Add _idx fields into struct perf_hpp_fmt
> perf hists: Use struct perf_hpp_fmt::idx in perf_hpp__reset_width
> perf hists: Add 'equal' method to perf_hpp_fmt struct
> perf hists: Add 'hpp__equal' callback function
> perf hists: Make hpp setup function generic
> perf report: Move UI initialization ahead of sort setup
> perf hists: Allocate output sort field
> perf hists: Remove perf_hpp__column_(disable|enable)
> perf hists: Properly release format fields
> perf hists: Separate sort fields parsing into setup_sort_list function
> perf hists: Separate output fields parsing into setup_output_list function
> perf hists: Introduce struct perf_hpp_list
> perf hists: Introduce perf_hpp_list__init function
> perf hists: Add perf_hpp_list register helpers
> perf hists: Pass perf_hpp_list all the way through setup_output_list
> perf hists: Introduce perf_hpp_list__for_each_format macro
> perf hists: Introduce perf_hpp_list__for_each_format_safe macro
> perf hists: Introduce perf_hpp_list__for_each_sort_list macro
> perf hists: Introduce perf_hpp_list__for_each_sort_list_safe macro
> perf hists: Add struct perf_hpp_list argument to helper functions
> perf tools: Add hpp_list into struct hists object
> perf hists: Introduce hists__for_each_format macro
> perf hists: Introduce hists__for_each_sort_list macro
>
> Namhyung Kim (3):
> perf report: Update documentation of --sort option
> perf report: Update documention of --percent-limit option
> perf hists browser: Add 'L' hotkey to change percent limit
>
> tools/perf/Documentation/perf-report.txt | 37 +++---
> tools/perf/builtin-annotate.c | 2 +-
> tools/perf/builtin-report.c | 20 +--
> tools/perf/builtin-top.c | 24 ++--
> tools/perf/tests/hists_cumulate.c | 2 +-
> tools/perf/tests/hists_filter.c | 2 +-
> tools/perf/tests/hists_output.c | 10 +-
> tools/perf/ui/browsers/hists.c | 63 +++++++++-
> tools/perf/ui/gtk/hists.c | 6 +-
> tools/perf/ui/hist.c | 170 +++++++++++++------------
> tools/perf/ui/stdio/hist.c | 8 +-
> tools/perf/util/hist.c | 47 +++++--
> tools/perf/util/hist.h | 65 +++++++---
> tools/perf/util/sort.c | 205 +++++++++++++++++++++----------
> 14 files changed, 425 insertions(+), 236 deletions(-)
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
* [GIT PULL 00/29] perf/core improvements and fixes
@ 2016-12-20 17:03 Arnaldo Carvalho de Melo
2016-12-20 19:15 ` Ingo Molnar
0 siblings, 1 reply; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2016-12-20 17:03 UTC (permalink / raw)
To: Ingo Molnar
Cc: linux-kernel, Arnaldo Carvalho de Melo, Adrian Hunter,
Alexander Shishkin, Alexei Starovoitov, Andi Kleen,
Benjamin Herrenschmidt, Chris Riyder, Daniel Borkmann,
David Ahern, Davidlohr Bueso, Jiri Olsa, Joe Stringer, Kan Liang,
Kim Phillips, Kyle McMartin, linuxppc-dev, Markus Trippelsdorf,
Masami Hiramatsu, Michael Ellerman, Minchan Kim, Namhyung Kim,
Naveen N . Rao, netdev, Nicholas Piggin, Paul Mackerras,
Peter Zijlstra, Ravi Bangoria, Taeung Song, Wang Nan,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling, I had most of this queued before your first
pull req to Linus for 4.10, most are fixes, with 'perf sched timehist --idle'
as a followup new feature to the 'perf sched timehist' command introduced in
this window.
One other thing that delayed this was the samples/bpf/ switch to
tools/lib/bpf/ that involved fixing up merge clashes with net.git and also
to properly test it, after more rounds than antecipated, but all seems ok
now and would be good to get this merge issues past us ASAP.
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit e7aa8c2eb11ba69b1b69099c3c7bd6be3087b0ba:
Merge tag 'docs-4.10' of git://git.lwn.net/linux (2016-12-12 21:58:13 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20161220
for you to fetch changes up to 9899694a7f67714216665b87318eb367e2c5c901:
samples/bpf: Move open_raw_sock to separate header (2016-12-20 12:00:40 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
New features:
- Introduce 'perf sched timehist --idle', to analyse processes
going to/from idle state (Namhyung Kim)
Fixes:
- Allow 'perf record -u user' to continue when facing races with threads
going away after having scanned them via /proc (Jiri Olsa)
- Fix 'perf mem' --all-user/--all-kernel options (Jiri Olsa)
- Support jumps with multiple arguments (Ravi Bangoria)
- Fix jumps to before the function where they are located (Ravi
Bangoria)
- Fix lock-pi help string (Davidlohr Bueso)
- Fix build of 'perf trace' in odd systems such as a RHEL PPC one (Jiri Olsa)
- Do not overwrite valid build id in 'perf diff' (Kan Liang)
- Don't throw error for zero length symbols, allowing the use of the TUI
in PowerPC, where such symbols became more common recently (Ravi Bangoria)
Infrastructure:
- Switch of samples/bpf/ to use tools/lib/bpf, removing libbpf
duplication (Joe Stringer)
- Move headers check into bash script (Jiri Olsa)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (3):
perf tools: Remove some needless __maybe_unused
samples/bpf: Make perf_event_read() static
samples/bpf: Be consistent with bpf_load_program bpf_insn parameter
Davidlohr Bueso (1):
perf bench futex: Fix lock-pi help string
Jiri Olsa (7):
perf tools: Move headers check into bash script
perf mem: Fix --all-user/--all-kernel options
perf evsel: Use variable instead of repeating lengthy FD macro
perf thread_map: Add thread_map__remove function
perf evsel: Allow to ignore missing pid
perf record: Force ignore_missing_thread for uid option
perf trace: Check if MAP_32BIT is defined (again)
Joe Stringer (8):
tools lib bpf: Sync {tools,}/include/uapi/linux/bpf.h
tools lib bpf: use __u32 from linux/types.h
tools lib bpf: Add flags to bpf_create_map()
samples/bpf: Make samples more libbpf-centric
samples/bpf: Switch over to libbpf
tools lib bpf: Add bpf_prog_{attach,detach}
samples/bpf: Remove perf_event_open() declaration
samples/bpf: Move open_raw_sock to separate header
Kan Liang (1):
perf diff: Do not overwrite valid build id
Namhyung Kim (6):
perf sched timehist: Split is_idle_sample()
perf sched timehist: Introduce struct idle_time_data
perf sched timehist: Save callchain when entering idle
perf sched timehist: Skip non-idle events when necessary
perf sched timehist: Add -I/--idle-hist option
perf sched timehist: Show callchains for idle stat
Ravi Bangoria (3):
perf annotate: Support jump instruction with target as second operand
perf annotate: Fix jump target outside of function address range
perf annotate: Don't throw error for zero length symbols
samples/bpf/Makefile | 70 +--
samples/bpf/README.rst | 4 +-
samples/bpf/bpf_load.c | 21 +-
samples/bpf/bpf_load.h | 3 +
samples/bpf/fds_example.c | 13 +-
samples/bpf/lathist_user.c | 2 +-
samples/bpf/libbpf.c | 176 -------
samples/bpf/libbpf.h | 28 +-
samples/bpf/lwt_len_hist_user.c | 6 +-
samples/bpf/offwaketime_user.c | 8 +-
samples/bpf/sampleip_user.c | 7 +-
samples/bpf/sock_example.c | 14 +-
samples/bpf/sock_example.h | 35 ++
samples/bpf/sockex1_user.c | 7 +-
samples/bpf/sockex2_user.c | 5 +-
samples/bpf/sockex3_user.c | 5 +-
samples/bpf/spintest_user.c | 8 +-
samples/bpf/tc_l2_redirect_user.c | 4 +-
samples/bpf/test_cgrp2_array_pin.c | 4 +-
samples/bpf/test_cgrp2_attach.c | 12 +-
samples/bpf/test_cgrp2_attach2.c | 8 +-
samples/bpf/test_cgrp2_sock.c | 7 +-
samples/bpf/test_current_task_under_cgroup_user.c | 8 +-
samples/bpf/test_lru_dist.c | 32 +-
samples/bpf/test_probe_write_user_user.c | 2 +-
samples/bpf/trace_event_user.c | 23 +-
samples/bpf/trace_output_user.c | 7 +-
samples/bpf/tracex2_user.c | 10 +-
samples/bpf/tracex3_user.c | 4 +-
samples/bpf/tracex4_user.c | 4 +-
samples/bpf/tracex6_user.c | 5 +-
samples/bpf/xdp1_user.c | 2 +-
samples/bpf/xdp_tx_iptunnel_user.c | 6 +-
tools/include/uapi/linux/bpf.h | 593 +++++++++++++---------
tools/lib/bpf/bpf.c | 30 +-
tools/lib/bpf/bpf.h | 9 +-
tools/lib/bpf/libbpf.c | 3 +-
tools/perf/Documentation/perf-sched.txt | 4 +
tools/perf/Makefile.perf | 94 +---
tools/perf/bench/futex-lock-pi.c | 2 +-
tools/perf/builtin-c2c.c | 13 +-
tools/perf/builtin-mem.c | 4 +-
tools/perf/builtin-record.c | 3 +
tools/perf/builtin-report.c | 2 +-
tools/perf/builtin-sched.c | 261 ++++++++--
tools/perf/builtin-stat.c | 6 +-
tools/perf/check-headers.sh | 59 +++
tools/perf/perf.h | 1 +
tools/perf/tests/builtin-test.c | 4 +
tools/perf/tests/tests.h | 1 +
tools/perf/tests/thread-map.c | 44 ++
tools/perf/trace/beauty/mmap.c | 2 +
tools/perf/ui/browsers/annotate.c | 5 +-
tools/perf/util/annotate.c | 23 +-
tools/perf/util/annotate.h | 5 +-
tools/perf/util/evsel.c | 61 ++-
tools/perf/util/evsel.h | 1 +
tools/perf/util/symbol.c | 3 +-
tools/perf/util/thread_map.c | 22 +
tools/perf/util/thread_map.h | 1 +
60 files changed, 1075 insertions(+), 731 deletions(-)
delete mode 100644 samples/bpf/libbpf.c
create mode 100644 samples/bpf/sock_example.h
create mode 100755 tools/perf/check-headers.sh
[root@jouet ~]# uname -a
Linux jouet 4.9.0+ #1 SMP Mon Dec 19 15:44:52 BRT 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@jouet ~]# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Parse event definition strings : Ok
6: PERF_RECORD_* events & perf_sample fields : Ok
7: Parse perf pmu format : Ok
8: DSO data read : Ok
9: DSO data cache : Ok
10: DSO data reopen : Ok
11: Roundtrip evsel->name : Ok
12: Parse sched tracepoints fields : Ok
13: syscalls:sys_enter_openat event fields : Ok
14: Setup struct perf_event_attr : Ok
15: Match and link multiple hists : Ok
16: 'import perf' in python : Ok
17: Breakpoint overflow signal handler : Ok
18: Breakpoint overflow sampling : Ok
19: Number of exit events of a simple workload : Ok
20: Software clock events period values : Ok
21: Object code reading : Ok
22: Sample parsing : Ok
23: Use a dummy software event to keep tracking: Ok
24: Parse with no sample_id_all bit set : Ok
25: Filter hist entries : Ok
26: Lookup mmap thread : Ok
27: Share thread mg : Ok
28: Sort output of hist entries : Ok
29: Cumulate child hist entries : Ok
30: Track with sched_switch : Ok
31: Filter fds with revents mask in a fdarray : Ok
32: Add fd to a fdarray, making it autogrow : Ok
33: kmod_path__parse : Ok
34: Thread map : Ok
35: LLVM search and compile :
35.1: Basic BPF llvm compile : Ok
35.2: kbuild searching : Ok
35.3: Compile source for BPF prologue generation: Ok
35.4: Compile source for BPF relocation : Ok
36: Session topology : Ok
37: BPF filter :
37.1: Basic BPF filtering : Ok
37.2: BPF prologue generation : Ok
37.3: BPF relocation checker : Ok
38: Synthesize thread map : Ok
39: Remove thread map : Ok
40: Synthesize cpu map : Ok
41: Synthesize stat config : Ok
42: Synthesize stat : Ok
43: Synthesize stat round : Ok
44: Synthesize attr update : Ok
45: Event times : Ok
46: Read backward ring buffer : Ok
47: Print cpu map : Ok
48: Probe SDT events : Ok
49: is_printable_array : Ok
50: Print bitmap : Ok
51: perf hooks : Ok
52: builtin clang support : Skip (not compiled in)
53: x86 rdpmc : Ok
54: Convert perf time to TSC : Ok
55: DWARF unwind : Ok
56: x86 instruction decoder - new instructions : Ok
57: Intel cqm nmi context read : Skip
[root@jouet ~]#
# time dm
1 alpine:3.4: Ok
2 android-ndk:r12b-arm: Ok
3 archlinux:latest: Ok
4 centos:5: Ok
5 centos:6: Ok
6 centos:7: Ok
7 debian:7: Ok
8 debian:8: Ok
9 debian:experimental: Ok
10 debian:experimental-x-mips64: Ok
11 fedora:20: Ok
12 fedora:21: Ok
13 fedora:22: Ok
14 fedora:23: Ok
15 fedora:24: Ok
16 fedora:24-x-ARC-uClibc: Ok
17 fedora:25: Ok
18 fedora:rawhide: Ok
19 mageia:5: Ok
20 opensuse:13.2: Ok
21 opensuse:42.1: Ok
22 opensuse:tumbleweed: Ok
23 ubuntu:12.04.5: Ok
24 ubuntu:14.04.4-x-linaro-arm64: Ok
25 ubuntu:16.04: Ok
26 ubuntu:16.04-x-arm: Ok
27 ubuntu:16.04-x-arm64: Ok
28 ubuntu:16.04-x-powerpc: Ok
29 ubuntu:16.04-x-powerpc64: Ok
30 ubuntu:16.04-x-powerpc64el: Ok
31 ubuntu:16.04-x-s390: Ok
32 ubuntu:16.10: Ok
#
$ make -C tools/perf build-test
make: Entering directory `/home/acme/git/linux/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_minimal_O: cd . && make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_clean_all_O: cd . && make clean all
make_no_demangle_O: cd . && make NO_DEMANGLE=1
make_no_auxtrace_O: cd . && make NO_AUXTRACE=1
make_with_clangllvm_O: cd . && make LIBCLANGLLVM=1
make_static_O: cd . && make LDFLAGS=-static
make_cscope_O: cd . && make cscope
make_no_ui_O: cd . && make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_install_prefix_slash_O: cd . && make install prefix=/tmp/krava/
make_util_pmu_bison_o_O: cd . && make util/pmu-bison.o
make_with_babeltrace_O: cd . && make LIBBABELTRACE=1
make_no_libnuma_O: cd . && make NO_LIBNUMA=1
make_no_gtk2_O: cd . && make NO_GTK2=1
make_no_libbionic_O: cd . && make NO_LIBBIONIC=1
make_debug_O: cd . && make DEBUG=1
make_tags_O: cd . && make tags
make_no_libperl_O: cd . && make NO_LIBPERL=1
make_no_slang_O: cd . && make NO_SLANG=1
make_util_map_o_O: cd . && make util/map.o
make_no_backtrace_O: cd . && make NO_BACKTRACE=1
make_doc_O: cd . && make doc
make_install_prefix_O: cd . && make install prefix=/tmp/krava
make_no_scripts_O: cd . && make NO_LIBPYTHON=1 NO_LIBPERL=1
make_perf_o_O: cd . && make perf.o
make_install_bin_O: cd . && make install-bin
make_no_libbpf_O: cd . && make NO_LIBBPF=1
make_no_libunwind_O: cd . && make NO_LIBUNWIND=1
make_help_O: cd . && make help
make_no_libaudit_O: cd . && make NO_LIBAUDIT=1
make_no_libelf_O: cd . && make NO_LIBELF=1
make_no_libpython_O: cd . && make NO_LIBPYTHON=1
make_no_libdw_dwarf_unwind_O: cd . && make NO_LIBDW_DWARF_UNWIND=1
make_no_newt_O: cd . && make NO_NEWT=1
make_pure_O: cd . && make
make_install_O: cd . && make install
OK
make: Leaving directory `/home/acme/git/linux/tools/perf'
$
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2016-12-20 17:03 Arnaldo Carvalho de Melo
@ 2016-12-20 19:15 ` Ingo Molnar
0 siblings, 0 replies; 41+ messages in thread
From: Ingo Molnar @ 2016-12-20 19:15 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: linux-kernel, Adrian Hunter, Alexander Shishkin,
Alexei Starovoitov, Andi Kleen, Benjamin Herrenschmidt,
Chris Riyder, Daniel Borkmann, David Ahern, Davidlohr Bueso,
Jiri Olsa, Joe Stringer, Kan Liang, Kim Phillips, Kyle McMartin,
linuxppc-dev, Markus Trippelsdorf, Masami Hiramatsu,
Michael Ellerman, Minchan Kim, Namhyung Kim, Naveen N . Rao,
netdev, Nicholas Piggin, Paul Mackerras, Peter Zijlstra,
Ravi Bangoria, Taeung Song, Wang Nan, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling, I had most of this queued before your first
> pull req to Linus for 4.10, most are fixes, with 'perf sched timehist --idle'
> as a followup new feature to the 'perf sched timehist' command introduced in
> this window.
>
> One other thing that delayed this was the samples/bpf/ switch to
> tools/lib/bpf/ that involved fixing up merge clashes with net.git and also
> to properly test it, after more rounds than antecipated, but all seems ok
> now and would be good to get this merge issues past us ASAP.
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit e7aa8c2eb11ba69b1b69099c3c7bd6be3087b0ba:
>
> Merge tag 'docs-4.10' of git://git.lwn.net/linux (2016-12-12 21:58:13 -0800)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-20161220
>
> for you to fetch changes up to 9899694a7f67714216665b87318eb367e2c5c901:
>
> samples/bpf: Move open_raw_sock to separate header (2016-12-20 12:00:40 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> New features:
>
> - Introduce 'perf sched timehist --idle', to analyse processes
> going to/from idle state (Namhyung Kim)
>
> Fixes:
>
> - Allow 'perf record -u user' to continue when facing races with threads
> going away after having scanned them via /proc (Jiri Olsa)
>
> - Fix 'perf mem' --all-user/--all-kernel options (Jiri Olsa)
>
> - Support jumps with multiple arguments (Ravi Bangoria)
>
> - Fix jumps to before the function where they are located (Ravi
> Bangoria)
>
> - Fix lock-pi help string (Davidlohr Bueso)
>
> - Fix build of 'perf trace' in odd systems such as a RHEL PPC one (Jiri Olsa)
>
> - Do not overwrite valid build id in 'perf diff' (Kan Liang)
>
> - Don't throw error for zero length symbols, allowing the use of the TUI
> in PowerPC, where such symbols became more common recently (Ravi Bangoria)
>
> Infrastructure:
>
> - Switch of samples/bpf/ to use tools/lib/bpf, removing libbpf
> duplication (Joe Stringer)
>
> - Move headers check into bash script (Jiri Olsa)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (3):
> perf tools: Remove some needless __maybe_unused
> samples/bpf: Make perf_event_read() static
> samples/bpf: Be consistent with bpf_load_program bpf_insn parameter
>
> Davidlohr Bueso (1):
> perf bench futex: Fix lock-pi help string
>
> Jiri Olsa (7):
> perf tools: Move headers check into bash script
> perf mem: Fix --all-user/--all-kernel options
> perf evsel: Use variable instead of repeating lengthy FD macro
> perf thread_map: Add thread_map__remove function
> perf evsel: Allow to ignore missing pid
> perf record: Force ignore_missing_thread for uid option
> perf trace: Check if MAP_32BIT is defined (again)
>
> Joe Stringer (8):
> tools lib bpf: Sync {tools,}/include/uapi/linux/bpf.h
> tools lib bpf: use __u32 from linux/types.h
> tools lib bpf: Add flags to bpf_create_map()
> samples/bpf: Make samples more libbpf-centric
> samples/bpf: Switch over to libbpf
> tools lib bpf: Add bpf_prog_{attach,detach}
> samples/bpf: Remove perf_event_open() declaration
> samples/bpf: Move open_raw_sock to separate header
>
> Kan Liang (1):
> perf diff: Do not overwrite valid build id
>
> Namhyung Kim (6):
> perf sched timehist: Split is_idle_sample()
> perf sched timehist: Introduce struct idle_time_data
> perf sched timehist: Save callchain when entering idle
> perf sched timehist: Skip non-idle events when necessary
> perf sched timehist: Add -I/--idle-hist option
> perf sched timehist: Show callchains for idle stat
>
> Ravi Bangoria (3):
> perf annotate: Support jump instruction with target as second operand
> perf annotate: Fix jump target outside of function address range
> perf annotate: Don't throw error for zero length symbols
>
> samples/bpf/Makefile | 70 +--
> samples/bpf/README.rst | 4 +-
> samples/bpf/bpf_load.c | 21 +-
> samples/bpf/bpf_load.h | 3 +
> samples/bpf/fds_example.c | 13 +-
> samples/bpf/lathist_user.c | 2 +-
> samples/bpf/libbpf.c | 176 -------
> samples/bpf/libbpf.h | 28 +-
> samples/bpf/lwt_len_hist_user.c | 6 +-
> samples/bpf/offwaketime_user.c | 8 +-
> samples/bpf/sampleip_user.c | 7 +-
> samples/bpf/sock_example.c | 14 +-
> samples/bpf/sock_example.h | 35 ++
> samples/bpf/sockex1_user.c | 7 +-
> samples/bpf/sockex2_user.c | 5 +-
> samples/bpf/sockex3_user.c | 5 +-
> samples/bpf/spintest_user.c | 8 +-
> samples/bpf/tc_l2_redirect_user.c | 4 +-
> samples/bpf/test_cgrp2_array_pin.c | 4 +-
> samples/bpf/test_cgrp2_attach.c | 12 +-
> samples/bpf/test_cgrp2_attach2.c | 8 +-
> samples/bpf/test_cgrp2_sock.c | 7 +-
> samples/bpf/test_current_task_under_cgroup_user.c | 8 +-
> samples/bpf/test_lru_dist.c | 32 +-
> samples/bpf/test_probe_write_user_user.c | 2 +-
> samples/bpf/trace_event_user.c | 23 +-
> samples/bpf/trace_output_user.c | 7 +-
> samples/bpf/tracex2_user.c | 10 +-
> samples/bpf/tracex3_user.c | 4 +-
> samples/bpf/tracex4_user.c | 4 +-
> samples/bpf/tracex6_user.c | 5 +-
> samples/bpf/xdp1_user.c | 2 +-
> samples/bpf/xdp_tx_iptunnel_user.c | 6 +-
> tools/include/uapi/linux/bpf.h | 593 +++++++++++++---------
> tools/lib/bpf/bpf.c | 30 +-
> tools/lib/bpf/bpf.h | 9 +-
> tools/lib/bpf/libbpf.c | 3 +-
> tools/perf/Documentation/perf-sched.txt | 4 +
> tools/perf/Makefile.perf | 94 +---
> tools/perf/bench/futex-lock-pi.c | 2 +-
> tools/perf/builtin-c2c.c | 13 +-
> tools/perf/builtin-mem.c | 4 +-
> tools/perf/builtin-record.c | 3 +
> tools/perf/builtin-report.c | 2 +-
> tools/perf/builtin-sched.c | 261 ++++++++--
> tools/perf/builtin-stat.c | 6 +-
> tools/perf/check-headers.sh | 59 +++
> tools/perf/perf.h | 1 +
> tools/perf/tests/builtin-test.c | 4 +
> tools/perf/tests/tests.h | 1 +
> tools/perf/tests/thread-map.c | 44 ++
> tools/perf/trace/beauty/mmap.c | 2 +
> tools/perf/ui/browsers/annotate.c | 5 +-
> tools/perf/util/annotate.c | 23 +-
> tools/perf/util/annotate.h | 5 +-
> tools/perf/util/evsel.c | 61 ++-
> tools/perf/util/evsel.h | 1 +
> tools/perf/util/symbol.c | 3 +-
> tools/perf/util/thread_map.c | 22 +
> tools/perf/util/thread_map.h | 1 +
> 60 files changed, 1075 insertions(+), 731 deletions(-)
> delete mode 100644 samples/bpf/libbpf.c
> create mode 100644 samples/bpf/sock_example.h
> create mode 100755 tools/perf/check-headers.sh
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
* [GIT PULL 00/29] perf/core improvements and fixes
@ 2019-01-03 12:45 Arnaldo Carvalho de Melo
2019-01-03 13:07 ` Ingo Molnar
0 siblings, 1 reply; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-01-03 12:45 UTC (permalink / raw)
To: Ingo Molnar
Cc: Clark Williams, linux-kernel, linux-perf-users,
Arnaldo Carvalho de Melo, Adrian Hunter, Andi Kleen, Colin King,
Joe Mario, Namhyung Kim, Ondřej Lysoněk,
Stanislav Fomichev, Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit 883f4def8b77e6870ce42be279564cca0256c611:
Merge tag 'perf-core-for-mingo-4.21-20181218' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2018-12-20 18:51:47 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.21-20190103
for you to fetch changes up to b25756df5b28cd7b6e91200fc5012e7c76e8ec69:
perf session: Add comment for perf_session__register_idle_thread() (2019-01-02 11:05:06 -0300)
----------------------------------------------------------------
perf/core improvements and fixes:
perf c2c:
Jiri Olsa:
- Change the default coalesce setup to from '--coalesce pid,iaddr' to just '--coalesce iaddr'.
- Increase the HITM ratio limit for displayed cachelines.
perf script:
Andi Kleen:
- Fix LBR skid dump problems in brstackinsn.
perf trace:
Arnaldo Carvalho de Melo:
- Check if the raw_syscalls:sys_{enter,exit} are setup before setting tp filter.
- Do not hardcode the size of the tracepoint common_ fields.
- Beautify USBDEFFS_ ioctl commands.
Colin Ian King:
- Use correct SECCOMP prefix spelling, "SECOMP_*" -> "SECCOMP_*".
perf python:
Jiri Olsa:
- Do not force closing original perf descriptor in evlist.get_pollfd().
tools misc:
Jiri Olsa:
- Allow overriding CFLAGS and LDFLAGS.
perf build:
Stanislav Fomichev:
- Don't unconditionally link the libbfd feature test to -liberty and -lz
thread-stack:
Adrian Hunter:
- Fix processing for the idle task, having a stack per cpu.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Adrian Hunter (8):
perf thread-stack: Simplify some code in thread_stack__process()
perf thread-stack: Tidy thread_stack__bottom() usage
perf thread-stack: Avoid direct reference to the thread's stack
perf thread-stack: Allow for a thread stack array
perf thread-stack: Factor out thread_stack__init()
perf thread-stack: Allocate an array of thread stacks
perf thread-stack: Fix thread stack processing for the idle task
perf session: Add comment for perf_session__register_idle_thread()
Andi Kleen (1):
perf script: Fix LBR skid dump problems in brstackinsn
Arnaldo Carvalho de Melo (11):
perf trace: Check if the raw_syscalls:sys_{enter,exit} are setup before setting tp filter
perf beauty mmap: PROT_WRITE should come before PROT_EXEC
perf trace: Do not hardcode the size of the tracepoint common_ fields
perf trace: Rename thread_thread->paths to thread_trace->files
perf trace: Move the files table resizing to outside set_pathname()
perf trace: Store the major number for a file when storing its pathname
tools headers uapi: Grab a copy of usbdevice_fs.h
perf beauty ioctl: Add generator for USBDEVFS_ ioctl commands
perf trace: Wire up ioctl's USBDEBFS_ cmd table generator
perf trace beauty: Export function to get the files for a thread
perf trace beauty ioctl: Beautify USBDEVFS_ commands
Colin Ian King (1):
perf trace: Use correct SECCOMP prefix spelling, "SECOMP_*" -> "SECCOMP_*"
Jiri Olsa (7):
perf python: Do not force closing original perf descriptor in evlist.get_pollfd()
perf c2c: Change the default coalesce setup
perf c2c: Increase the HITM ratio limit for displayed cachelines
tools power x86_energy_perf_policy: Override CFLAGS assignments and add LDFLAGS to build command
tools thermal tmon: Allow overriding CFLAGS assignments
tools power turbostat: Override CFLAGS assignments and add LDFLAGS to build command
tools gpio: Allow overriding CFLAGS
Stanislav Fomichev (1):
perf build: Don't unconditionally link the libbfd feature test to -liberty and -lz
tools/build/Makefile.feature | 4 +-
tools/build/feature/Makefile | 10 +-
tools/gpio/Makefile | 2 +-
tools/include/uapi/linux/usbdevice_fs.h | 201 ++++++++++++++++++
tools/perf/Makefile.config | 44 ++--
tools/perf/Makefile.perf | 8 +
tools/perf/builtin-c2c.c | 4 +-
tools/perf/builtin-script.c | 21 +-
tools/perf/builtin-trace.c | 142 +++++++++----
tools/perf/check-headers.sh | 1 +
tools/perf/trace/beauty/beauty.h | 7 +
tools/perf/trace/beauty/ioctl.c | 22 ++
tools/perf/trace/beauty/mmap.c | 2 +-
tools/perf/trace/beauty/seccomp.c | 4 +-
tools/perf/trace/beauty/usbdevfs_ioctl.sh | 19 ++
tools/perf/util/dump-insn.c | 8 +
tools/perf/util/dump-insn.h | 2 +
tools/perf/util/intel-bts.c | 4 +-
.../util/intel-pt-decoder/intel-pt-insn-decoder.c | 8 +
tools/perf/util/intel-pt.c | 6 +-
tools/perf/util/python.c | 3 +-
tools/perf/util/session.c | 7 +
tools/perf/util/thread-stack.c | 227 +++++++++++++++------
tools/perf/util/thread-stack.h | 8 +-
tools/power/x86/turbostat/Makefile | 8 +-
tools/power/x86/x86_energy_perf_policy/Makefile | 6 +-
tools/thermal/tmon/Makefile | 8 +-
27 files changed, 620 insertions(+), 166 deletions(-)
create mode 100644 tools/include/uapi/linux/usbdevice_fs.h
create mode 100755 tools/perf/trace/beauty/usbdevfs_ioctl.sh
Test results:
The first ones are container based builds of tools/perf with and without libelf
support. Where clang is available, it is also used to build perf with/without
libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang
when clang and its devel libraries are installed.
The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.
Several are cross builds, the ones with -x-ARCH and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
$ dm
1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0
2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822
3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0
4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0
5 alpine:3.8 : Ok gcc (Alpine 6.4.0) 6.4.0
6 alpine:edge : Ok gcc (Alpine 8.2.0) 8.2.0
7 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
8 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
9 android-ndk:r12b-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
10 android-ndk:r15c-arm : Ok arm-linux-androideabi-gcc (GCC) 4.9.x 20150123 (prerelease)
11 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
12 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
13 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
14 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 8.2.1 20180502
15 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2
16 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u1) 4.9.2
17 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
18 debian:experimental : Ok gcc (Debian 8.2.0-10) 8.2.0
19 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 8.2.0-10) 8.2.0
20 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 8.2.0-10) 8.2.0
21 debian:experimental : Ok gcc (Debian 8.2.0-13) 8.2.0
22 debian:experimental-x-arm64 : Ok aarch64-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
23 debian:experimental-x-mips : Ok mips-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
24 debian:experimental-x-mips64 : Ok mips64-linux-gnuabi64-gcc (Debian 8.2.0-11) 8.2.0
25 debian:experimental-x-mipsel : Ok mipsel-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0
26 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
27 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
28 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
29 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
30 fedora:24-x-ARC-uClibc : Ok arc-linux-gcc (ARCompact ISA Linux uClibc toolchain 2017.09-rc2) 7.1.1 20170710
31 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
32 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
33 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
34 fedora:28 : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
35 fedora:29 : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
36 fedora:rawhide : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
37 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
38 mageia:5 : Ok gcc (GCC) 4.9.2
39 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0
40 opensuse:13.2 : Ok gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
41 opensuse:15.0 : Ok gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
42 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5
43 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5
44 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5
45 opensuse:tumbleweed : Ok gcc (SUSE Linux) 8.2.1 20181108 [gcc-8-branch revision 265914]
46 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
47 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1)
48 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
49 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
50 ubuntu:14.04.4-x-linaro-arm64 : Ok aarch64-linux-gnu-gcc (Linaro GCC 5.5-2017.10) 5.5.0
51 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
52 ubuntu:16.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
53 ubuntu:16.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
54 ubuntu:16.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
55 ubuntu:16.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
56 ubuntu:16.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
57 ubuntu:16.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609
58 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
59 ubuntu:18.04 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
60 ubuntu:18.04-x-arm : Ok arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04) 7.3.0
61 ubuntu:18.04-x-arm64 : Ok aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.3.0-27ubuntu1~18.04) 7.3.0
62 ubuntu:18.04-x-m68k : Ok m68k-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
63 ubuntu:18.04-x-powerpc : Ok powerpc-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
64 ubuntu:18.04-x-powerpc64 : Ok powerpc64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
65 ubuntu:18.04-x-powerpc64el : Ok powerpc64le-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
66 ubuntu:18.04-x-riscv64 : Ok riscv64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
67 ubuntu:18.04-x-s390 : Ok s390x-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
68 ubuntu:18.04-x-sh4 : Ok sh4-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
69 ubuntu:18.04-x-sparc64 : Ok sparc64-linux-gnu-gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
70 ubuntu:18.10 : Ok gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0
71 ubuntu:19.04 : Ok gcc (Ubuntu 8.2.0-12ubuntu1) 8.2.0
72 ubuntu:19.04-x-alpha : Ok alpha-linux-gnu-gcc (Ubuntu 8.2.0-11ubuntu1) 8.2.0
73 ubuntu:19.04-x-hppa : Ok hppa-linux-gnu-gcc (Ubuntu 8.2.0-11ubuntu1) 8.2.0
$
# uname -a
Linux quaco 4.19.8-rt6+ #2 SMP PREEMPT RT Wed Dec 19 12:58:37 -03 2018 x86_64 x86_64 x86_64 GNU/Linux
# git log --oneline -1
b25756df5b28 perf session: Add comment for perf_session__register_idle_thread()
# perf version --build-options
perf version 4.20.rc7.gb25756
dwarf: [ on ] # HAVE_DWARF_SUPPORT
dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT
glibc: [ on ] # HAVE_GLIBC_SUPPORT
gtk2: [ on ] # HAVE_GTK2_SUPPORT
syscall_table: [ on ] # HAVE_SYSCALL_TABLE_SUPPORT
libbfd: [ on ] # HAVE_LIBBFD_SUPPORT
libelf: [ on ] # HAVE_LIBELF_SUPPORT
libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT
libperl: [ on ] # HAVE_LIBPERL_SUPPORT
libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
libslang: [ on ] # HAVE_SLANG_SUPPORT
libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT
libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT
libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT
zlib: [ on ] # HAVE_ZLIB_SUPPORT
lzma: [ on ] # HAVE_LZMA_SUPPORT
get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT
bpf: [ on ] # HAVE_LIBBPF_SUPPORT
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Test data source output : Ok
6: Parse event definition strings : Ok
7: Simple expression parser : Ok
8: PERF_RECORD_* events & perf_sample fields : Ok
9: Parse perf pmu format : Ok
10: DSO data read : Ok
11: DSO data cache : Ok
12: DSO data reopen : Ok
13: Roundtrip evsel->name : Ok
14: Parse sched tracepoints fields : Ok
15: syscalls:sys_enter_openat event fields : Ok
16: Setup struct perf_event_attr : Ok
17: Match and link multiple hists : Ok
18: 'import perf' in python : Ok
19: Breakpoint overflow signal handler : Ok
20: Breakpoint overflow sampling : Ok
21: Breakpoint accounting : Ok
22: Watchpoint :
22.1: Read Only Watchpoint : Skip
22.2: Write Only Watchpoint : Ok
22.3: Read / Write Watchpoint : Ok
22.4: Modify Watchpoint : Ok
23: Number of exit events of a simple workload : Ok
24: Software clock events period values : Ok
25: Object code reading : Ok
26: Sample parsing : Ok
27: Use a dummy software event to keep tracking : Ok
28: Parse with no sample_id_all bit set : Ok
29: Filter hist entries : Ok
30: Lookup mmap thread : Ok
31: Share thread mg : Ok
32: Sort output of hist entries : Ok
33: Cumulate child hist entries : Ok
34: Track with sched_switch : Ok
35: Filter fds with revents mask in a fdarray : Ok
36: Add fd to a fdarray, making it autogrow : Ok
37: kmod_path__parse : Ok
38: Thread map : Ok
39: LLVM search and compile :
39.1: Basic BPF llvm compile : Ok
39.2: kbuild searching : Ok
39.3: Compile source for BPF prologue generation : Ok
39.4: Compile source for BPF relocation : Ok
40: Session topology : Ok
41: BPF filter :
41.1: Basic BPF filtering : Ok
41.2: BPF pinning : Ok
41.3: BPF prologue generation : Ok
41.4: BPF relocation checker : Ok
42: Synthesize thread map : Ok
43: Remove thread map : Ok
44: Synthesize cpu map : Ok
45: Synthesize stat config : Ok
46: Synthesize stat : Ok
47: Synthesize stat round : Ok
48: Synthesize attr update : Ok
49: Event times : Ok
50: Read backward ring buffer : Ok
51: Print cpu map : Ok
52: Probe SDT events : Ok
53: is_printable_array : Ok
54: Print bitmap : Ok
55: perf hooks : Ok
56: builtin clang support : Skip (not compiled in)
57: unit_number__scnprintf : Ok
58: mem2node : Ok
59: x86 rdpmc : Ok
60: Convert perf time to TSC : Ok
61: DWARF unwind : Ok
62: x86 instruction decoder - new instructions : Ok
63: x86 bp modify : Ok
64: probe libc's inet_pton & backtrace it with ping : Ok
65: Use vfs_getname probe to get syscall args filenames : Ok
66: Add vfs_getname probe to get syscall args filenames : Ok
67: Check open filename arg using perf trace + vfs_getname: Ok
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_clean_all_O: make clean all
make_perf_o_O: make perf.o
make_no_newt_O: make NO_NEWT=1
make_no_libunwind_O: make NO_LIBUNWIND=1
make_no_libelf_O: make NO_LIBELF=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_no_slang_O: make NO_SLANG=1
make_pure_O: make
make_help_O: make help
make_cscope_O: make cscope
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_util_map_o_O: make util/map.o
make_no_demangle_O: make NO_DEMANGLE=1
make_install_prefix_O: make install prefix=/tmp/krava
make_no_backtrace_O: make NO_BACKTRACE=1
make_doc_O: make doc
make_install_O: make install
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_auxtrace_O: make NO_AUXTRACE=1
make_debug_O: make DEBUG=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_no_libaudit_O: make NO_LIBAUDIT=1
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_libperl_O: make NO_LIBPERL=1
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_install_bin_O: make install-bin
make_static_O: make LDFLAGS=-static
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_tags_O: make tags
make_no_gtk2_O: make NO_GTK2=1
make_no_libbpf_O: make NO_LIBBPF=1
OK
make: Leaving directory '/home/acme/git/perf/tools/perf'
$
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2019-01-03 12:45 Arnaldo Carvalho de Melo
@ 2019-01-03 13:07 ` Ingo Molnar
0 siblings, 0 replies; 41+ messages in thread
From: Ingo Molnar @ 2019-01-03 13:07 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Clark Williams, linux-kernel, linux-perf-users, Adrian Hunter,
Andi Kleen, Colin King, Joe Mario, Namhyung Kim,
Ondřej Lysoněk, Stanislav Fomichev,
Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit 883f4def8b77e6870ce42be279564cca0256c611:
>
> Merge tag 'perf-core-for-mingo-4.21-20181218' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2018-12-20 18:51:47 +0100)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-4.21-20190103
>
> for you to fetch changes up to b25756df5b28cd7b6e91200fc5012e7c76e8ec69:
>
> perf session: Add comment for perf_session__register_idle_thread() (2019-01-02 11:05:06 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> perf c2c:
>
> Jiri Olsa:
>
> - Change the default coalesce setup to from '--coalesce pid,iaddr' to just '--coalesce iaddr'.
>
> - Increase the HITM ratio limit for displayed cachelines.
>
> perf script:
>
> Andi Kleen:
>
> - Fix LBR skid dump problems in brstackinsn.
>
> perf trace:
>
> Arnaldo Carvalho de Melo:
>
> - Check if the raw_syscalls:sys_{enter,exit} are setup before setting tp filter.
>
> - Do not hardcode the size of the tracepoint common_ fields.
>
> - Beautify USBDEFFS_ ioctl commands.
>
> Colin Ian King:
>
> - Use correct SECCOMP prefix spelling, "SECOMP_*" -> "SECCOMP_*".
>
> perf python:
>
> Jiri Olsa:
>
> - Do not force closing original perf descriptor in evlist.get_pollfd().
>
> tools misc:
>
> Jiri Olsa:
>
> - Allow overriding CFLAGS and LDFLAGS.
>
> perf build:
>
> Stanislav Fomichev:
>
> - Don't unconditionally link the libbfd feature test to -liberty and -lz
>
> thread-stack:
>
> Adrian Hunter:
>
> - Fix processing for the idle task, having a stack per cpu.
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Adrian Hunter (8):
> perf thread-stack: Simplify some code in thread_stack__process()
> perf thread-stack: Tidy thread_stack__bottom() usage
> perf thread-stack: Avoid direct reference to the thread's stack
> perf thread-stack: Allow for a thread stack array
> perf thread-stack: Factor out thread_stack__init()
> perf thread-stack: Allocate an array of thread stacks
> perf thread-stack: Fix thread stack processing for the idle task
> perf session: Add comment for perf_session__register_idle_thread()
>
> Andi Kleen (1):
> perf script: Fix LBR skid dump problems in brstackinsn
>
> Arnaldo Carvalho de Melo (11):
> perf trace: Check if the raw_syscalls:sys_{enter,exit} are setup before setting tp filter
> perf beauty mmap: PROT_WRITE should come before PROT_EXEC
> perf trace: Do not hardcode the size of the tracepoint common_ fields
> perf trace: Rename thread_thread->paths to thread_trace->files
> perf trace: Move the files table resizing to outside set_pathname()
> perf trace: Store the major number for a file when storing its pathname
> tools headers uapi: Grab a copy of usbdevice_fs.h
> perf beauty ioctl: Add generator for USBDEVFS_ ioctl commands
> perf trace: Wire up ioctl's USBDEBFS_ cmd table generator
> perf trace beauty: Export function to get the files for a thread
> perf trace beauty ioctl: Beautify USBDEVFS_ commands
>
> Colin Ian King (1):
> perf trace: Use correct SECCOMP prefix spelling, "SECOMP_*" -> "SECCOMP_*"
>
> Jiri Olsa (7):
> perf python: Do not force closing original perf descriptor in evlist.get_pollfd()
> perf c2c: Change the default coalesce setup
> perf c2c: Increase the HITM ratio limit for displayed cachelines
> tools power x86_energy_perf_policy: Override CFLAGS assignments and add LDFLAGS to build command
> tools thermal tmon: Allow overriding CFLAGS assignments
> tools power turbostat: Override CFLAGS assignments and add LDFLAGS to build command
> tools gpio: Allow overriding CFLAGS
>
> Stanislav Fomichev (1):
> perf build: Don't unconditionally link the libbfd feature test to -liberty and -lz
>
> tools/build/Makefile.feature | 4 +-
> tools/build/feature/Makefile | 10 +-
> tools/gpio/Makefile | 2 +-
> tools/include/uapi/linux/usbdevice_fs.h | 201 ++++++++++++++++++
> tools/perf/Makefile.config | 44 ++--
> tools/perf/Makefile.perf | 8 +
> tools/perf/builtin-c2c.c | 4 +-
> tools/perf/builtin-script.c | 21 +-
> tools/perf/builtin-trace.c | 142 +++++++++----
> tools/perf/check-headers.sh | 1 +
> tools/perf/trace/beauty/beauty.h | 7 +
> tools/perf/trace/beauty/ioctl.c | 22 ++
> tools/perf/trace/beauty/mmap.c | 2 +-
> tools/perf/trace/beauty/seccomp.c | 4 +-
> tools/perf/trace/beauty/usbdevfs_ioctl.sh | 19 ++
> tools/perf/util/dump-insn.c | 8 +
> tools/perf/util/dump-insn.h | 2 +
> tools/perf/util/intel-bts.c | 4 +-
> .../util/intel-pt-decoder/intel-pt-insn-decoder.c | 8 +
> tools/perf/util/intel-pt.c | 6 +-
> tools/perf/util/python.c | 3 +-
> tools/perf/util/session.c | 7 +
> tools/perf/util/thread-stack.c | 227 +++++++++++++++------
> tools/perf/util/thread-stack.h | 8 +-
> tools/power/x86/turbostat/Makefile | 8 +-
> tools/power/x86/x86_energy_perf_policy/Makefile | 6 +-
> tools/thermal/tmon/Makefile | 8 +-
> 27 files changed, 620 insertions(+), 166 deletions(-)
> create mode 100644 tools/include/uapi/linux/usbdevice_fs.h
> create mode 100755 tools/perf/trace/beauty/usbdevfs_ioctl.sh
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
* [GIT PULL 00/29] perf/core improvements and fixes
@ 2019-01-25 23:18 Arnaldo Carvalho de Melo
2019-01-26 9:52 ` Ingo Molnar
0 siblings, 1 reply; 41+ messages in thread
From: Arnaldo Carvalho de Melo @ 2019-01-25 23:18 UTC (permalink / raw)
To: Ingo Molnar
Cc: Clark Williams, linux-kernel, linux-perf-users,
Arnaldo Carvalho de Melo, Davidlohr Bueso, Song Liu, Tony Jones,
Arnaldo Carvalho de Melo
Hi Ingo,
Please consider pulling,
- Arnaldo
Test results at the end of this message, as usual.
The following changes since commit f575494d4a610278ea8597f2f798c8431b94e884:
Merge tag 'perf-core-for-mingo-5.0-20190121' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2019-01-22 11:07:01 +0100)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-5.0-20190126
for you to fetch changes up to 76a06125dd57ed2c7559410168b543313fa0cc51:
perf augmented_syscalls: Convert to bpf_map() (2019-01-25 15:12:11 +0100)
----------------------------------------------------------------
perf/core improvements and fixes:
BPF:
Song Liu:
- Fix synthesized PERF_RECORD_KSYMBOL/BPF_EVENT
Arnaldo Carvalho de Melo:
- Add bpf_map() helper, to make BPF map declararions more compact and
allow for BTF annotations to be made transparently.
perf script python:
Tony Jones:
- Remove explicit shebangs.
- Fix the PYTHON=python3 builds.
Core:
Davidlohr Bueso:
- Update rbtree implementation, getting it closer to the kernel one.
- Use cached rbtrees.
Arnaldo Carvalho de Melo:
- Remove some needless headers from .c and .h files fixing up the fallout,
to reduce building time when changes are made to .h files
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
----------------------------------------------------------------
Arnaldo Carvalho de Melo (16):
perf color: Add missing stdarg.g to color.h
perf symbols: Move symbol_conf to separate file
perf annotate: Remove lots of headers from annotate.h
perf tools: Move branch structs to branch.h
perf block-range: Add missing headers
perf symbols: Remove include map.h from dso.h
perf symbols: Remove some unnecessary includes from symbol.h
perf namespaces: Remove namespaces.h from .h headers
perf comm: Remove needless headers from comm.h
perf callchain: No need to include perf.h
perf bpf: Add bpf_map() helper
perf bpf: Convert pid_map() to bpf_map()
perf augmented_raw_syscalls: Use bpf_map()
perf trace: Fixup etcsnoop example
perf bpf examples: Convert etcsnoop to use bpf_map()
perf augmented_syscalls: Convert to bpf_map()
Davidlohr Bueso (7):
tools: Update rbtree implementation
perf machine: Use cached rbtrees
perf callchain: Use cached rbtrees
perf util: Use cached rbtree for rblists
perf symbols: Use cached rbtrees
perf hist: Use cached rbtrees
perf sched: Use cached rbtrees
Song Liu (1):
perf bpf: Fix synthesized PERF_RECORD_KSYMBOL/BPF_EVENT
Tony Jones (6):
perf script python: Add trace_context extension module to sys.modules
perf script python: Use PyBytes for attr in trace-event-python
perf script python: Remove explicit shebang from setup.py
perf script python: Remove explicit shebang from tests/attr.c
perf script python: Remove explicit shebang from Python scripts
perf script python: Add Python3 support to tests/attr.py
tools/include/linux/rbtree.h | 52 +++++-
tools/include/linux/rbtree_augmented.h | 60 +++++--
tools/lib/rbtree.c | 178 +++++++++++++-----
tools/perf/Makefile.perf | 4 +-
tools/perf/builtin-annotate.c | 4 +-
tools/perf/builtin-c2c.c | 6 +-
tools/perf/builtin-diff.c | 10 +-
tools/perf/builtin-probe.c | 1 +
tools/perf/builtin-report.c | 3 +-
tools/perf/builtin-sched.c | 45 ++---
tools/perf/builtin-top.c | 2 +-
tools/perf/builtin-trace.c | 3 +-
tools/perf/examples/bpf/augmented_raw_syscalls.c | 14 +-
tools/perf/examples/bpf/augmented_syscalls.c | 8 +-
tools/perf/examples/bpf/etcsnoop.c | 8 +-
tools/perf/include/bpf/bpf.h | 16 +-
tools/perf/scripts/python/exported-sql-viewer.py | 1 -
tools/perf/scripts/python/sched-migration.py | 2 -
tools/perf/scripts/python/stat-cpi.py | 1 -
tools/perf/tests/attr.py | 33 ++--
tools/perf/tests/hists_common.c | 8 +-
tools/perf/tests/hists_cumulate.c | 14 +-
tools/perf/tests/hists_link.c | 8 +-
tools/perf/tests/hists_output.c | 32 ++--
tools/perf/ui/browsers/hists.c | 16 +-
tools/perf/ui/browsers/map.c | 1 +
tools/perf/ui/gtk/annotate.c | 1 +
tools/perf/ui/gtk/hists.c | 6 +-
tools/perf/ui/stdio/hist.c | 3 +-
tools/perf/util/annotate.c | 1 +
tools/perf/util/annotate.h | 14 +-
tools/perf/util/block-range.c | 2 +
tools/perf/util/block-range.h | 6 +-
tools/perf/util/bpf-event.c | 10 +-
tools/perf/util/branch.h | 27 ++-
tools/perf/util/build-id.c | 13 +-
tools/perf/util/build-id.h | 3 +-
tools/perf/util/callchain.h | 1 -
tools/perf/util/color.h | 1 +
tools/perf/util/comm.c | 1 +
tools/perf/util/comm.h | 4 +-
tools/perf/util/dso.c | 10 +-
tools/perf/util/dso.h | 16 +-
tools/perf/util/event.h | 21 +--
tools/perf/util/hist.c | 199 ++++++++++++---------
tools/perf/util/hist.h | 10 +-
tools/perf/util/intlist.h | 2 +-
tools/perf/util/jitdump.c | 1 +
tools/perf/util/machine.c | 53 +++---
tools/perf/util/machine.h | 12 +-
tools/perf/util/map.c | 8 +-
tools/perf/util/metricgroup.c | 2 +-
tools/perf/util/probe-event.c | 4 +-
tools/perf/util/probe-event.h | 5 +-
tools/perf/util/probe-file.c | 1 +
tools/perf/util/rb_resort.h | 8 +-
tools/perf/util/rblist.c | 28 +--
tools/perf/util/rblist.h | 2 +-
.../util/scripting-engines/trace-event-python.c | 15 +-
tools/perf/util/setup.py | 2 -
tools/perf/util/sort.h | 4 +-
tools/perf/util/srcline.c | 43 +++--
tools/perf/util/srcline.h | 13 +-
tools/perf/util/stat-display.c | 1 +
tools/perf/util/stat-shadow.c | 2 +-
tools/perf/util/strlist.h | 2 +-
tools/perf/util/symbol-minimal.c | 1 +
tools/perf/util/symbol.c | 87 ++++-----
tools/perf/util/symbol.h | 88 ++-------
tools/perf/util/symbol_conf.h | 73 ++++++++
tools/perf/util/symbol_fprintf.c | 3 +-
tools/perf/util/thread.h | 1 +
tools/perf/util/util.c | 1 +
73 files changed, 810 insertions(+), 531 deletions(-)
create mode 100644 tools/perf/util/symbol_conf.h
Test results:
The first ones are container based builds of tools/perf with and without libelf
support. Where clang is available, it is also used to build perf with/without
libelf, and building with LIBCLANGLLVM=1 (built-in clang) with gcc and clang
when clang and its devel libraries are installed.
The objtool and samples/bpf/ builds are disabled now that I'm switching from
using the sources in a local volume to fetching them from a http server to
build it inside the container, to make it easier to build in a container cluster.
Those will come back later.
Several are cross builds, the ones with -x-ARCH and the android one, and those
may not have all the features built, due to lack of multi-arch devel packages,
available and being used so far on just a few, like
debian:experimental-x-{arm64,mipsel}.
The 'perf test' one will perform a variety of tests exercising
tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
with a variety of command line event specifications to then intercept the
sys_perf_event syscall to check that the perf_event_attr fields are set up as
expected, among a variety of other unit tests.
Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
with a variety of feature sets, exercising the build with an incomplete set of
features as well as with a complete one. It is planned to have it run on each
of the containers mentioned above, using some container orchestration
infrastructure. Get in contact if interested in helping having this in place.
$ dm
1 alpine:3.4 : Ok gcc (Alpine 5.3.0) 5.3.0
2 alpine:3.5 : Ok gcc (Alpine 6.2.1) 6.2.1 20160822
3 alpine:3.6 : Ok gcc (Alpine 6.3.0) 6.3.0
4 alpine:3.7 : Ok gcc (Alpine 6.4.0) 6.4.0
5 alpine:3.8 : Ok gcc (Alpine 6.4.0) 6.4.0
6 alpine:edge : Ok gcc (Alpine 8.2.0) 8.2.0
7 amazonlinux:1 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
8 amazonlinux:2 : Ok gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
9 android-ndk:r12b-arm : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
10 android-ndk:r15c-arm : Ok gcc (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6)
11 centos:5 : Ok gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-55)
12 centos:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
13 centos:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
14 clearlinux:latest : Ok gcc (Clear Linux OS for Intel Architecture) 8.2.1 20180502
15 debian:7 : Ok gcc (Debian 4.7.2-5) 4.7.2
16 debian:8 : Ok gcc (Debian 4.9.2-10+deb8u2) 4.9.2
17 debian:9 : Ok gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
18 debian:experimental : Ok gcc (Debian 8.2.0-13) 8.2.0
19 debian:experimental-x-arm64 : Ok gcc (Debian 8.2.0-13) 8.2.0
20 debian:experimental-x-mips : Ok gcc (Debian 8.2.0-13) 8.2.0
21 debian:experimental-x-mips64 : Ok gcc (Debian 8.2.0-13) 8.2.0
22 debian:experimental-x-mipsel : Ok gcc (Debian 8.2.0-13) 8.2.0
23 fedora:20 : Ok gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-7)
24 fedora:22 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
25 fedora:23 : Ok gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
26 fedora:24 : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
27 fedora:24-x-ARC-uClibc : Ok gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
28 fedora:25 : Ok gcc (GCC) 6.4.1 20170727 (Red Hat 6.4.1-1)
29 fedora:26 : Ok gcc (GCC) 7.3.1 20180130 (Red Hat 7.3.1-2)
30 fedora:27 : Ok gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
31 fedora:28 : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
32 fedora:29 : Ok gcc (GCC) 8.2.1 20181105 (Red Hat 8.2.1-5)
33 fedora:rawhide : Ok gcc (GCC) 8.2.1 20190109 (Red Hat 8.2.1-7)
34 gentoo-stage3-amd64:latest : Ok gcc (Gentoo 7.3.0-r3 p1.4) 7.3.0
35 mageia:5 : Ok gcc (GCC) 4.9.2
36 mageia:6 : Ok gcc (Mageia 5.5.0-1.mga6) 5.5.0
37 opensuse:13.2 : Ok gcc (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]
38 opensuse:15.0 : Ok gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812]
39 opensuse:42.1 : Ok gcc (SUSE Linux) 4.8.5
40 opensuse:42.2 : Ok gcc (SUSE Linux) 4.8.5
41 opensuse:42.3 : Ok gcc (SUSE Linux) 4.8.5
42 opensuse:tumbleweed : Ok gcc (SUSE Linux) 8.2.1 20181108 [gcc-8-branch revision 265914]
43 oraclelinux:6 : Ok gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23.0.1)
44 oraclelinux:7 : Ok gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36.0.1)
45 ubuntu:12.04.5 : Ok gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
46 ubuntu:14.04.4 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
47 ubuntu:14.04.4-x-linaro-arm64 : Ok gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
48 ubuntu:16.04 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
49 ubuntu:16.04-x-arm : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
50 ubuntu:16.04-x-arm64 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
51 ubuntu:16.04-x-powerpc : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
52 ubuntu:16.04-x-powerpc64 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
53 ubuntu:16.04-x-powerpc64el : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
54 ubuntu:16.04-x-s390 : Ok gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
55 ubuntu:17.10 : Ok gcc (Ubuntu 7.2.0-8ubuntu3.2) 7.2.0
56 ubuntu:18.04 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
57 ubuntu:18.04-x-arm : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
58 ubuntu:18.04-x-arm64 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
59 ubuntu:18.04-x-m68k : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
60 ubuntu:18.04-x-powerpc : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
61 ubuntu:18.04-x-powerpc64 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
62 ubuntu:18.04-x-powerpc64el : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
63 ubuntu:18.04-x-riscv64 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
64 ubuntu:18.04-x-s390 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
65 ubuntu:18.04-x-sh4 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
66 ubuntu:18.04-x-sparc64 : Ok gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
67 ubuntu:18.10 : Ok gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0
68 ubuntu:19.04 : Ok gcc (Ubuntu 8.2.0-12ubuntu1) 8.2.0
69 ubuntu:19.04-x-alpha : Ok gcc (Ubuntu 8.2.0-12ubuntu1) 8.2.0
70 ubuntu:19.04-x-hppa : Ok gcc (Ubuntu 8.2.0-12ubuntu1) 8.2.0
$
# uname -a
Linux quaco 4.20.3-200.fc29.x86_64 #1 SMP Thu Jan 17 15:19:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
# git log --oneline -1
76a06125dd57 perf augmented_syscalls: Convert to bpf_map()
# perf version --build-options
perf version 5.0.rc2.g76a061
dwarf: [ on ] # HAVE_DWARF_SUPPORT
dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT
glibc: [ on ] # HAVE_GLIBC_SUPPORT
gtk2: [ on ] # HAVE_GTK2_SUPPORT
syscall_table: [ on ] # HAVE_SYSCALL_TABLE_SUPPORT
libbfd: [ on ] # HAVE_LIBBFD_SUPPORT
libelf: [ on ] # HAVE_LIBELF_SUPPORT
libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT
numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT
libperl: [ on ] # HAVE_LIBPERL_SUPPORT
libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
libslang: [ on ] # HAVE_SLANG_SUPPORT
libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT
libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT
libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT
zlib: [ on ] # HAVE_ZLIB_SUPPORT
lzma: [ on ] # HAVE_LZMA_SUPPORT
get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT
bpf: [ on ] # HAVE_LIBBPF_SUPPORT
# perf test
1: vmlinux symtab matches kallsyms : Ok
2: Detect openat syscall event : Ok
3: Detect openat syscall event on all cpus : Ok
4: Read samples using the mmap interface : Ok
5: Test data source output : Ok
6: Parse event definition strings : Ok
7: Simple expression parser : Ok
8: PERF_RECORD_* events & perf_sample fields : Ok
9: Parse perf pmu format : Ok
10: DSO data read : Ok
11: DSO data cache : Ok
12: DSO data reopen : Ok
13: Roundtrip evsel->name : Ok
14: Parse sched tracepoints fields : Ok
15: syscalls:sys_enter_openat event fields : Ok
16: Setup struct perf_event_attr : Ok
17: Match and link multiple hists : Ok
18: 'import perf' in python : Ok
19: Breakpoint overflow signal handler : Ok
20: Breakpoint overflow sampling : Ok
21: Breakpoint accounting : Ok
22: Watchpoint :
22.1: Read Only Watchpoint : Skip
22.2: Write Only Watchpoint : Ok
22.3: Read / Write Watchpoint : Ok
22.4: Modify Watchpoint : Ok
23: Number of exit events of a simple workload : Ok
24: Software clock events period values : Ok
25: Object code reading : Ok
26: Sample parsing : Ok
27: Use a dummy software event to keep tracking : Ok
28: Parse with no sample_id_all bit set : Ok
29: Filter hist entries : Ok
30: Lookup mmap thread : Ok
31: Share thread mg : Ok
32: Sort output of hist entries : Ok
33: Cumulate child hist entries : Ok
34: Track with sched_switch : Ok
35: Filter fds with revents mask in a fdarray : Ok
36: Add fd to a fdarray, making it autogrow : Ok
37: kmod_path__parse : Ok
38: Thread map : Ok
39: LLVM search and compile :
39.1: Basic BPF llvm compile : Ok
39.2: kbuild searching : Ok
39.3: Compile source for BPF prologue generation : Ok
39.4: Compile source for BPF relocation : Ok
40: Session topology : Ok
41: BPF filter :
41.1: Basic BPF filtering : Ok
41.2: BPF pinning : Ok
41.3: BPF prologue generation : Ok
41.4: BPF relocation checker : Ok
42: Synthesize thread map : Ok
43: Remove thread map : Ok
44: Synthesize cpu map : Ok
45: Synthesize stat config : Ok
46: Synthesize stat : Ok
47: Synthesize stat round : Ok
48: Synthesize attr update : Ok
49: Event times : Ok
50: Read backward ring buffer : Ok
51: Print cpu map : Ok
52: Probe SDT events : Ok
53: is_printable_array : Ok
54: Print bitmap : Ok
55: perf hooks : Ok
56: builtin clang support : Skip (not compiled in)
57: unit_number__scnprintf : Ok
58: mem2node : Ok
59: x86 rdpmc : Ok
60: Convert perf time to TSC : Ok
61: DWARF unwind : Ok
62: x86 instruction decoder - new instructions : Ok
63: x86 bp modify : Ok
64: probe libc's inet_pton & backtrace it with ping : Ok
65: Use vfs_getname probe to get syscall args filenames : Ok
66: Add vfs_getname probe to get syscall args filenames : Ok
67: Check open filename arg using perf trace + vfs_getname: Ok
$ make -C tools/perf build-test
make: Entering directory '/home/acme/git/perf/tools/perf'
- tarpkg: ./tests/perf-targz-src-pkg .
make_no_libunwind_O: make NO_LIBUNWIND=1
make_no_demangle_O: make NO_DEMANGLE=1
make_no_libperl_O: make NO_LIBPERL=1
make_no_libelf_O: make NO_LIBELF=1
make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
make_pure_O: make
make_no_newt_O: make NO_NEWT=1
make_no_libnuma_O: make NO_LIBNUMA=1
make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
make_install_prefix_slash_O: make install prefix=/tmp/krava/
make_clean_all_O: make clean all
make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
make_no_libaudit_O: make NO_LIBAUDIT=1
make_no_libbpf_O: make NO_LIBBPF=1
make_with_clangllvm_O: make LIBCLANGLLVM=1
make_util_map_o_O: make util/map.o
make_tags_O: make tags
make_static_O: make LDFLAGS=-static
make_with_babeltrace_O: make LIBBABELTRACE=1
make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
make_install_bin_O: make install-bin
make_doc_O: make doc
make_no_slang_O: make NO_SLANG=1
make_debug_O: make DEBUG=1
make_install_prefix_O: make install prefix=/tmp/krava
make_util_pmu_bison_o_O: make util/pmu-bison.o
make_no_libbionic_O: make NO_LIBBIONIC=1
make_no_auxtrace_O: make NO_AUXTRACE=1
make_no_gtk2_O: make NO_GTK2=1
make_no_backtrace_O: make NO_BACKTRACE=1
make_no_libpython_O: make NO_LIBPYTHON=1
make_perf_o_O: make perf.o
make_help_O: make help
make_install_O: make install
OK
make: Leaving directory '/home/acme/git/perf/tools/perf'
$
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [GIT PULL 00/29] perf/core improvements and fixes
2019-01-25 23:18 Arnaldo Carvalho de Melo
@ 2019-01-26 9:52 ` Ingo Molnar
0 siblings, 0 replies; 41+ messages in thread
From: Ingo Molnar @ 2019-01-26 9:52 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo
Cc: Clark Williams, linux-kernel, linux-perf-users, Davidlohr Bueso,
Song Liu, Tony Jones, Arnaldo Carvalho de Melo
* Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.
>
> The following changes since commit f575494d4a610278ea8597f2f798c8431b94e884:
>
> Merge tag 'perf-core-for-mingo-5.0-20190121' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2019-01-22 11:07:01 +0100)
>
> are available in the Git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-core-for-mingo-5.0-20190126
>
> for you to fetch changes up to 76a06125dd57ed2c7559410168b543313fa0cc51:
>
> perf augmented_syscalls: Convert to bpf_map() (2019-01-25 15:12:11 +0100)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> BPF:
>
> Song Liu:
>
> - Fix synthesized PERF_RECORD_KSYMBOL/BPF_EVENT
>
> Arnaldo Carvalho de Melo:
>
> - Add bpf_map() helper, to make BPF map declararions more compact and
> allow for BTF annotations to be made transparently.
>
> perf script python:
>
> Tony Jones:
>
> - Remove explicit shebangs.
>
> - Fix the PYTHON=python3 builds.
>
> Core:
>
> Davidlohr Bueso:
>
> - Update rbtree implementation, getting it closer to the kernel one.
>
> - Use cached rbtrees.
>
> Arnaldo Carvalho de Melo:
>
> - Remove some needless headers from .c and .h files fixing up the fallout,
> to reduce building time when changes are made to .h files
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (16):
> perf color: Add missing stdarg.g to color.h
> perf symbols: Move symbol_conf to separate file
> perf annotate: Remove lots of headers from annotate.h
> perf tools: Move branch structs to branch.h
> perf block-range: Add missing headers
> perf symbols: Remove include map.h from dso.h
> perf symbols: Remove some unnecessary includes from symbol.h
> perf namespaces: Remove namespaces.h from .h headers
> perf comm: Remove needless headers from comm.h
> perf callchain: No need to include perf.h
> perf bpf: Add bpf_map() helper
> perf bpf: Convert pid_map() to bpf_map()
> perf augmented_raw_syscalls: Use bpf_map()
> perf trace: Fixup etcsnoop example
> perf bpf examples: Convert etcsnoop to use bpf_map()
> perf augmented_syscalls: Convert to bpf_map()
>
> Davidlohr Bueso (7):
> tools: Update rbtree implementation
> perf machine: Use cached rbtrees
> perf callchain: Use cached rbtrees
> perf util: Use cached rbtree for rblists
> perf symbols: Use cached rbtrees
> perf hist: Use cached rbtrees
> perf sched: Use cached rbtrees
>
> Song Liu (1):
> perf bpf: Fix synthesized PERF_RECORD_KSYMBOL/BPF_EVENT
>
> Tony Jones (6):
> perf script python: Add trace_context extension module to sys.modules
> perf script python: Use PyBytes for attr in trace-event-python
> perf script python: Remove explicit shebang from setup.py
> perf script python: Remove explicit shebang from tests/attr.c
> perf script python: Remove explicit shebang from Python scripts
> perf script python: Add Python3 support to tests/attr.py
>
> tools/include/linux/rbtree.h | 52 +++++-
> tools/include/linux/rbtree_augmented.h | 60 +++++--
> tools/lib/rbtree.c | 178 +++++++++++++-----
> tools/perf/Makefile.perf | 4 +-
> tools/perf/builtin-annotate.c | 4 +-
> tools/perf/builtin-c2c.c | 6 +-
> tools/perf/builtin-diff.c | 10 +-
> tools/perf/builtin-probe.c | 1 +
> tools/perf/builtin-report.c | 3 +-
> tools/perf/builtin-sched.c | 45 ++---
> tools/perf/builtin-top.c | 2 +-
> tools/perf/builtin-trace.c | 3 +-
> tools/perf/examples/bpf/augmented_raw_syscalls.c | 14 +-
> tools/perf/examples/bpf/augmented_syscalls.c | 8 +-
> tools/perf/examples/bpf/etcsnoop.c | 8 +-
> tools/perf/include/bpf/bpf.h | 16 +-
> tools/perf/scripts/python/exported-sql-viewer.py | 1 -
> tools/perf/scripts/python/sched-migration.py | 2 -
> tools/perf/scripts/python/stat-cpi.py | 1 -
> tools/perf/tests/attr.py | 33 ++--
> tools/perf/tests/hists_common.c | 8 +-
> tools/perf/tests/hists_cumulate.c | 14 +-
> tools/perf/tests/hists_link.c | 8 +-
> tools/perf/tests/hists_output.c | 32 ++--
> tools/perf/ui/browsers/hists.c | 16 +-
> tools/perf/ui/browsers/map.c | 1 +
> tools/perf/ui/gtk/annotate.c | 1 +
> tools/perf/ui/gtk/hists.c | 6 +-
> tools/perf/ui/stdio/hist.c | 3 +-
> tools/perf/util/annotate.c | 1 +
> tools/perf/util/annotate.h | 14 +-
> tools/perf/util/block-range.c | 2 +
> tools/perf/util/block-range.h | 6 +-
> tools/perf/util/bpf-event.c | 10 +-
> tools/perf/util/branch.h | 27 ++-
> tools/perf/util/build-id.c | 13 +-
> tools/perf/util/build-id.h | 3 +-
> tools/perf/util/callchain.h | 1 -
> tools/perf/util/color.h | 1 +
> tools/perf/util/comm.c | 1 +
> tools/perf/util/comm.h | 4 +-
> tools/perf/util/dso.c | 10 +-
> tools/perf/util/dso.h | 16 +-
> tools/perf/util/event.h | 21 +--
> tools/perf/util/hist.c | 199 ++++++++++++---------
> tools/perf/util/hist.h | 10 +-
> tools/perf/util/intlist.h | 2 +-
> tools/perf/util/jitdump.c | 1 +
> tools/perf/util/machine.c | 53 +++---
> tools/perf/util/machine.h | 12 +-
> tools/perf/util/map.c | 8 +-
> tools/perf/util/metricgroup.c | 2 +-
> tools/perf/util/probe-event.c | 4 +-
> tools/perf/util/probe-event.h | 5 +-
> tools/perf/util/probe-file.c | 1 +
> tools/perf/util/rb_resort.h | 8 +-
> tools/perf/util/rblist.c | 28 +--
> tools/perf/util/rblist.h | 2 +-
> .../util/scripting-engines/trace-event-python.c | 15 +-
> tools/perf/util/setup.py | 2 -
> tools/perf/util/sort.h | 4 +-
> tools/perf/util/srcline.c | 43 +++--
> tools/perf/util/srcline.h | 13 +-
> tools/perf/util/stat-display.c | 1 +
> tools/perf/util/stat-shadow.c | 2 +-
> tools/perf/util/strlist.h | 2 +-
> tools/perf/util/symbol-minimal.c | 1 +
> tools/perf/util/symbol.c | 87 ++++-----
> tools/perf/util/symbol.h | 88 ++-------
> tools/perf/util/symbol_conf.h | 73 ++++++++
> tools/perf/util/symbol_fprintf.c | 3 +-
> tools/perf/util/thread.h | 1 +
> tools/perf/util/util.c | 1 +
> 73 files changed, 810 insertions(+), 531 deletions(-)
> create mode 100644 tools/perf/util/symbol_conf.h
Pulled, thanks a lot Arnaldo!
Ingo
^ permalink raw reply [flat|nested] 41+ messages in thread
end of thread, other threads:[~2019-01-26 9:52 UTC | newest]
Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-03 16:33 [GIT PULL 00/29] perf/core improvements and fixes Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 01/29] perf hists: Factor output_resort from hists__output_resort Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 02/29] perf hists: Introduce perf_evsel__output_resort function Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 03/29] perf hists: Add _idx fields into struct perf_hpp_fmt Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 04/29] perf hists: Use struct perf_hpp_fmt::idx in perf_hpp__reset_width Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 05/29] perf hists: Add 'equal' method to perf_hpp_fmt struct Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 06/29] perf hists: Add 'hpp__equal' callback function Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 07/29] perf hists: Make hpp setup function generic Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 08/29] perf report: Move UI initialization ahead of sort setup Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 09/29] perf top: " Arnaldo Carvalho de Melo
2016-02-03 16:33 ` [PATCH 10/29] perf hists: Allocate output sort field Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 11/29] perf hists: Remove perf_hpp__column_(disable|enable) Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 12/29] perf hists: Properly release format fields Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 13/29] perf hists: Separate sort fields parsing into setup_sort_list function Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 14/29] perf hists: Separate output fields parsing into setup_output_list function Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 15/29] perf hists: Introduce struct perf_hpp_list Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 16/29] perf hists: Introduce perf_hpp_list__init function Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 17/29] perf hists: Add perf_hpp_list register helpers Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 18/29] perf hists: Pass perf_hpp_list all the way through setup_output_list Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 19/29] perf hists: Introduce perf_hpp_list__for_each_format macro Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 20/29] perf hists: Introduce perf_hpp_list__for_each_format_safe macro Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 21/29] perf hists: Introduce perf_hpp_list__for_each_sort_list macro Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 22/29] perf hists: Introduce perf_hpp_list__for_each_sort_list_safe macro Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 23/29] perf hists: Add struct perf_hpp_list argument to helper functions Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 24/29] perf tools: Add hpp_list into struct hists object Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 25/29] perf hists: Introduce hists__for_each_format macro Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 26/29] perf hists: Introduce hists__for_each_sort_list macro Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 27/29] perf report: Update documentation of --sort option Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 28/29] perf report: Update documention of --percent-limit option Arnaldo Carvalho de Melo
2016-02-03 16:34 ` [PATCH 29/29] perf hists browser: Add 'L' hotkey to change percent limit Arnaldo Carvalho de Melo
2016-02-04 7:59 ` [GIT PULL 00/29] perf/core improvements and fixes Ingo Molnar
-- strict thread matches above, loose matches on Subject: below --
2019-01-25 23:18 Arnaldo Carvalho de Melo
2019-01-26 9:52 ` Ingo Molnar
2019-01-03 12:45 Arnaldo Carvalho de Melo
2019-01-03 13:07 ` Ingo Molnar
2016-12-20 17:03 Arnaldo Carvalho de Melo
2016-12-20 19:15 ` Ingo Molnar
2013-11-04 17:58 Arnaldo Carvalho de Melo
2013-11-04 20:16 ` Ingo Molnar
2013-11-05 7:52 ` Ingo Molnar
2013-11-05 8:05 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).