diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2013-08-27 04:23:06 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-08-29 14:29:28 -0400 |
commit | ef89325f773bc9f2f4e6019bd7f3d968ba85df9a (patch) | |
tree | a862b5eb16fa66c32558244796cb32264ca5af1f | |
parent | 07940293ba7a43070cdebda952b0e6025d80a383 (diff) |
perf tools: Remove references to struct ip_event
The ip_event struct assumes fixed positions for ip, pid and tid. That
is no longer true with the addition of PERF_SAMPLE_IDENTIFIER. The
information is anyway in struct sample, so use that instead.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1377591794-30553-5-git-send-email-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/builtin-inject.c | 4 | ||||
-rw-r--r-- | tools/perf/builtin-kmem.c | 4 | ||||
-rw-r--r-- | tools/perf/builtin-mem.c | 2 | ||||
-rw-r--r-- | tools/perf/builtin-script.c | 4 | ||||
-rw-r--r-- | tools/perf/builtin-top.c | 11 | ||||
-rw-r--r-- | tools/perf/tests/hists_link.c | 20 | ||||
-rw-r--r-- | tools/perf/util/build-id.c | 8 | ||||
-rw-r--r-- | tools/perf/util/event.c | 6 | ||||
-rw-r--r-- | tools/perf/util/event.h | 11 | ||||
-rw-r--r-- | tools/perf/util/evsel.c | 4 | ||||
-rw-r--r-- | tools/perf/util/session.c | 8 |
11 files changed, 35 insertions, 47 deletions
diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c index 0d4ae1dd7b60..ffacd464f9f6 100644 --- a/tools/perf/builtin-inject.c +++ b/tools/perf/builtin-inject.c | |||
@@ -198,7 +198,7 @@ static int perf_event__inject_buildid(struct perf_tool *tool, | |||
198 | 198 | ||
199 | cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; | 199 | cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; |
200 | 200 | ||
201 | thread = machine__findnew_thread(machine, event->ip.pid, event->ip.pid); | 201 | thread = machine__findnew_thread(machine, sample->pid, sample->pid); |
202 | if (thread == NULL) { | 202 | if (thread == NULL) { |
203 | pr_err("problem processing %d event, skipping it.\n", | 203 | pr_err("problem processing %d event, skipping it.\n", |
204 | event->header.type); | 204 | event->header.type); |
@@ -206,7 +206,7 @@ static int perf_event__inject_buildid(struct perf_tool *tool, | |||
206 | } | 206 | } |
207 | 207 | ||
208 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, | 208 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, |
209 | event->ip.ip, &al); | 209 | sample->ip, &al); |
210 | 210 | ||
211 | if (al.map != NULL) { | 211 | if (al.map != NULL) { |
212 | if (!al.map->dso->hit) { | 212 | if (!al.map->dso->hit) { |
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index c32477837cb0..c2dff9cb1f2c 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c | |||
@@ -305,8 +305,8 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused, | |||
305 | struct perf_evsel *evsel, | 305 | struct perf_evsel *evsel, |
306 | struct machine *machine) | 306 | struct machine *machine) |
307 | { | 307 | { |
308 | struct thread *thread = machine__findnew_thread(machine, event->ip.pid, | 308 | struct thread *thread = machine__findnew_thread(machine, sample->pid, |
309 | event->ip.pid); | 309 | sample->pid); |
310 | 310 | ||
311 | if (thread == NULL) { | 311 | if (thread == NULL) { |
312 | pr_debug("problem processing %d event, skipping it.\n", | 312 | pr_debug("problem processing %d event, skipping it.\n", |
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c index 706a1faa9559..791b432df847 100644 --- a/tools/perf/builtin-mem.c +++ b/tools/perf/builtin-mem.c | |||
@@ -94,7 +94,7 @@ dump_raw_samples(struct perf_tool *tool, | |||
94 | symbol_conf.field_sep, | 94 | symbol_conf.field_sep, |
95 | sample->tid, | 95 | sample->tid, |
96 | symbol_conf.field_sep, | 96 | symbol_conf.field_sep, |
97 | event->ip.ip, | 97 | sample->ip, |
98 | symbol_conf.field_sep, | 98 | symbol_conf.field_sep, |
99 | sample->addr, | 99 | sample->addr, |
100 | symbol_conf.field_sep, | 100 | symbol_conf.field_sep, |
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index d82712f169b3..93a34cef9676 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c | |||
@@ -501,8 +501,8 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused, | |||
501 | struct machine *machine) | 501 | struct machine *machine) |
502 | { | 502 | { |
503 | struct addr_location al; | 503 | struct addr_location al; |
504 | struct thread *thread = machine__findnew_thread(machine, event->ip.pid, | 504 | struct thread *thread = machine__findnew_thread(machine, sample->pid, |
505 | event->ip.tid); | 505 | sample->tid); |
506 | 506 | ||
507 | if (thread == NULL) { | 507 | if (thread == NULL) { |
508 | pr_debug("problem processing %d event, skipping it.\n", | 508 | pr_debug("problem processing %d event, skipping it.\n", |
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index e37521fc715a..212214162bb2 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c | |||
@@ -689,7 +689,7 @@ static void perf_event__process_sample(struct perf_tool *tool, | |||
689 | { | 689 | { |
690 | struct perf_top *top = container_of(tool, struct perf_top, tool); | 690 | struct perf_top *top = container_of(tool, struct perf_top, tool); |
691 | struct symbol *parent = NULL; | 691 | struct symbol *parent = NULL; |
692 | u64 ip = event->ip.ip; | 692 | u64 ip = sample->ip; |
693 | struct addr_location al; | 693 | struct addr_location al; |
694 | int err; | 694 | int err; |
695 | 695 | ||
@@ -699,10 +699,10 @@ static void perf_event__process_sample(struct perf_tool *tool, | |||
699 | if (!seen) | 699 | if (!seen) |
700 | seen = intlist__new(NULL); | 700 | seen = intlist__new(NULL); |
701 | 701 | ||
702 | if (!intlist__has_entry(seen, event->ip.pid)) { | 702 | if (!intlist__has_entry(seen, sample->pid)) { |
703 | pr_err("Can't find guest [%d]'s kernel information\n", | 703 | pr_err("Can't find guest [%d]'s kernel information\n", |
704 | event->ip.pid); | 704 | sample->pid); |
705 | intlist__add(seen, event->ip.pid); | 705 | intlist__add(seen, sample->pid); |
706 | } | 706 | } |
707 | return; | 707 | return; |
708 | } | 708 | } |
@@ -836,7 +836,8 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx) | |||
836 | break; | 836 | break; |
837 | case PERF_RECORD_MISC_GUEST_KERNEL: | 837 | case PERF_RECORD_MISC_GUEST_KERNEL: |
838 | ++top->guest_kernel_samples; | 838 | ++top->guest_kernel_samples; |
839 | machine = perf_session__find_machine(session, event->ip.pid); | 839 | machine = perf_session__find_machine(session, |
840 | sample.pid); | ||
840 | break; | 841 | break; |
841 | case PERF_RECORD_MISC_GUEST_USER: | 842 | case PERF_RECORD_MISC_GUEST_USER: |
842 | ++top->guest_us_samples; | 843 | ++top->guest_us_samples; |
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c index 87f9f7280c40..4228ffc0d968 100644 --- a/tools/perf/tests/hists_link.c +++ b/tools/perf/tests/hists_link.c | |||
@@ -211,15 +211,13 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine) | |||
211 | list_for_each_entry(evsel, &evlist->entries, node) { | 211 | list_for_each_entry(evsel, &evlist->entries, node) { |
212 | for (k = 0; k < ARRAY_SIZE(fake_common_samples); k++) { | 212 | for (k = 0; k < ARRAY_SIZE(fake_common_samples); k++) { |
213 | const union perf_event event = { | 213 | const union perf_event event = { |
214 | .ip = { | 214 | .header = { |
215 | .header = { | 215 | .misc = PERF_RECORD_MISC_USER, |
216 | .misc = PERF_RECORD_MISC_USER, | ||
217 | }, | ||
218 | .pid = fake_common_samples[k].pid, | ||
219 | .ip = fake_common_samples[k].ip, | ||
220 | }, | 216 | }, |
221 | }; | 217 | }; |
222 | 218 | ||
219 | sample.pid = fake_common_samples[k].pid; | ||
220 | sample.ip = fake_common_samples[k].ip; | ||
223 | if (perf_event__preprocess_sample(&event, machine, &al, | 221 | if (perf_event__preprocess_sample(&event, machine, &al, |
224 | &sample) < 0) | 222 | &sample) < 0) |
225 | goto out; | 223 | goto out; |
@@ -235,15 +233,13 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine) | |||
235 | 233 | ||
236 | for (k = 0; k < ARRAY_SIZE(fake_samples[i]); k++) { | 234 | for (k = 0; k < ARRAY_SIZE(fake_samples[i]); k++) { |
237 | const union perf_event event = { | 235 | const union perf_event event = { |
238 | .ip = { | 236 | .header = { |
239 | .header = { | 237 | .misc = PERF_RECORD_MISC_USER, |
240 | .misc = PERF_RECORD_MISC_USER, | ||
241 | }, | ||
242 | .pid = fake_samples[i][k].pid, | ||
243 | .ip = fake_samples[i][k].ip, | ||
244 | }, | 238 | }, |
245 | }; | 239 | }; |
246 | 240 | ||
241 | sample.pid = fake_samples[i][k].pid; | ||
242 | sample.ip = fake_samples[i][k].ip; | ||
247 | if (perf_event__preprocess_sample(&event, machine, &al, | 243 | if (perf_event__preprocess_sample(&event, machine, &al, |
248 | &sample) < 0) | 244 | &sample) < 0) |
249 | goto out; | 245 | goto out; |
diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c index 0f9d27a6bc8f..fb584092eb88 100644 --- a/tools/perf/util/build-id.c +++ b/tools/perf/util/build-id.c | |||
@@ -18,14 +18,14 @@ | |||
18 | 18 | ||
19 | int build_id__mark_dso_hit(struct perf_tool *tool __maybe_unused, | 19 | int build_id__mark_dso_hit(struct perf_tool *tool __maybe_unused, |
20 | union perf_event *event, | 20 | union perf_event *event, |
21 | struct perf_sample *sample __maybe_unused, | 21 | struct perf_sample *sample, |
22 | struct perf_evsel *evsel __maybe_unused, | 22 | struct perf_evsel *evsel __maybe_unused, |
23 | struct machine *machine) | 23 | struct machine *machine) |
24 | { | 24 | { |
25 | struct addr_location al; | 25 | struct addr_location al; |
26 | u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; | 26 | u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; |
27 | struct thread *thread = machine__findnew_thread(machine, event->ip.pid, | 27 | struct thread *thread = machine__findnew_thread(machine, sample->pid, |
28 | event->ip.pid); | 28 | sample->pid); |
29 | 29 | ||
30 | if (thread == NULL) { | 30 | if (thread == NULL) { |
31 | pr_err("problem processing %d event, skipping it.\n", | 31 | pr_err("problem processing %d event, skipping it.\n", |
@@ -34,7 +34,7 @@ int build_id__mark_dso_hit(struct perf_tool *tool __maybe_unused, | |||
34 | } | 34 | } |
35 | 35 | ||
36 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, | 36 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, |
37 | event->ip.ip, &al); | 37 | sample->ip, &al); |
38 | 38 | ||
39 | if (al.map != NULL) | 39 | if (al.map != NULL) |
40 | al.map->dso->hit = 1; | 40 | al.map->dso->hit = 1; |
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 61cecf9caff1..8d51f21107aa 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
@@ -686,8 +686,8 @@ int perf_event__preprocess_sample(const union perf_event *event, | |||
686 | struct perf_sample *sample) | 686 | struct perf_sample *sample) |
687 | { | 687 | { |
688 | u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; | 688 | u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; |
689 | struct thread *thread = machine__findnew_thread(machine, event->ip.pid, | 689 | struct thread *thread = machine__findnew_thread(machine, sample->pid, |
690 | event->ip.pid); | 690 | sample->pid); |
691 | 691 | ||
692 | if (thread == NULL) | 692 | if (thread == NULL) |
693 | return -1; | 693 | return -1; |
@@ -709,7 +709,7 @@ int perf_event__preprocess_sample(const union perf_event *event, | |||
709 | machine__create_kernel_maps(machine); | 709 | machine__create_kernel_maps(machine); |
710 | 710 | ||
711 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, | 711 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, |
712 | event->ip.ip, al); | 712 | sample->ip, al); |
713 | dump_printf(" ...... dso: %s\n", | 713 | dump_printf(" ...... dso: %s\n", |
714 | al->map ? al->map->dso->long_name : | 714 | al->map ? al->map->dso->long_name : |
715 | al->level == 'H' ? "[hypervisor]" : "<not found>"); | 715 | al->level == 'H' ? "[hypervisor]" : "<not found>"); |
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index 15db071d96b5..19d911c011cd 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h | |||
@@ -8,16 +8,6 @@ | |||
8 | #include "map.h" | 8 | #include "map.h" |
9 | #include "build-id.h" | 9 | #include "build-id.h" |
10 | 10 | ||
11 | /* | ||
12 | * PERF_SAMPLE_IP | PERF_SAMPLE_TID | * | ||
13 | */ | ||
14 | struct ip_event { | ||
15 | struct perf_event_header header; | ||
16 | u64 ip; | ||
17 | u32 pid, tid; | ||
18 | unsigned char __more_data[]; | ||
19 | }; | ||
20 | |||
21 | struct mmap_event { | 11 | struct mmap_event { |
22 | struct perf_event_header header; | 12 | struct perf_event_header header; |
23 | u32 pid, tid; | 13 | u32 pid, tid; |
@@ -166,7 +156,6 @@ struct tracing_data_event { | |||
166 | 156 | ||
167 | union perf_event { | 157 | union perf_event { |
168 | struct perf_event_header header; | 158 | struct perf_event_header header; |
169 | struct ip_event ip; | ||
170 | struct mmap_event mmap; | 159 | struct mmap_event mmap; |
171 | struct comm_event comm; | 160 | struct comm_event comm; |
172 | struct fork_event fork; | 161 | struct fork_event fork; |
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 9a5fb23ff8e2..7e328c47f3b6 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
@@ -1185,7 +1185,7 @@ int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event, | |||
1185 | return -EFAULT; | 1185 | return -EFAULT; |
1186 | 1186 | ||
1187 | if (type & PERF_SAMPLE_IP) { | 1187 | if (type & PERF_SAMPLE_IP) { |
1188 | data->ip = event->ip.ip; | 1188 | data->ip = *array; |
1189 | array++; | 1189 | array++; |
1190 | } | 1190 | } |
1191 | 1191 | ||
@@ -1397,7 +1397,7 @@ int perf_event__synthesize_sample(union perf_event *event, u64 type, | |||
1397 | array = event->sample.array; | 1397 | array = event->sample.array; |
1398 | 1398 | ||
1399 | if (type & PERF_SAMPLE_IP) { | 1399 | if (type & PERF_SAMPLE_IP) { |
1400 | event->ip.ip = sample->ip; | 1400 | *array = sample->ip; |
1401 | array++; | 1401 | array++; |
1402 | } | 1402 | } |
1403 | 1403 | ||
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 07590c3c68b8..c3ac483be48e 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -840,7 +840,8 @@ static void dump_sample(struct perf_evsel *evsel, union perf_event *event, | |||
840 | 840 | ||
841 | static struct machine * | 841 | static struct machine * |
842 | perf_session__find_machine_for_cpumode(struct perf_session *session, | 842 | perf_session__find_machine_for_cpumode(struct perf_session *session, |
843 | union perf_event *event) | 843 | union perf_event *event, |
844 | struct perf_sample *sample) | ||
844 | { | 845 | { |
845 | const u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; | 846 | const u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; |
846 | 847 | ||
@@ -852,7 +853,7 @@ static struct machine * | |||
852 | if (event->header.type == PERF_RECORD_MMAP) | 853 | if (event->header.type == PERF_RECORD_MMAP) |
853 | pid = event->mmap.pid; | 854 | pid = event->mmap.pid; |
854 | else | 855 | else |
855 | pid = event->ip.pid; | 856 | pid = sample->pid; |
856 | 857 | ||
857 | return perf_session__findnew_machine(session, pid); | 858 | return perf_session__findnew_machine(session, pid); |
858 | } | 859 | } |
@@ -958,7 +959,8 @@ static int perf_session_deliver_event(struct perf_session *session, | |||
958 | hists__inc_nr_events(&evsel->hists, event->header.type); | 959 | hists__inc_nr_events(&evsel->hists, event->header.type); |
959 | } | 960 | } |
960 | 961 | ||
961 | machine = perf_session__find_machine_for_cpumode(session, event); | 962 | machine = perf_session__find_machine_for_cpumode(session, event, |
963 | sample); | ||
962 | 964 | ||
963 | switch (event->header.type) { | 965 | switch (event->header.type) { |
964 | case PERF_RECORD_SAMPLE: | 966 | case PERF_RECORD_SAMPLE: |