]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
perf timechart: Add record support for output perf.data path
authorIan Rogers <irogers@google.com>
Sat, 22 Nov 2025 08:19:14 +0000 (00:19 -0800)
committerNamhyung Kim <namhyung@kernel.org>
Wed, 3 Dec 2025 19:07:23 +0000 (11:07 -0800)
The '-o' option exists for the SVG creation but not for `perf
timechart record`. Add to better allow testing.

Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/Documentation/perf-timechart.txt
tools/perf/builtin-timechart.c

index ef0c7565bd5c61416fd4897f497d9f5dfad50eac..ef2281c56743ea687be19d51c675d8be73b088e5 100644 (file)
@@ -94,6 +94,9 @@ RECORD OPTIONS
 -g::
 --callchain::
         Do call-graph (stack chain/backtrace) recording
+-o::
+--output=::
+        Select the output file (default: perf.data)
 
 EXAMPLES
 --------
index 22050c640dfa7dec8fd5b4b9cfdae30a09ecc686..f8b49d69e9a52a99b7b7774e39d9697511338903 100644 (file)
@@ -1651,7 +1651,7 @@ out_delete:
        return ret;
 }
 
-static int timechart__io_record(int argc, const char **argv)
+static int timechart__io_record(int argc, const char **argv, const char *output_data)
 {
        unsigned int rec_argc, i;
        const char **rec_argv;
@@ -1659,7 +1659,7 @@ static int timechart__io_record(int argc, const char **argv)
        char *filter = NULL;
 
        const char * const common_args[] = {
-               "record", "-a", "-R", "-c", "1",
+               "record", "-a", "-R", "-c", "1", "-o", output_data,
        };
        unsigned int common_args_nr = ARRAY_SIZE(common_args);
 
@@ -1786,7 +1786,8 @@ static int timechart__io_record(int argc, const char **argv)
 }
 
 
-static int timechart__record(struct timechart *tchart, int argc, const char **argv)
+static int timechart__record(struct timechart *tchart, int argc, const char **argv,
+                            const char *output_data)
 {
        unsigned int rec_argc, i, j;
        const char **rec_argv;
@@ -1794,7 +1795,7 @@ static int timechart__record(struct timechart *tchart, int argc, const char **ar
        unsigned int record_elems;
 
        const char * const common_args[] = {
-               "record", "-a", "-R", "-c", "1",
+               "record", "-a", "-R", "-c", "1", "-o", output_data,
        };
        unsigned int common_args_nr = ARRAY_SIZE(common_args);
 
@@ -1934,6 +1935,7 @@ int cmd_timechart(int argc, const char **argv)
                .merge_dist = 1000,
        };
        const char *output_name = "output.svg";
+       const char *output_record_data = "perf.data";
        const struct option timechart_common_options[] = {
        OPT_BOOLEAN('P', "power-only", &tchart.power_only, "output power data only"),
        OPT_BOOLEAN('T', "tasks-only", &tchart.tasks_only, "output processes data only"),
@@ -1976,6 +1978,7 @@ int cmd_timechart(int argc, const char **argv)
        OPT_BOOLEAN('I', "io-only", &tchart.io_only,
                    "record only IO data"),
        OPT_BOOLEAN('g', "callchain", &tchart.with_backtrace, "record callchain"),
+       OPT_STRING('o', "output", &output_record_data, "file", "output data file name"),
        OPT_PARENT(timechart_common_options),
        };
        const char * const timechart_record_usage[] = {
@@ -2024,9 +2027,9 @@ int cmd_timechart(int argc, const char **argv)
                }
 
                if (tchart.io_only)
-                       ret = timechart__io_record(argc, argv);
+                       ret = timechart__io_record(argc, argv, output_record_data);
                else
-                       ret = timechart__record(&tchart, argc, argv);
+                       ret = timechart__record(&tchart, argc, argv, output_record_data);
                goto out;
        } else if (argc)
                usage_with_options(timechart_usage, timechart_options);