perf lock info: Display both map and thread by default

Change "perf lock info" argument handling to:

Display both map and thread info (rather than an error) when neither are
specified.

Display both map and thread info (rather than just thread info) when
both are requested.

Signed-off-by: Nick Forrington <nick.forrington@arm.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240513091413.738537-2-nick.forrington@arm.com
This commit is contained in:
Nick Forrington 2024-05-13 09:14:12 +00:00 committed by Namhyung Kim
parent af75201634
commit f7d4485fce
2 changed files with 18 additions and 15 deletions

View File

@ -111,11 +111,11 @@ INFO OPTIONS
-t:: -t::
--threads:: --threads::
dump thread list in perf.data dump only the thread list in perf.data
-m:: -m::
--map:: --map::
dump map of lock instances (address:name table) dump only the map of lock instances (address:name table)
CONTENTION OPTIONS CONTENTION OPTIONS

View File

@ -1477,20 +1477,16 @@ static void dump_map(void)
fprintf(lock_output, " %#llx: %s\n", (unsigned long long)st->addr, st->name); fprintf(lock_output, " %#llx: %s\n", (unsigned long long)st->addr, st->name);
} }
static int dump_info(void) static void dump_info(void)
{ {
int rc = 0;
if (info_threads) if (info_threads)
dump_threads(); dump_threads();
else if (info_map)
dump_map();
else {
rc = -1;
pr_err("Unknown type of information\n");
}
return rc; if (info_map) {
if (info_threads)
fputc('\n', lock_output);
dump_map();
}
} }
static const struct evsel_str_handler lock_tracepoints[] = { static const struct evsel_str_handler lock_tracepoints[] = {
@ -1992,7 +1988,7 @@ static int __cmd_report(bool display_info)
setup_pager(); setup_pager();
if (display_info) /* used for info subcommand */ if (display_info) /* used for info subcommand */
err = dump_info(); dump_info();
else { else {
combine_result(); combine_result();
sort_result(); sort_result();
@ -2568,9 +2564,9 @@ int cmd_lock(int argc, const char **argv)
const struct option info_options[] = { const struct option info_options[] = {
OPT_BOOLEAN('t', "threads", &info_threads, OPT_BOOLEAN('t', "threads", &info_threads,
"dump thread list in perf.data"), "dump the thread list in perf.data"),
OPT_BOOLEAN('m', "map", &info_map, OPT_BOOLEAN('m', "map", &info_map,
"map of lock instances (address:name table)"), "dump the map of lock instances (address:name table)"),
OPT_PARENT(lock_options) OPT_PARENT(lock_options)
}; };
@ -2684,6 +2680,13 @@ int cmd_lock(int argc, const char **argv)
if (argc) if (argc)
usage_with_options(info_usage, info_options); usage_with_options(info_usage, info_options);
} }
/* If neither threads nor map requested, display both */
if (!info_threads && !info_map) {
info_threads = true;
info_map = true;
}
/* recycling report_lock_ops */ /* recycling report_lock_ops */
trace_handler = &report_lock_ops; trace_handler = &report_lock_ops;
rc = __cmd_report(true); rc = __cmd_report(true);