Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 269012
b: refs/heads/master
c: f2add9c
h: refs/heads/master
v: v3
  • Loading branch information
Arnaldo Carvalho de Melo committed Sep 29, 2011
1 parent 51f5e2b commit 1d8f735
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 63e03724b51e7315a66a3f1fee6cb8b4a16dc8cc
refs/heads/master: f2add9cd66c87baea6762b099ee38ee742207699
5 changes: 5 additions & 0 deletions trunk/tools/perf/Documentation/perf-buildid-list.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ This command displays the buildids found in a perf.data file, so that other
tools can be used to fetch packages with matching symbol tables for use by
perf report.

It can also be used to show the build id of the running kernel.

OPTIONS
-------
-H::
Expand All @@ -27,6 +29,9 @@ OPTIONS
-f::
--force::
Don't do ownership validation.
-k::
--kernel::
Show running kernel build id.
-v::
--verbose::
Be more verbose.
Expand Down
31 changes: 29 additions & 2 deletions trunk/tools/perf/builtin-buildid-list.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
/*
* builtin-buildid-list.c
*
* Builtin buildid-list command: list buildids in perf.data
* Builtin buildid-list command: list buildids in perf.data or in the running
* kernel.
*
* Copyright (C) 2009, Red Hat Inc.
* Copyright (C) 2009, Arnaldo Carvalho de Melo <acme@redhat.com>
Expand All @@ -17,6 +18,7 @@

static char const *input_name = "perf.data";
static bool force;
static bool show_kernel;
static bool with_hits;

static const char * const buildid_list_usage[] = {
Expand All @@ -29,12 +31,13 @@ static const struct option options[] = {
OPT_STRING('i', "input", &input_name, "file",
"input file name"),
OPT_BOOLEAN('f', "force", &force, "don't complain, do it"),
OPT_BOOLEAN('k', "kernel", &show_kernel, "Show current kernel build id"),
OPT_INCR('v', "verbose", &verbose,
"be more verbose"),
OPT_END()
};

static int __cmd_buildid_list(void)
static int perf_session__list_build_ids(void)
{
struct perf_session *session;

Expand All @@ -52,6 +55,30 @@ static int __cmd_buildid_list(void)
return 0;
}

static int sysfs__fprintf_build_id(FILE *fp)
{
u8 kallsyms_build_id[BUILD_ID_SIZE];
char sbuild_id[BUILD_ID_SIZE * 2 + 1];

if (sysfs__read_build_id("/sys/kernel/notes", kallsyms_build_id,
sizeof(kallsyms_build_id)) != 0)
return -1;

build_id__sprintf(kallsyms_build_id, sizeof(kallsyms_build_id),
sbuild_id);
fprintf(fp, "%s\n", sbuild_id);
return 0;
}

static int __cmd_buildid_list(void)
{

if (show_kernel)
return sysfs__fprintf_build_id(stdout);

return perf_session__list_build_ids();
}

int cmd_buildid_list(int argc, const char **argv, const char *prefix __used)
{
argc = parse_options(argc, argv, options, buildid_list_usage, 0);
Expand Down

0 comments on commit 1d8f735

Please sign in to comment.