diff options
Diffstat (limited to 'tools/perf/builtin-trace.c')
-rw-r--r-- | tools/perf/builtin-trace.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index d222d7fc7e96..ab3ed4af1466 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
@@ -419,7 +419,7 @@ out_dump: | |||
419 | 419 | ||
420 | static int trace__run(struct trace *trace, int argc, const char **argv) | 420 | static int trace__run(struct trace *trace, int argc, const char **argv) |
421 | { | 421 | { |
422 | struct perf_evlist *evlist = perf_evlist__new(NULL, NULL); | 422 | struct perf_evlist *evlist = perf_evlist__new(); |
423 | struct perf_evsel *evsel; | 423 | struct perf_evsel *evsel; |
424 | int err = -1, i; | 424 | int err = -1, i; |
425 | unsigned long before; | 425 | unsigned long before; |
@@ -452,7 +452,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv) | |||
452 | err = trace__symbols_init(trace, evlist); | 452 | err = trace__symbols_init(trace, evlist); |
453 | if (err < 0) { | 453 | if (err < 0) { |
454 | printf("Problems initializing symbol libraries!\n"); | 454 | printf("Problems initializing symbol libraries!\n"); |
455 | goto out_delete_evlist; | 455 | goto out_delete_maps; |
456 | } | 456 | } |
457 | 457 | ||
458 | perf_evlist__config(evlist, &trace->opts); | 458 | perf_evlist__config(evlist, &trace->opts); |
@@ -461,23 +461,24 @@ static int trace__run(struct trace *trace, int argc, const char **argv) | |||
461 | signal(SIGINT, sig_handler); | 461 | signal(SIGINT, sig_handler); |
462 | 462 | ||
463 | if (forks) { | 463 | if (forks) { |
464 | err = perf_evlist__prepare_workload(evlist, &trace->opts, argv); | 464 | err = perf_evlist__prepare_workload(evlist, &trace->opts.target, |
465 | argv, false, false); | ||
465 | if (err < 0) { | 466 | if (err < 0) { |
466 | printf("Couldn't run the workload!\n"); | 467 | printf("Couldn't run the workload!\n"); |
467 | goto out_delete_evlist; | 468 | goto out_delete_maps; |
468 | } | 469 | } |
469 | } | 470 | } |
470 | 471 | ||
471 | err = perf_evlist__open(evlist); | 472 | err = perf_evlist__open(evlist); |
472 | if (err < 0) { | 473 | if (err < 0) { |
473 | printf("Couldn't create the events: %s\n", strerror(errno)); | 474 | printf("Couldn't create the events: %s\n", strerror(errno)); |
474 | goto out_delete_evlist; | 475 | goto out_delete_maps; |
475 | } | 476 | } |
476 | 477 | ||
477 | err = perf_evlist__mmap(evlist, UINT_MAX, false); | 478 | err = perf_evlist__mmap(evlist, UINT_MAX, false); |
478 | if (err < 0) { | 479 | if (err < 0) { |
479 | printf("Couldn't mmap the events: %s\n", strerror(errno)); | 480 | printf("Couldn't mmap the events: %s\n", strerror(errno)); |
480 | goto out_delete_evlist; | 481 | goto out_close_evlist; |
481 | } | 482 | } |
482 | 483 | ||
483 | perf_evlist__enable(evlist); | 484 | perf_evlist__enable(evlist); |
@@ -526,13 +527,6 @@ again: | |||
526 | continue; | 527 | continue; |
527 | } | 528 | } |
528 | 529 | ||
529 | if (sample.raw_data == NULL) { | ||
530 | printf("%s sample with no payload for tid: %d, cpu %d, raw_size=%d, skipping...\n", | ||
531 | perf_evsel__name(evsel), sample.tid, | ||
532 | sample.cpu, sample.raw_size); | ||
533 | continue; | ||
534 | } | ||
535 | |||
536 | handler = evsel->handler.func; | 530 | handler = evsel->handler.func; |
537 | handler(trace, evsel, &sample); | 531 | handler(trace, evsel, &sample); |
538 | } | 532 | } |
@@ -540,7 +534,7 @@ again: | |||
540 | 534 | ||
541 | if (trace->nr_events == before) { | 535 | if (trace->nr_events == before) { |
542 | if (done) | 536 | if (done) |
543 | goto out_delete_evlist; | 537 | goto out_unmap_evlist; |
544 | 538 | ||
545 | poll(evlist->pollfd, evlist->nr_fds, -1); | 539 | poll(evlist->pollfd, evlist->nr_fds, -1); |
546 | } | 540 | } |
@@ -550,6 +544,12 @@ again: | |||
550 | 544 | ||
551 | goto again; | 545 | goto again; |
552 | 546 | ||
547 | out_unmap_evlist: | ||
548 | perf_evlist__munmap(evlist); | ||
549 | out_close_evlist: | ||
550 | perf_evlist__close(evlist); | ||
551 | out_delete_maps: | ||
552 | perf_evlist__delete_maps(evlist); | ||
553 | out_delete_evlist: | 553 | out_delete_evlist: |
554 | perf_evlist__delete(evlist); | 554 | perf_evlist__delete(evlist); |
555 | out: | 555 | out: |