This adds an option '-d/--delay' to allow us to start tracing some
times later after workload is launched.

Signed-off-by: Changbin Du <[email protected]>
---
 tools/perf/builtin-ftrace.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index 8d04e5afe2d3..d376b37c53fc 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -49,6 +49,7 @@ struct perf_ftrace {
        bool                    trace_children;
        unsigned                buffer_size_kb;
        bool                    no_pager;
+       unsigned                initial_delay;
 };
 
 struct filter_entry {
@@ -617,13 +618,23 @@ static int __cmd_ftrace(struct perf_ftrace *ftrace, int 
argc, const char **argv)
        /* display column headers */
        read_tracing_file_to_stdout("trace");
 
-       if (write_tracing_file("tracing_on", "1") < 0) {
-               pr_err("can't enable tracing\n");
-               goto out_close_fd;
+       if (!ftrace->initial_delay) {
+               if (write_tracing_file("tracing_on", "1") < 0) {
+                       pr_err("can't enable tracing\n");
+                       goto out_close_fd;
+               }
        }
 
        perf_evlist__start_workload(ftrace->evlist);
 
+       if (ftrace->initial_delay) {
+               usleep(ftrace->initial_delay * 1000);
+               if (write_tracing_file("tracing_on", "1") < 0) {
+                       pr_err("can't enable tracing\n");
+                       goto out_close_fd;
+               }
+       }
+
        while (!done) {
                if (poll(&pollfd, 1, -1) < 0)
                        break;
@@ -747,6 +758,8 @@ int cmd_ftrace(int argc, const char **argv)
                     "size of per cpu buffer in kb"),
        OPT_BOOLEAN('P', "no-pager", &ftrace.no_pager,
                    "Do not use pager"),
+       OPT_UINTEGER('d', "delay", &ftrace.initial_delay,
+                    "Wait <n> ms before tracing"),
        OPT_END()
        };
 
-- 
2.25.1

Reply via email to