diff options
Diffstat (limited to 'tools/perf/util/event.c')
| -rw-r--r-- | tools/perf/util/event.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 4af6b279e34a..6c6d044e959a 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
| @@ -28,6 +28,7 @@ static const char *perf_event__names[] = { | |||
| 28 | [PERF_RECORD_HEADER_TRACING_DATA] = "TRACING_DATA", | 28 | [PERF_RECORD_HEADER_TRACING_DATA] = "TRACING_DATA", |
| 29 | [PERF_RECORD_HEADER_BUILD_ID] = "BUILD_ID", | 29 | [PERF_RECORD_HEADER_BUILD_ID] = "BUILD_ID", |
| 30 | [PERF_RECORD_FINISHED_ROUND] = "FINISHED_ROUND", | 30 | [PERF_RECORD_FINISHED_ROUND] = "FINISHED_ROUND", |
| 31 | [PERF_RECORD_ID_INDEX] = "ID_INDEX", | ||
| 31 | }; | 32 | }; |
| 32 | 33 | ||
| 33 | const char *perf_event__name(unsigned int id) | 34 | const char *perf_event__name(unsigned int id) |
| @@ -730,12 +731,12 @@ int perf_event__process(struct perf_tool *tool __maybe_unused, | |||
| 730 | return machine__process_event(machine, event, sample); | 731 | return machine__process_event(machine, event, sample); |
| 731 | } | 732 | } |
| 732 | 733 | ||
| 733 | void thread__find_addr_map(struct thread *thread, | 734 | void thread__find_addr_map(struct thread *thread, u8 cpumode, |
| 734 | struct machine *machine, u8 cpumode, | ||
| 735 | enum map_type type, u64 addr, | 735 | enum map_type type, u64 addr, |
| 736 | struct addr_location *al) | 736 | struct addr_location *al) |
| 737 | { | 737 | { |
| 738 | struct map_groups *mg = thread->mg; | 738 | struct map_groups *mg = thread->mg; |
| 739 | struct machine *machine = mg->machine; | ||
| 739 | bool load_map = false; | 740 | bool load_map = false; |
| 740 | 741 | ||
| 741 | al->machine = machine; | 742 | al->machine = machine; |
| @@ -806,14 +807,14 @@ try_again: | |||
| 806 | } | 807 | } |
| 807 | } | 808 | } |
| 808 | 809 | ||
| 809 | void thread__find_addr_location(struct thread *thread, struct machine *machine, | 810 | void thread__find_addr_location(struct thread *thread, |
| 810 | u8 cpumode, enum map_type type, u64 addr, | 811 | u8 cpumode, enum map_type type, u64 addr, |
| 811 | struct addr_location *al) | 812 | struct addr_location *al) |
| 812 | { | 813 | { |
| 813 | thread__find_addr_map(thread, machine, cpumode, type, addr, al); | 814 | thread__find_addr_map(thread, cpumode, type, addr, al); |
| 814 | if (al->map != NULL) | 815 | if (al->map != NULL) |
| 815 | al->sym = map__find_symbol(al->map, al->addr, | 816 | al->sym = map__find_symbol(al->map, al->addr, |
| 816 | machine->symbol_filter); | 817 | thread->mg->machine->symbol_filter); |
| 817 | else | 818 | else |
| 818 | al->sym = NULL; | 819 | al->sym = NULL; |
| 819 | } | 820 | } |
| @@ -842,8 +843,7 @@ int perf_event__preprocess_sample(const union perf_event *event, | |||
| 842 | machine->vmlinux_maps[MAP__FUNCTION] == NULL) | 843 | machine->vmlinux_maps[MAP__FUNCTION] == NULL) |
| 843 | machine__create_kernel_maps(machine); | 844 | machine__create_kernel_maps(machine); |
| 844 | 845 | ||
| 845 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, | 846 | thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->ip, al); |
| 846 | sample->ip, al); | ||
| 847 | dump_printf(" ...... dso: %s\n", | 847 | dump_printf(" ...... dso: %s\n", |
| 848 | al->map ? al->map->dso->long_name : | 848 | al->map ? al->map->dso->long_name : |
| 849 | al->level == 'H' ? "[hypervisor]" : "<not found>"); | 849 | al->level == 'H' ? "[hypervisor]" : "<not found>"); |
| @@ -902,16 +902,14 @@ bool sample_addr_correlates_sym(struct perf_event_attr *attr) | |||
| 902 | 902 | ||
| 903 | void perf_event__preprocess_sample_addr(union perf_event *event, | 903 | void perf_event__preprocess_sample_addr(union perf_event *event, |
| 904 | struct perf_sample *sample, | 904 | struct perf_sample *sample, |
| 905 | struct machine *machine, | ||
| 906 | struct thread *thread, | 905 | struct thread *thread, |
| 907 | struct addr_location *al) | 906 | struct addr_location *al) |
| 908 | { | 907 | { |
| 909 | u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; | 908 | u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; |
| 910 | 909 | ||
| 911 | thread__find_addr_map(thread, machine, cpumode, MAP__FUNCTION, | 910 | thread__find_addr_map(thread, cpumode, MAP__FUNCTION, sample->addr, al); |
| 912 | sample->addr, al); | ||
| 913 | if (!al->map) | 911 | if (!al->map) |
| 914 | thread__find_addr_map(thread, machine, cpumode, MAP__VARIABLE, | 912 | thread__find_addr_map(thread, cpumode, MAP__VARIABLE, |
| 915 | sample->addr, al); | 913 | sample->addr, al); |
| 916 | 914 | ||
| 917 | al->cpu = sample->cpu; | 915 | al->cpu = sample->cpu; |
