forked from luck/tmp_suning_uos_patched
perf tools: Add 'perf config' command
The perf configuration file contains many variables to change various aspects of each of its tools, including output, disk usage, etc. But looking at the state of configuration is difficult and there's no documentation about config variables except for the variables in perfconfig.example exist. So this patch adds a 'perf-config' command with a '--list' option. perf config [options] display current perf config variables. # perf config -l | --list Signed-off-by: Taeung Song <treeze.taeung@gmail.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Link: http://lkml.kernel.org/r/1447768424-17327-1-git-send-email-treeze.taeung@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
8bd508b001
commit
30862f2c57
|
@ -1,5 +1,6 @@
|
|||
perf-y += builtin-bench.o
|
||||
perf-y += builtin-annotate.o
|
||||
perf-y += builtin-config.o
|
||||
perf-y += builtin-diff.o
|
||||
perf-y += builtin-evlist.o
|
||||
perf-y += builtin-help.o
|
||||
|
|
66
tools/perf/builtin-config.c
Normal file
66
tools/perf/builtin-config.c
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* builtin-config.c
|
||||
*
|
||||
* Copyright (C) 2015, Taeung Song <treeze.taeung@gmail.com>
|
||||
*
|
||||
*/
|
||||
#include "builtin.h"
|
||||
|
||||
#include "perf.h"
|
||||
|
||||
#include "util/cache.h"
|
||||
#include "util/parse-options.h"
|
||||
#include "util/util.h"
|
||||
#include "util/debug.h"
|
||||
|
||||
static const char * const config_usage[] = {
|
||||
"perf config [options]",
|
||||
NULL
|
||||
};
|
||||
|
||||
enum actions {
|
||||
ACTION_LIST = 1
|
||||
} actions;
|
||||
|
||||
static struct option config_options[] = {
|
||||
OPT_SET_UINT('l', "list", &actions,
|
||||
"show current config variables", ACTION_LIST),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
static int show_config(const char *key, const char *value,
|
||||
void *cb __maybe_unused)
|
||||
{
|
||||
if (value)
|
||||
printf("%s=%s\n", key, value);
|
||||
else
|
||||
printf("%s\n", key);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
argc = parse_options(argc, argv, config_options, config_usage,
|
||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||
|
||||
switch (actions) {
|
||||
case ACTION_LIST:
|
||||
if (argc) {
|
||||
pr_err("Error: takes no arguments\n");
|
||||
parse_options_usage(config_usage, config_options, "l", 1);
|
||||
} else {
|
||||
ret = perf_config(show_config, NULL);
|
||||
if (ret < 0)
|
||||
pr_err("Nothing configured, "
|
||||
"please check your ~/.perfconfig file\n");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
usage_with_options(config_usage, config_options);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
|
@ -17,6 +17,7 @@ extern int cmd_annotate(int argc, const char **argv, const char *prefix);
|
|||
extern int cmd_bench(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_buildid_list(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_config(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_diff(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_evlist(int argc, const char **argv, const char *prefix);
|
||||
extern int cmd_help(int argc, const char **argv, const char *prefix);
|
||||
|
|
|
@ -9,6 +9,7 @@ perf-buildid-cache mainporcelain common
|
|||
perf-buildid-list mainporcelain common
|
||||
perf-data mainporcelain common
|
||||
perf-diff mainporcelain common
|
||||
perf-config mainporcelain common
|
||||
perf-evlist mainporcelain common
|
||||
perf-inject mainporcelain common
|
||||
perf-kmem mainporcelain common
|
||||
|
|
|
@ -39,6 +39,7 @@ struct cmd_struct {
|
|||
static struct cmd_struct commands[] = {
|
||||
{ "buildid-cache", cmd_buildid_cache, 0 },
|
||||
{ "buildid-list", cmd_buildid_list, 0 },
|
||||
{ "config", cmd_config, 0 },
|
||||
{ "diff", cmd_diff, 0 },
|
||||
{ "evlist", cmd_evlist, 0 },
|
||||
{ "help", cmd_help, 0 },
|
||||
|
|
Loading…
Reference in New Issue
Block a user