diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:20:25 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-02-28 13:20:25 -0500 |
commit | 6556a6743549defc32e5f90ee2cb1ecd833a44c3 (patch) | |
tree | 622306583d4a3c13235a8bfc012854c125c597f1 /tools/perf/builtin-buildid-list.c | |
parent | e0d272429a34ff143bfa04ee8e29dd4eed2964c7 (diff) | |
parent | 1dd2980d990068e20045b90c424518cc7f3657ff (diff) |
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (172 commits)
perf_event, amd: Fix spinlock initialization
perf_event: Fix preempt warning in perf_clock()
perf tools: Flush maps on COMM events
perf_events, x86: Split PMU definitions into separate files
perf annotate: Handle samples not at objdump output addr boundaries
perf_events, x86: Remove superflous MSR writes
perf_events: Simplify code by removing cpu argument to hw_perf_group_sched_in()
perf_events, x86: AMD event scheduling
perf_events: Add new start/stop PMU callbacks
perf_events: Report the MMAP pgoff value in bytes
perf annotate: Defer allocating sym_priv->hist array
perf symbols: Improve debugging information about symtab origins
perf top: Use a macro instead of a constant variable
perf symbols: Check the right return variable
perf/scripts: Tag syscall_name helper as not yet available
perf/scripts: Add perf-trace-python Documentation
perf/scripts: Remove unnecessary PyTuple resizes
perf/scripts: Add syscall tracing scripts
perf/scripts: Add Python scripting engine
perf/scripts: Remove check-perf-trace from listed scripts
...
Fix trivial conflict in tools/perf/util/probe-event.c
Diffstat (limited to 'tools/perf/builtin-buildid-list.c')
-rw-r--r-- | tools/perf/builtin-buildid-list.c | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/tools/perf/builtin-buildid-list.c b/tools/perf/builtin-buildid-list.c index 1e99ac806913..d0675c02f81e 100644 --- a/tools/perf/builtin-buildid-list.c +++ b/tools/perf/builtin-buildid-list.c | |||
@@ -8,6 +8,7 @@ | |||
8 | */ | 8 | */ |
9 | #include "builtin.h" | 9 | #include "builtin.h" |
10 | #include "perf.h" | 10 | #include "perf.h" |
11 | #include "util/build-id.h" | ||
11 | #include "util/cache.h" | 12 | #include "util/cache.h" |
12 | #include "util/debug.h" | 13 | #include "util/debug.h" |
13 | #include "util/parse-options.h" | 14 | #include "util/parse-options.h" |
@@ -16,6 +17,7 @@ | |||
16 | 17 | ||
17 | static char const *input_name = "perf.data"; | 18 | static char const *input_name = "perf.data"; |
18 | static int force; | 19 | static int force; |
20 | static bool with_hits; | ||
19 | 21 | ||
20 | static const char * const buildid_list_usage[] = { | 22 | static const char * const buildid_list_usage[] = { |
21 | "perf buildid-list [<options>]", | 23 | "perf buildid-list [<options>]", |
@@ -23,6 +25,7 @@ static const char * const buildid_list_usage[] = { | |||
23 | }; | 25 | }; |
24 | 26 | ||
25 | static const struct option options[] = { | 27 | static const struct option options[] = { |
28 | OPT_BOOLEAN('H', "with-hits", &with_hits, "Show only DSOs with hits"), | ||
26 | OPT_STRING('i', "input", &input_name, "file", | 29 | OPT_STRING('i', "input", &input_name, "file", |
27 | "input file name"), | 30 | "input file name"), |
28 | OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), | 31 | OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), |
@@ -31,26 +34,6 @@ static const struct option options[] = { | |||
31 | OPT_END() | 34 | OPT_END() |
32 | }; | 35 | }; |
33 | 36 | ||
34 | static int perf_file_section__process_buildids(struct perf_file_section *self, | ||
35 | int feat, int fd) | ||
36 | { | ||
37 | if (feat != HEADER_BUILD_ID) | ||
38 | return 0; | ||
39 | |||
40 | if (lseek(fd, self->offset, SEEK_SET) < 0) { | ||
41 | pr_warning("Failed to lseek to %Ld offset for buildids!\n", | ||
42 | self->offset); | ||
43 | return -1; | ||
44 | } | ||
45 | |||
46 | if (perf_header__read_build_ids(fd, self->offset, self->size)) { | ||
47 | pr_warning("Failed to read buildids!\n"); | ||
48 | return -1; | ||
49 | } | ||
50 | |||
51 | return 0; | ||
52 | } | ||
53 | |||
54 | static int __cmd_buildid_list(void) | 37 | static int __cmd_buildid_list(void) |
55 | { | 38 | { |
56 | int err = -1; | 39 | int err = -1; |
@@ -60,10 +43,10 @@ static int __cmd_buildid_list(void) | |||
60 | if (session == NULL) | 43 | if (session == NULL) |
61 | return -1; | 44 | return -1; |
62 | 45 | ||
63 | err = perf_header__process_sections(&session->header, session->fd, | 46 | if (with_hits) |
64 | perf_file_section__process_buildids); | 47 | perf_session__process_events(session, &build_id__mark_dso_hit_ops); |
65 | if (err >= 0) | 48 | |
66 | dsos__fprintf_buildid(stdout); | 49 | dsos__fprintf_buildid(stdout, with_hits); |
67 | 50 | ||
68 | perf_session__delete(session); | 51 | perf_session__delete(session); |
69 | return err; | 52 | return err; |