diff options
| -rw-r--r-- | tools/perf/Documentation/perf-ftrace.txt | 4 | ||||
| -rw-r--r-- | tools/perf/builtin-ftrace.c | 19 | 
2 files changed, 20 insertions, 3 deletions
diff --git a/tools/perf/Documentation/perf-ftrace.txt b/tools/perf/Documentation/perf-ftrace.txt index 08216634d2bc..29c684b3b3fd 100644 --- a/tools/perf/Documentation/perf-ftrace.txt +++ b/tools/perf/Documentation/perf-ftrace.txt @@ -39,6 +39,10 @@ OPTIONS  --pid=::  	Trace on existing process id (comma separated list). +-D:: +--delay:: +	Time (ms) to wait before starting tracing after program start. +  -a::  --all-cpus::  	Force system-wide collection.  Scripts run without a <command> diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c index bc3b35d18167..5f9a9ebea0a2 100644 --- a/tools/perf/builtin-ftrace.c +++ b/tools/perf/builtin-ftrace.c @@ -49,6 +49,7 @@ struct perf_ftrace {  	int			graph_noirqs;  	int			graph_verbose;  	int			graph_thresh; +	unsigned int		initial_delay;  };  struct filter_entry { @@ -596,13 +597,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; @@ -827,6 +838,8 @@ int cmd_ftrace(int argc, const char **argv)  		     "size of per cpu buffer", parse_buffer_size),  	OPT_BOOLEAN(0, "inherit", &ftrace.inherit,  		    "trace children processes"), +	OPT_UINTEGER('D', "delay", &ftrace.initial_delay, +		     "ms to wait before starting tracing after program start"),  	OPT_END()  	};  | 
