]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf help: Move common_cmds into builtin-help
authorIan Rogers <irogers@google.com>
Thu, 4 Dec 2025 21:11:43 +0000 (13:11 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 14 Jan 2026 20:22:50 +0000 (17:22 -0300)
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>
tools/perf/Makefile.perf
tools/perf/builtin-help.c
tools/perf/command-list.txt [deleted file]
tools/perf/util/Build
tools/perf/util/generate-cmdlist.sh [deleted file]

index e6895626c1872a84c0a592df01d32403b7df3d2b..45d5a59a02cb63accd71f5697ecc6eeab5f0f099 100644 (file)
@@ -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 \
index 7be6fb6df595923c15ae51747d5bf17d867ae785..2692b2e40a23cfb0697a5bf758d98d3c67b2cd36 100644 (file)
@@ -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);
        }
 }
diff --git a/tools/perf/command-list.txt b/tools/perf/command-list.txt
deleted file mode 100644 (file)
index e8d2762..0000000
+++ /dev/null
@@ -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
index 248ad3ac64da7bf2429fbd3aaf4505ec5fedf2ad..4915f237ba9e338c9b6af74962708b038c1f6c1a 100644 (file)
@@ -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)
diff --git a/tools/perf/util/generate-cmdlist.sh b/tools/perf/util/generate-cmdlist.sh
deleted file mode 100755 (executable)
index 6a73c90..0000000
+++ /dev/null
@@ -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 "};"