mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
perf help: Move common_cmds into builtin-help
There's a lot of infrastructure for generating a relatively simple array used by one function. Move the array into the function and remove the supporting build logic. At the same time opportunistically const-ify the array. Signed-off-by: Ian Rogers <irogers@google.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Charlie Jenkins <charlie@rivosinc.com> Cc: Howard Chu <howardchu95@gmail.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@linaro.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
committed by
Arnaldo Carvalho de Melo
parent
d0a3df886d
commit
47d3545fae
@@ -808,11 +808,6 @@ $(GTK_IN): FORCE prepare
|
||||
$(OUTPUT)libperf-gtk.so: $(GTK_IN) $(PERFLIBS)
|
||||
$(QUIET_LINK)$(CC) -o $@ -shared $(LDFLAGS) $(filter %.o,$^) $(GTK_LIBS)
|
||||
|
||||
$(OUTPUT)common-cmds.h: util/generate-cmdlist.sh command-list.txt
|
||||
|
||||
$(OUTPUT)common-cmds.h: $(wildcard Documentation/perf-*.txt)
|
||||
$(QUIET_GEN). util/generate-cmdlist.sh > $@+ && mv $@+ $@
|
||||
|
||||
$(SCRIPTS) : % : %.sh
|
||||
$(QUIET_GEN)$(INSTALL) '$@.sh' '$(OUTPUT)$@'
|
||||
|
||||
@@ -850,7 +845,7 @@ endif
|
||||
__build-dir = $(subst $(OUTPUT),,$(dir $@))
|
||||
build-dir = $(or $(__build-dir),.)
|
||||
|
||||
prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h archheaders \
|
||||
prepare: $(OUTPUT)PERF-VERSION-FILE archheaders \
|
||||
arm64-sysreg-defs \
|
||||
$(syscall_array) \
|
||||
$(fs_at_flags_array) \
|
||||
@@ -1054,7 +1049,7 @@ cscope:
|
||||
# However, the environment gets quite big, and some programs have problems
|
||||
# with that.
|
||||
|
||||
check: $(OUTPUT)common-cmds.h
|
||||
check: prepare
|
||||
if sparse; \
|
||||
then \
|
||||
for i in *.c */*.c; \
|
||||
@@ -1297,7 +1292,7 @@ clean:: $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBSYMBOL)-clean $(
|
||||
$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 \
|
||||
perf-read-vdsox32 $(OUTPUT)$(LIBJVMTI).so
|
||||
$(call QUIET_CLEAN, core-gen) $(RM) *.spec *.pyc *.pyo */*.pyc */*.pyo \
|
||||
$(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE \
|
||||
TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE \
|
||||
$(OUTPUT)FEATURE-DUMP $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex* \
|
||||
$(OUTPUT)util/intel-pt-decoder/inat-tables.c \
|
||||
$(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "util/strbuf.h"
|
||||
#include "builtin.h"
|
||||
#include <subcmd/exec-cmd.h>
|
||||
#include "common-cmds.h"
|
||||
#include <subcmd/parse-options.h>
|
||||
#include <subcmd/run-command.h>
|
||||
#include <subcmd/help.h>
|
||||
@@ -301,16 +300,58 @@ static struct cmdnames main_cmds, other_cmds;
|
||||
|
||||
void list_common_cmds_help(void)
|
||||
{
|
||||
unsigned int i, longest = 0;
|
||||
const struct cmdname_help {
|
||||
const char *name;
|
||||
const char *help;
|
||||
} common_cmds[] = {
|
||||
{"annotate", "Read perf.data (created by perf record) and display annotated code"},
|
||||
{"archive",
|
||||
"Create archive with object files with build-ids found in perf.data file"},
|
||||
{"bench", "General framework for benchmark suites"},
|
||||
{"buildid-cache", "Manage build-id cache."},
|
||||
{"buildid-list", "List the buildids in a perf.data file"},
|
||||
{"c2c", "Shared Data C2C/HITM Analyzer."},
|
||||
{"config", "Get and set variables in a configuration file."},
|
||||
{"daemon", "Run record sessions on background"},
|
||||
{"data", "Data file related processing"},
|
||||
{"diff", "Read perf.data files and display the differential profile"},
|
||||
{"evlist", "List the event names in a perf.data file"},
|
||||
{"ftrace", "simple wrapper for kernel's ftrace functionality"},
|
||||
{"inject", "Filter to augment the events stream with additional information"},
|
||||
{"iostat", "Show I/O performance metrics"},
|
||||
{"kallsyms", "Searches running kernel for symbols"},
|
||||
{"kvm", "Tool to trace/measure kvm guest os"},
|
||||
{"list", "List all symbolic event types"},
|
||||
{"mem", "Profile memory accesses"},
|
||||
{"record", "Run a command and record its profile into perf.data"},
|
||||
{"report", "Read perf.data (created by perf record) and display the profile"},
|
||||
{"script", "Read perf.data (created by perf record) and display trace output"},
|
||||
{"stat", "Run a command and gather performance counter statistics"},
|
||||
{"test", "Runs sanity tests."},
|
||||
{"top", "System profiling tool."},
|
||||
{"version", "display the version of perf binary"},
|
||||
#ifdef HAVE_LIBELF_SUPPORT
|
||||
{"probe", "Define new dynamic tracepoints"},
|
||||
#endif /* HAVE_LIBELF_SUPPORT */
|
||||
#ifdef HAVE_LIBTRACEEVENT
|
||||
{"trace", "strace inspired tool"},
|
||||
{"kmem", "Tool to trace/measure kernel memory properties"},
|
||||
{"kwork", "Tool to trace/measure kernel work properties (latencies)"},
|
||||
{"lock", "Analyze lock events"},
|
||||
{"sched", "Tool to trace/measure scheduler properties (latencies)"},
|
||||
{"timechart", "Tool to visualize total system behavior during a workload"},
|
||||
#endif /* HAVE_LIBTRACEEVENT */
|
||||
};
|
||||
size_t longest = 0;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
|
||||
for (size_t i = 0; i < ARRAY_SIZE(common_cmds); i++) {
|
||||
if (longest < strlen(common_cmds[i].name))
|
||||
longest = strlen(common_cmds[i].name);
|
||||
}
|
||||
|
||||
puts(" The most commonly used perf commands are:");
|
||||
for (i = 0; i < ARRAY_SIZE(common_cmds); i++) {
|
||||
printf(" %-*s ", longest, common_cmds[i].name);
|
||||
for (size_t i = 0; i < ARRAY_SIZE(common_cmds); i++) {
|
||||
printf(" %-*s ", (int)longest, common_cmds[i].name);
|
||||
puts(common_cmds[i].help);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
#
|
||||
# List of known perf commands.
|
||||
# command name category [deprecated] [common]
|
||||
#
|
||||
perf-annotate mainporcelain common
|
||||
perf-archive mainporcelain common
|
||||
perf-bench mainporcelain common
|
||||
perf-buildid-cache mainporcelain common
|
||||
perf-buildid-list mainporcelain common
|
||||
perf-data mainporcelain common
|
||||
perf-diff mainporcelain common
|
||||
perf-c2c mainporcelain common
|
||||
perf-config mainporcelain common
|
||||
perf-evlist mainporcelain common
|
||||
perf-ftrace mainporcelain common
|
||||
perf-inject mainporcelain common
|
||||
perf-iostat mainporcelain common
|
||||
perf-kallsyms mainporcelain common
|
||||
perf-kmem mainporcelain traceevent
|
||||
perf-kvm mainporcelain common
|
||||
perf-kwork mainporcelain traceevent
|
||||
perf-list mainporcelain common
|
||||
perf-lock mainporcelain traceevent
|
||||
perf-mem mainporcelain common
|
||||
perf-probe mainporcelain full
|
||||
perf-record mainporcelain common
|
||||
perf-report mainporcelain common
|
||||
perf-sched mainporcelain traceevent
|
||||
perf-script mainporcelain common
|
||||
perf-stat mainporcelain common
|
||||
perf-test mainporcelain common
|
||||
perf-timechart mainporcelain traceevent
|
||||
perf-top mainporcelain common
|
||||
perf-trace mainporcelain audit
|
||||
perf-version mainporcelain common
|
||||
perf-daemon mainporcelain common
|
||||
@@ -419,20 +419,6 @@ $(OUTPUT)util/list_sort.o: ../lib/list_sort.c FORCE
|
||||
$(call rule_mkdir)
|
||||
$(call if_changed_dep,cc_o_c)
|
||||
|
||||
ifdef SHELLCHECK
|
||||
SHELL_TESTS := generate-cmdlist.sh
|
||||
SHELL_TEST_LOGS := $(SHELL_TESTS:%=%.shellcheck_log)
|
||||
else
|
||||
SHELL_TESTS :=
|
||||
SHELL_TEST_LOGS :=
|
||||
endif
|
||||
|
||||
$(OUTPUT)%.shellcheck_log: %
|
||||
$(call rule_mkdir)
|
||||
$(Q)$(call echo-cmd,test)$(SHELLCHECK) "$<" > $@ || (cat $@ && rm $@ && false)
|
||||
|
||||
perf-util-y += $(SHELL_TEST_LOGS)
|
||||
|
||||
PY_TESTS := setup.py
|
||||
ifdef MYPY
|
||||
MYPY_TEST_LOGS := $(PY_TESTS:%=%.mypy_log)
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
echo "/* Automatically generated by $0 */
|
||||
struct cmdname_help
|
||||
{
|
||||
char name[16];
|
||||
char help[80];
|
||||
};
|
||||
|
||||
static struct cmdname_help common_cmds[] = {"
|
||||
|
||||
sed -n -e 's/^perf-\([^ ]*\)[ ].* common.*/\1/p' command-list.txt |
|
||||
sort |
|
||||
while read cmd
|
||||
do
|
||||
sed -n '
|
||||
/^NAME/,/perf-'"$cmd"'/H
|
||||
${
|
||||
x
|
||||
s/.*perf-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/
|
||||
p
|
||||
}' "Documentation/perf-$cmd.txt"
|
||||
done
|
||||
|
||||
echo "#ifdef HAVE_LIBELF_SUPPORT"
|
||||
sed -n -e 's/^perf-\([^ ]*\)[ ].* full.*/\1/p' command-list.txt |
|
||||
sort |
|
||||
while read cmd
|
||||
do
|
||||
sed -n '
|
||||
/^NAME/,/perf-'"$cmd"'/H
|
||||
${
|
||||
x
|
||||
s/.*perf-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/
|
||||
p
|
||||
}' "Documentation/perf-$cmd.txt"
|
||||
done
|
||||
echo "#endif /* HAVE_LIBELF_SUPPORT */"
|
||||
|
||||
echo "#if defined(HAVE_LIBTRACEEVENT)"
|
||||
sed -n -e 's/^perf-\([^ ]*\)[ ].* audit*/\1/p' command-list.txt |
|
||||
sort |
|
||||
while read cmd
|
||||
do
|
||||
sed -n '
|
||||
/^NAME/,/perf-'"$cmd"'/H
|
||||
${
|
||||
x
|
||||
s/.*perf-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/
|
||||
p
|
||||
}' "Documentation/perf-$cmd.txt"
|
||||
done
|
||||
echo "#endif /* HAVE_LIBTRACEEVENT */"
|
||||
|
||||
echo "#ifdef HAVE_LIBTRACEEVENT"
|
||||
sed -n -e 's/^perf-\([^ ]*\)[ ].* traceevent.*/\1/p' command-list.txt |
|
||||
sort |
|
||||
while read cmd
|
||||
do
|
||||
sed -n '
|
||||
/^NAME/,/perf-'"$cmd"'/H
|
||||
${
|
||||
x
|
||||
s/.*perf-'"$cmd"' - \(.*\)/ {"'"$cmd"'", "\1"},/
|
||||
p
|
||||
}' "Documentation/perf-$cmd.txt"
|
||||
done
|
||||
echo "#endif /* HAVE_LIBTRACEEVENT */"
|
||||
echo "};"
|
||||
Reference in New Issue
Block a user