mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-20 16:46:23 +08:00
perf symbols: Create thread__find_addr_map from thread__find_addr_location
Because some tools will only want to know with maps had hits, not needing the full symbol resolution done by thread__find_addr_location. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1263519930-22803-3-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
18c3daa496
commit
59ee68ecd1
@ -422,11 +422,10 @@ int event__process_task(event_t *self, struct perf_session *session)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void thread__find_addr_location(struct thread *self,
|
||||
struct perf_session *session, u8 cpumode,
|
||||
enum map_type type, u64 addr,
|
||||
struct addr_location *al,
|
||||
symbol_filter_t filter)
|
||||
void thread__find_addr_map(struct thread *self,
|
||||
struct perf_session *session, u8 cpumode,
|
||||
enum map_type type, u64 addr,
|
||||
struct addr_location *al)
|
||||
{
|
||||
struct map_groups *mg = &self->mg;
|
||||
|
||||
@ -441,7 +440,6 @@ void thread__find_addr_location(struct thread *self,
|
||||
else {
|
||||
al->level = 'H';
|
||||
al->map = NULL;
|
||||
al->sym = NULL;
|
||||
return;
|
||||
}
|
||||
try_again:
|
||||
@ -460,11 +458,21 @@ try_again:
|
||||
mg = &session->kmaps;
|
||||
goto try_again;
|
||||
}
|
||||
al->sym = NULL;
|
||||
} else {
|
||||
} else
|
||||
al->addr = al->map->map_ip(al->map, al->addr);
|
||||
}
|
||||
|
||||
void thread__find_addr_location(struct thread *self,
|
||||
struct perf_session *session, u8 cpumode,
|
||||
enum map_type type, u64 addr,
|
||||
struct addr_location *al,
|
||||
symbol_filter_t filter)
|
||||
{
|
||||
thread__find_addr_map(self, session, cpumode, type, addr, al);
|
||||
if (al->map != NULL)
|
||||
al->sym = map__find_symbol(al->map, session, al->addr, filter);
|
||||
}
|
||||
else
|
||||
al->sym = NULL;
|
||||
}
|
||||
|
||||
static void dso__calc_col_width(struct dso *self)
|
||||
|
@ -48,6 +48,11 @@ static inline struct map *thread__find_map(struct thread *self,
|
||||
return self ? map_groups__find(&self->mg, type, addr) : NULL;
|
||||
}
|
||||
|
||||
void thread__find_addr_map(struct thread *self,
|
||||
struct perf_session *session, u8 cpumode,
|
||||
enum map_type type, u64 addr,
|
||||
struct addr_location *al);
|
||||
|
||||
void thread__find_addr_location(struct thread *self,
|
||||
struct perf_session *session, u8 cpumode,
|
||||
enum map_type type, u64 addr,
|
||||
|
Loading…
Reference in New Issue
Block a user