diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-04-03 20:16:42 +0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-04-03 20:16:42 +0400 |
commit | 70a7c1271e2bfca8ad2bf71f44c516ea2763b9ed (patch) | |
tree | eaac85de741bc558529eccaefc372ff1e90ff425 /tools/perf/builtin-kmem.c | |
parent | 40b91cd10f000b4c4934e48e2e5c0bec66def144 (diff) | |
parent | 533c46c31c0e82f19dbb087c77d85eaccd6fefdb (diff) | |
download | linux-70a7c1271e2bfca8ad2bf71f44c516ea2763b9ed.tar.xz |
Merge branch 'perf' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/core
Diffstat (limited to 'tools/perf/builtin-kmem.c')
-rw-r--r-- | tools/perf/builtin-kmem.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index 924a9518931a..513aa8a55db6 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c @@ -363,19 +363,21 @@ static void __print_result(struct rb_root *root, struct perf_session *session, struct alloc_stat *data = rb_entry(next, struct alloc_stat, node); struct symbol *sym = NULL; + struct map *map; char buf[BUFSIZ]; u64 addr; if (is_caller) { addr = data->call_site; if (!raw_ip) - sym = map_groups__find_function(&session->kmaps, addr, NULL); + sym = map_groups__find_function(&session->kmaps, + addr, &map, NULL); } else addr = data->ptr; if (sym != NULL) snprintf(buf, sizeof(buf), "%s+%Lx", sym->name, - addr - sym->start); + addr - map->unmap_ip(map, sym->start)); else snprintf(buf, sizeof(buf), "%#Lx", addr); printf(" %-34s |", buf); @@ -488,6 +490,9 @@ static int __cmd_kmem(void) if (session == NULL) return -ENOMEM; + if (perf_session__create_kernel_maps(session) < 0) + goto out_delete; + if (!perf_session__has_traces(session, "kmem record")) goto out_delete; |