aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2010-01-27 18:05:50 -0500
committerIngo Molnar <mingo@elte.hu>2010-01-29 03:20:57 -0500
commita19afe46412452fef89cc623873a8931b3685944 (patch)
treef763293c14d5c3b50c0a8de2fe1b48e17dd3c925
parent72b8fa1730207274f6818b47b891ce5dff79287e (diff)
perf symbols: Factor out dso__load_vmlinux_path()
So that we can call it directly from regression tests, and also to reduce the size of dso__load_kernel_sym(), making it more clear. 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: <1264633557-17597-2-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--tools/perf/util/symbol.c38
-rw-r--r--tools/perf/util/symbol.h2
2 files changed, 26 insertions, 14 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index f1f609dcf9a1..26ec603083e0 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1578,6 +1578,27 @@ static int dso__load_vmlinux(struct dso *self, struct map *map,
1578 return err; 1578 return err;
1579} 1579}
1580 1580
1581int dso__load_vmlinux_path(struct dso *self, struct map *map,
1582 struct perf_session *session, symbol_filter_t filter)
1583{
1584 int i, err = 0;
1585
1586 pr_debug("Looking at the vmlinux_path (%d entries long)\n",
1587 vmlinux_path__nr_entries);
1588
1589 for (i = 0; i < vmlinux_path__nr_entries; ++i) {
1590 err = dso__load_vmlinux(self, map, session, vmlinux_path[i],
1591 filter);
1592 if (err > 0) {
1593 pr_debug("Using %s for symbols\n", vmlinux_path[i]);
1594 dso__set_long_name(self, strdup(vmlinux_path[i]));
1595 break;
1596 }
1597 }
1598
1599 return err;
1600}
1601
1581static int dso__load_kernel_sym(struct dso *self, struct map *map, 1602static int dso__load_kernel_sym(struct dso *self, struct map *map,
1582 struct perf_session *session, symbol_filter_t filter) 1603 struct perf_session *session, symbol_filter_t filter)
1583{ 1604{
@@ -1606,20 +1627,9 @@ static int dso__load_kernel_sym(struct dso *self, struct map *map,
1606 } 1627 }
1607 1628
1608 if (vmlinux_path != NULL) { 1629 if (vmlinux_path != NULL) {
1609 int i; 1630 err = dso__load_vmlinux_path(self, map, session, filter);
1610 pr_debug("Looking at the vmlinux_path (%d entries long)\n", 1631 if (err > 0)
1611 vmlinux_path__nr_entries); 1632 goto out_fixup;
1612 for (i = 0; i < vmlinux_path__nr_entries; ++i) {
1613 err = dso__load_vmlinux(self, map, session,
1614 vmlinux_path[i], filter);
1615 if (err > 0) {
1616 pr_debug("Using %s for symbols\n",
1617 vmlinux_path[i]);
1618 dso__set_long_name(self,
1619 strdup(vmlinux_path[i]));
1620 goto out_fixup;
1621 }
1622 }
1623 } 1633 }
1624 1634
1625 /* 1635 /*
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h
index ffe0b0f2e5d3..a94997aeb334 100644
--- a/tools/perf/util/symbol.h
+++ b/tools/perf/util/symbol.h
@@ -129,6 +129,8 @@ struct perf_session;
129 129
130int dso__load(struct dso *self, struct map *map, struct perf_session *session, 130int dso__load(struct dso *self, struct map *map, struct perf_session *session,
131 symbol_filter_t filter); 131 symbol_filter_t filter);
132int dso__load_vmlinux_path(struct dso *self, struct map *map,
133 struct perf_session *session, symbol_filter_t filter);
132void dsos__fprintf(FILE *fp); 134void dsos__fprintf(FILE *fp);
133size_t dsos__fprintf_buildid(FILE *fp, bool with_hits); 135size_t dsos__fprintf_buildid(FILE *fp, bool with_hits);
134 136