diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-01-14 20:45:30 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-01-16 04:58:49 -0500 |
commit | 88d3d9b7c843a42cb73c55a2d13cd1041da31fb9 (patch) | |
tree | 65405bd819476046cda93ac1ccda8cca39becab4 /tools/perf/util | |
parent | 59ee68ecd1561a233fb6ad351980bea8402533e7 (diff) |
perf buildid-list: Introduce --with-hits option
Using this option 'perf buildid-list' will process all samples,
marking the DSOs that had some hits to list just them.
This in turn will be used by a new porcelain, 'perf archive',
that will be just a shell script to create a tarball from the
'perf buildid-list --with-hits' output and the files cached by
'perf record' in ~/.debug.
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-4-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util')
-rw-r--r-- | tools/perf/util/symbol.c | 11 | ||||
-rw-r--r-- | tools/perf/util/symbol.h | 3 |
2 files changed, 9 insertions, 5 deletions
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 4267138c7bbe..a4e745934584 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
@@ -1716,22 +1716,25 @@ void dsos__fprintf(FILE *fp) | |||
1716 | __dsos__fprintf(&dsos__user, fp); | 1716 | __dsos__fprintf(&dsos__user, fp); |
1717 | } | 1717 | } |
1718 | 1718 | ||
1719 | static size_t __dsos__fprintf_buildid(struct list_head *head, FILE *fp) | 1719 | static size_t __dsos__fprintf_buildid(struct list_head *head, FILE *fp, |
1720 | bool with_hits) | ||
1720 | { | 1721 | { |
1721 | struct dso *pos; | 1722 | struct dso *pos; |
1722 | size_t ret = 0; | 1723 | size_t ret = 0; |
1723 | 1724 | ||
1724 | list_for_each_entry(pos, head, node) { | 1725 | list_for_each_entry(pos, head, node) { |
1726 | if (with_hits && !pos->hit) | ||
1727 | continue; | ||
1725 | ret += dso__fprintf_buildid(pos, fp); | 1728 | ret += dso__fprintf_buildid(pos, fp); |
1726 | ret += fprintf(fp, " %s\n", pos->long_name); | 1729 | ret += fprintf(fp, " %s\n", pos->long_name); |
1727 | } | 1730 | } |
1728 | return ret; | 1731 | return ret; |
1729 | } | 1732 | } |
1730 | 1733 | ||
1731 | size_t dsos__fprintf_buildid(FILE *fp) | 1734 | size_t dsos__fprintf_buildid(FILE *fp, bool with_hits) |
1732 | { | 1735 | { |
1733 | return (__dsos__fprintf_buildid(&dsos__kernel, fp) + | 1736 | return (__dsos__fprintf_buildid(&dsos__kernel, fp, with_hits) + |
1734 | __dsos__fprintf_buildid(&dsos__user, fp)); | 1737 | __dsos__fprintf_buildid(&dsos__user, fp, with_hits)); |
1735 | } | 1738 | } |
1736 | 1739 | ||
1737 | static struct dso *dsos__create_kernel(const char *vmlinux) | 1740 | static struct dso *dsos__create_kernel(const char *vmlinux) |
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 36b7c717f5ee..525085fd0735 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
@@ -97,6 +97,7 @@ struct dso { | |||
97 | u8 slen_calculated:1; | 97 | u8 slen_calculated:1; |
98 | u8 has_build_id:1; | 98 | u8 has_build_id:1; |
99 | u8 kernel:1; | 99 | u8 kernel:1; |
100 | u8 hit:1; | ||
100 | unsigned char origin; | 101 | unsigned char origin; |
101 | u8 sorted_by_name; | 102 | u8 sorted_by_name; |
102 | u8 loaded; | 103 | u8 loaded; |
@@ -129,7 +130,7 @@ struct perf_session; | |||
129 | int dso__load(struct dso *self, struct map *map, struct perf_session *session, | 130 | int dso__load(struct dso *self, struct map *map, struct perf_session *session, |
130 | symbol_filter_t filter); | 131 | symbol_filter_t filter); |
131 | void dsos__fprintf(FILE *fp); | 132 | void dsos__fprintf(FILE *fp); |
132 | size_t dsos__fprintf_buildid(FILE *fp); | 133 | size_t dsos__fprintf_buildid(FILE *fp, bool with_hits); |
133 | 134 | ||
134 | size_t dso__fprintf_buildid(struct dso *self, FILE *fp); | 135 | size_t dso__fprintf_buildid(struct dso *self, FILE *fp); |
135 | size_t dso__fprintf(struct dso *self, enum map_type type, FILE *fp); | 136 | size_t dso__fprintf(struct dso *self, enum map_type type, FILE *fp); |