-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 182396 b: refs/heads/master c: ef12a14 h: refs/heads/master v: v3
- Loading branch information
Arnaldo Carvalho de Melo
authored and
Ingo Molnar
committed
Jan 21, 2010
1 parent
eba4fff
commit 14f9658
Showing
11 changed files
with
242 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: dc8d6ab2b61a2d92b5d7438565ccd20b29724cb2 | ||
refs/heads/master: ef12a141306c90336a3a10d40213ecd98624d274 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
perf-buildid-cache(1) | ||
===================== | ||
|
||
NAME | ||
---- | ||
perf-buildid-cache - Manage build-id cache. | ||
|
||
SYNOPSIS | ||
-------- | ||
[verse] | ||
'perf buildid-list <options>' | ||
|
||
DESCRIPTION | ||
----------- | ||
This command manages the build-id cache. It can add and remove files to the | ||
cache. In the future it should as well purge older entries, set upper limits | ||
for the space used by the cache, etc. | ||
|
||
OPTIONS | ||
------- | ||
-a:: | ||
--add=:: | ||
Add specified file to the cache. | ||
-r:: | ||
--remove=:: | ||
Remove specified file to the cache. | ||
-v:: | ||
--verbose:: | ||
Be more verbose. | ||
|
||
SEE ALSO | ||
-------- | ||
linkperf:perf-record[1], linkperf:perf-report[1] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
/* | ||
* builtin-buildid-cache.c | ||
* | ||
* Builtin buildid-cache command: Manages build-id cache | ||
* | ||
* Copyright (C) 2010, Red Hat Inc. | ||
* Copyright (C) 2010, Arnaldo Carvalho de Melo <acme@redhat.com> | ||
*/ | ||
#include "builtin.h" | ||
#include "perf.h" | ||
#include "util/cache.h" | ||
#include "util/debug.h" | ||
#include "util/header.h" | ||
#include "util/parse-options.h" | ||
#include "util/strlist.h" | ||
#include "util/symbol.h" | ||
|
||
static char const *add_name_list_str, *remove_name_list_str; | ||
|
||
static const char * const buildid_cache_usage[] = { | ||
"perf buildid-cache [<options>]", | ||
NULL | ||
}; | ||
|
||
static const struct option buildid_cache_options[] = { | ||
OPT_STRING('a', "add", &add_name_list_str, | ||
"file list", "file(s) to add"), | ||
OPT_STRING('r', "remove", &remove_name_list_str, "file list", | ||
"file(s) to remove"), | ||
OPT_BOOLEAN('v', "verbose", &verbose, "be more verbose"), | ||
OPT_END() | ||
}; | ||
|
||
static int build_id_cache__add_file(const char *filename, const char *debugdir) | ||
{ | ||
char sbuild_id[BUILD_ID_SIZE * 2 + 1]; | ||
u8 build_id[BUILD_ID_SIZE]; | ||
int err; | ||
|
||
if (filename__read_build_id(filename, &build_id, sizeof(build_id)) < 0) { | ||
pr_debug("Couldn't read a build-id in %s\n", filename); | ||
return -1; | ||
} | ||
|
||
build_id__sprintf(build_id, sizeof(build_id), sbuild_id); | ||
err = build_id_cache__add_s(sbuild_id, debugdir, filename, false); | ||
if (verbose) | ||
pr_info("Adding %s %s: %s\n", sbuild_id, filename, | ||
err ? "FAIL" : "Ok"); | ||
return err; | ||
} | ||
|
||
static int build_id_cache__remove_file(const char *filename __used, | ||
const char *debugdir __used) | ||
{ | ||
u8 build_id[BUILD_ID_SIZE]; | ||
char sbuild_id[BUILD_ID_SIZE * 2 + 1]; | ||
|
||
int err; | ||
|
||
if (filename__read_build_id(filename, &build_id, sizeof(build_id)) < 0) { | ||
pr_debug("Couldn't read a build-id in %s\n", filename); | ||
return -1; | ||
} | ||
|
||
build_id__sprintf(build_id, sizeof(build_id), sbuild_id); | ||
err = build_id_cache__remove_s(sbuild_id, debugdir); | ||
if (verbose) | ||
pr_info("Removing %s %s: %s\n", sbuild_id, filename, | ||
err ? "FAIL" : "Ok"); | ||
|
||
return err; | ||
} | ||
|
||
static int __cmd_buildid_cache(void) | ||
{ | ||
struct strlist *list; | ||
struct str_node *pos; | ||
char debugdir[PATH_MAX]; | ||
|
||
snprintf(debugdir, sizeof(debugdir), "%s/%s", getenv("HOME"), | ||
DEBUG_CACHE_DIR); | ||
|
||
if (add_name_list_str) { | ||
list = strlist__new(true, add_name_list_str); | ||
if (list) { | ||
strlist__for_each(pos, list) | ||
if (build_id_cache__add_file(pos->s, debugdir)) { | ||
if (errno == EEXIST) { | ||
pr_debug("%s already in the cache\n", | ||
pos->s); | ||
continue; | ||
} | ||
pr_warning("Couldn't add %s: %s\n", | ||
pos->s, strerror(errno)); | ||
} | ||
|
||
strlist__delete(list); | ||
} | ||
} | ||
|
||
if (remove_name_list_str) { | ||
list = strlist__new(true, remove_name_list_str); | ||
if (list) { | ||
strlist__for_each(pos, list) | ||
if (build_id_cache__remove_file(pos->s, debugdir)) { | ||
if (errno == ENOENT) { | ||
pr_debug("%s wasn't in the cache\n", | ||
pos->s); | ||
continue; | ||
} | ||
pr_warning("Couldn't remove %s: %s\n", | ||
pos->s, strerror(errno)); | ||
} | ||
|
||
strlist__delete(list); | ||
} | ||
} | ||
|
||
return 0; | ||
} | ||
|
||
int cmd_buildid_cache(int argc, const char **argv, const char *prefix __used) | ||
{ | ||
argc = parse_options(argc, argv, buildid_cache_options, | ||
buildid_cache_usage, 0); | ||
|
||
if (symbol__init() < 0) | ||
return -1; | ||
|
||
setup_pager(); | ||
return __cmd_buildid_cache(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters