Skip to content

Commit 99ce8e9

Browse files
olsajiriacmel
authored andcommitted
perf tools: Add --buildid-dir option to set cache directory
Adding --buildid-dir to be able to set specific cache directory. It's going to be handy for buildid tests coming in shortly. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Stephane Eranian <eranian@google.com> Cc: Steven Rostedt <rostedt@goodmis.org> Link: http://lkml.kernel.org/r/1417460789-13874-4-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent eec5a68 commit 99ce8e9

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

tools/perf/Documentation/perf.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ OPTIONS
1818
--debug verbose # sets verbose = 1
1919
--debug verbose=2 # sets verbose = 2
2020

21+
--buildid-dir::
22+
Setup buildid cache directory. It has higher priority than
23+
buildid.dir config file option.
24+
2125
DESCRIPTION
2226
-----------
2327
Performance counters for Linux are a new kernel-based subsystem

tools/perf/perf.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,16 @@ static int handle_options(const char ***argv, int *argc, int *envchanged)
200200
*envchanged = 1;
201201
(*argv)++;
202202
(*argc)--;
203+
} else if (!strcmp(cmd, "--buildid-dir")) {
204+
if (*argc < 2) {
205+
fprintf(stderr, "No directory given for --buildid-dir.\n");
206+
usage(perf_usage_string);
207+
}
208+
set_buildid_dir((*argv)[1]);
209+
if (envchanged)
210+
*envchanged = 1;
211+
(*argv)++;
212+
(*argc)--;
203213
} else if (!prefixcmp(cmd, CMD_DEBUGFS_DIR)) {
204214
perf_debugfs_set_path(cmd + strlen(CMD_DEBUGFS_DIR));
205215
fprintf(stderr, "dir: %s\n", debugfs_mountpoint);
@@ -499,7 +509,7 @@ int main(int argc, const char **argv)
499509
}
500510
if (!prefixcmp(cmd, "trace")) {
501511
#ifdef HAVE_LIBAUDIT_SUPPORT
502-
set_buildid_dir();
512+
set_buildid_dir(NULL);
503513
setup_path();
504514
argv[0] = "trace";
505515
return cmd_trace(argc, argv, NULL);
@@ -514,7 +524,7 @@ int main(int argc, const char **argv)
514524
argc--;
515525
handle_options(&argv, &argc, NULL);
516526
commit_pager_choice();
517-
set_buildid_dir();
527+
set_buildid_dir(NULL);
518528

519529
if (argc > 0) {
520530
if (!prefixcmp(argv[0], "--"))

tools/perf/util/config.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -539,12 +539,14 @@ static void check_buildid_dir_config(void)
539539
perf_config(buildid_dir_command_config, &c);
540540
}
541541

542-
void set_buildid_dir(void)
542+
void set_buildid_dir(const char *dir)
543543
{
544-
buildid_dir[0] = '\0';
544+
if (dir)
545+
scnprintf(buildid_dir, MAXPATHLEN-1, "%s", dir);
545546

546547
/* try config file */
547-
check_buildid_dir_config();
548+
if (buildid_dir[0] == '\0')
549+
check_buildid_dir_config();
548550

549551
/* default to $HOME/.debug */
550552
if (buildid_dir[0] == '\0') {

tools/perf/util/util.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)))
153153
extern void set_die_routine(void (*routine)(const char *err, va_list params) NORETURN);
154154

155155
extern int prefixcmp(const char *str, const char *prefix);
156-
extern void set_buildid_dir(void);
156+
extern void set_buildid_dir(const char *dir);
157157

158158
static inline const char *skip_prefix(const char *str, const char *prefix)
159159
{

0 commit comments

Comments
 (0)