aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/builtin-record.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index ab333812ace6..9f98b86e747c 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -497,13 +497,22 @@ static int __cmd_record(int argc, const char **argv)
497 if (target_pid == -1 && argc) { 497 if (target_pid == -1 && argc) {
498 pid = fork(); 498 pid = fork();
499 if (pid < 0) 499 if (pid < 0)
500 perror("failed to fork"); 500 die("failed to fork");
501 501
502 if (!pid) { 502 if (!pid) {
503 if (execvp(argv[0], (char **)argv)) { 503 if (execvp(argv[0], (char **)argv)) {
504 perror(argv[0]); 504 perror(argv[0]);
505 exit(-1); 505 exit(-1);
506 } 506 }
507 } else {
508 /*
509 * Wait a bit for the execv'ed child to appear
510 * and be updated in /proc
511 * FIXME: Do you know a less heuristical solution?
512 */
513 usleep(1000);
514 event__synthesize_thread(pid,
515 process_synthesized_event);
507 } 516 }
508 517
509 child_pid = pid; 518 child_pid = pid;