[PATCH v16 RESEND 0/8] perf config: Add several functionalities into perf-config

From: Taeung Song
Date: Thu Feb 25 2016 - 10:07:31 EST


This patchset implements new functionalities for perf-config subcommand.
Add options (list-all, skel, verbose, remove) and
getting and setting functionalities into perf-config subcommand to more useful.

Changes in v16:
- rebased onto the current tip/perf/core

Changes in v15:
- separate out perf-config documention from this patchset
- 'list' and 'list-all' options can also work with --verbose
- 'get' functionality can also work with --verbose

Changes in v14:
- change default value for report.group config [Namhyung]
- make a distinction between user and system config file name
in error message when nothing configured
- bug fix, segmentation fault of '--skel' option
of which reason is that a variable wasn't initialized
- rename colors.code to colors.jump_arrows among config variables

Changes in v13:
- add record.build-id config info to perf-config doc [Namhyung]
- fill missing options info ('verbose', 'skel') on perf-config doc

Changes in v12:
- modify perf-config documentation for each section to be more proper
and correct small typing errors [Namhyung]
- add missing config variables that are group, show_linenr and
show_total_period [Namhyung]

Changes in v11:
- add --skel option to produce an skeleton with the possible config
variables [Arnaldo]
- add exception handling to --list option when nothing configured [Arnaldo]
- default action without option is to show an usage message [Arnaldo]

Changes in v10:
- split perf-config.txt into several patches for each section and replace some
paragraphes with better proper things [Arnaldo, Namhyung]
- correct wrong default values for each variable [Namhyung]
- remove the compare name function

Changes in v9:
- add the compare name functionality treating '-' and '-' as being
the same thing for usability

Changes in v8:
- correct small typing errors in a perf-config documention
- split the collecting configs part into a separate patch
- use new enum and struct for default configs instead of
hard-coded value [Namhyung]

Changes in v7:
- modify explanations of syntax and options(color, gtk, tui, buildid, annotate)
to be better proper descriptions [Arnaldo]

Changes in v6:
- split a 'set' feature patch into two patch to separate normalize_value() from it
- bug fix : 'remove' and 'set' malfunctions when without a specific file-option
(If file-option isn't used, 'remove' feature had to use both user and system
config file and 'set' feature had to only handle user config file.)

Changes in v5:
- simplify the switch statement in cmd_config()
- set a config file path with '--system' or '--user'
instead of '--global' or '--system' [Namhyung]
- the patch about 'get' and 'set 'split into two patchs [Namhyung]

Changes in v4:
- if some config value is default value, notice it is '(default)' [Jirka]
- if there wasn't any perfconfig file, perf-config malfunctioned
so add exception routine with '--global' and '--system'
option which can select perf config file path [Jirka]

Changes in v3:
- add a config variable 'kmem.default' with a default value [Namhyung]

Changes in v2:
- change option name of listing all configs as '--list-all'
instead of '--all' [Namhyung]
- correct small infelicities or typing errors in a perf-config documention [Arnaldo]
- declaration a global variable 'static struct default_configsets' has config
variables with default values instead of using a 'util/PERFCONFIG-DEFAULT' file.
- add a function to normalize a value and check data type of it.
- simplify parsing arguments as arguments is just divided by '=' and then
in front of '.' is a section, between '.' and '=' is a name,
and behind '=' is a value.
- if run perf-config command without any option, perf-config work as '--list'.

Taeung Song (8):
perf config: Collect configs to handle config variables
perf config: Add 'list-all' option to perf-config
perf config: Add a option 'skel' to perf-config
perf config: Add --verbose option for showing config description
perf config: Add 'get' functionality
perf config: Add 'set' functionality
perf config: normalize a value depending on default type of it
perf config: Add a option 'remove' to perf-config

tools/perf/Documentation/perf-config.txt | 24 +
tools/perf/builtin-config.c | 723 ++++++++++++++++++++++++++++++-
tools/perf/util/cache.h | 17 +
tools/perf/util/config.c | 27 +-
4 files changed, 777 insertions(+), 14 deletions(-)