diff options
author | Jiri Olsa <jolsa@redhat.com> | 2014-01-07 07:47:25 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-02-18 07:34:48 -0500 |
commit | 352ea45a7229df8f5ae83c0757f6d426ba0f41b5 (patch) | |
tree | 594983cc1b5917b4e7b116cc51d388f81cd190b9 /tools/perf/tests | |
parent | 1cf0382af98f6365b01b59453fe18dffe3c73d2f (diff) |
perf callchain: Add mask into struct regs_dump
Adding mask info into struct regs_dump to make the registers information
compact.
The mask was always passed along, so logically the mask info fits more
into the struct regs_dump.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Jean Pihet <jean.pihet@linaro.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jean Pihet <jean.pihet@linaro.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1389098853-14466-9-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/tests')
-rw-r--r-- | tools/perf/tests/dwarf-unwind.c | 2 | ||||
-rw-r--r-- | tools/perf/tests/sample-parsing.c | 17 |
2 files changed, 9 insertions, 10 deletions
diff --git a/tools/perf/tests/dwarf-unwind.c b/tools/perf/tests/dwarf-unwind.c index a203c0caaf8a..f16ea2808a75 100644 --- a/tools/perf/tests/dwarf-unwind.c +++ b/tools/perf/tests/dwarf-unwind.c | |||
@@ -72,7 +72,7 @@ static int unwind_thread(struct thread *thread, struct machine *machine) | |||
72 | } | 72 | } |
73 | 73 | ||
74 | err = unwind__get_entries(unwind_entry, &cnt, machine, thread, | 74 | err = unwind__get_entries(unwind_entry, &cnt, machine, thread, |
75 | PERF_REGS_MASK, &sample, MAX_STACK); | 75 | &sample, MAX_STACK); |
76 | if (err) | 76 | if (err) |
77 | pr_debug("unwind failed\n"); | 77 | pr_debug("unwind failed\n"); |
78 | else if (cnt != MAX_STACK) { | 78 | else if (cnt != MAX_STACK) { |
diff --git a/tools/perf/tests/sample-parsing.c b/tools/perf/tests/sample-parsing.c index 1b677202638d..0014d3c8c21c 100644 --- a/tools/perf/tests/sample-parsing.c +++ b/tools/perf/tests/sample-parsing.c | |||
@@ -22,8 +22,8 @@ | |||
22 | } while (0) | 22 | } while (0) |
23 | 23 | ||
24 | static bool samples_same(const struct perf_sample *s1, | 24 | static bool samples_same(const struct perf_sample *s1, |
25 | const struct perf_sample *s2, u64 type, u64 regs_user, | 25 | const struct perf_sample *s2, |
26 | u64 read_format) | 26 | u64 type, u64 read_format) |
27 | { | 27 | { |
28 | size_t i; | 28 | size_t i; |
29 | 29 | ||
@@ -95,8 +95,9 @@ static bool samples_same(const struct perf_sample *s1, | |||
95 | } | 95 | } |
96 | 96 | ||
97 | if (type & PERF_SAMPLE_REGS_USER) { | 97 | if (type & PERF_SAMPLE_REGS_USER) { |
98 | size_t sz = hweight_long(regs_user) * sizeof(u64); | 98 | size_t sz = hweight_long(s1->user_regs.mask) * sizeof(u64); |
99 | 99 | ||
100 | COMP(user_regs.mask); | ||
100 | COMP(user_regs.abi); | 101 | COMP(user_regs.abi); |
101 | if (s1->user_regs.abi && | 102 | if (s1->user_regs.abi && |
102 | (!s1->user_regs.regs || !s2->user_regs.regs || | 103 | (!s1->user_regs.regs || !s2->user_regs.regs || |
@@ -174,6 +175,7 @@ static int do_test(u64 sample_type, u64 sample_regs_user, u64 read_format) | |||
174 | .branch_stack = &branch_stack.branch_stack, | 175 | .branch_stack = &branch_stack.branch_stack, |
175 | .user_regs = { | 176 | .user_regs = { |
176 | .abi = PERF_SAMPLE_REGS_ABI_64, | 177 | .abi = PERF_SAMPLE_REGS_ABI_64, |
178 | .mask = sample_regs_user, | ||
177 | .regs = user_regs, | 179 | .regs = user_regs, |
178 | }, | 180 | }, |
179 | .user_stack = { | 181 | .user_stack = { |
@@ -201,8 +203,7 @@ static int do_test(u64 sample_type, u64 sample_regs_user, u64 read_format) | |||
201 | sample.read.one.id = 99; | 203 | sample.read.one.id = 99; |
202 | } | 204 | } |
203 | 205 | ||
204 | sz = perf_event__sample_event_size(&sample, sample_type, | 206 | sz = perf_event__sample_event_size(&sample, sample_type, read_format); |
205 | sample_regs_user, read_format); | ||
206 | bufsz = sz + 4096; /* Add a bit for overrun checking */ | 207 | bufsz = sz + 4096; /* Add a bit for overrun checking */ |
207 | event = malloc(bufsz); | 208 | event = malloc(bufsz); |
208 | if (!event) { | 209 | if (!event) { |
@@ -215,8 +216,7 @@ static int do_test(u64 sample_type, u64 sample_regs_user, u64 read_format) | |||
215 | event->header.misc = 0; | 216 | event->header.misc = 0; |
216 | event->header.size = sz; | 217 | event->header.size = sz; |
217 | 218 | ||
218 | err = perf_event__synthesize_sample(event, sample_type, | 219 | err = perf_event__synthesize_sample(event, sample_type, read_format, |
219 | sample_regs_user, read_format, | ||
220 | &sample, false); | 220 | &sample, false); |
221 | if (err) { | 221 | if (err) { |
222 | pr_debug("%s failed for sample_type %#"PRIx64", error %d\n", | 222 | pr_debug("%s failed for sample_type %#"PRIx64", error %d\n", |
@@ -244,8 +244,7 @@ static int do_test(u64 sample_type, u64 sample_regs_user, u64 read_format) | |||
244 | goto out_free; | 244 | goto out_free; |
245 | } | 245 | } |
246 | 246 | ||
247 | if (!samples_same(&sample, &sample_out, sample_type, | 247 | if (!samples_same(&sample, &sample_out, sample_type, read_format)) { |
248 | sample_regs_user, read_format)) { | ||
249 | pr_debug("parsing failed for sample_type %#"PRIx64"\n", | 248 | pr_debug("parsing failed for sample_type %#"PRIx64"\n", |
250 | sample_type); | 249 | sample_type); |
251 | goto out_free; | 250 | goto out_free; |