diff options
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r-- | tools/perf/builtin-record.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index d3981ac50e1d..6b77b285fe10 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -494,6 +494,29 @@ static void event__synthesize_guest_os(struct machine *machine, void *data) | |||
494 | " relocation symbol.\n", machine->pid); | 494 | " relocation symbol.\n", machine->pid); |
495 | } | 495 | } |
496 | 496 | ||
497 | static struct perf_event_header finished_round_event = { | ||
498 | .size = sizeof(struct perf_event_header), | ||
499 | .type = PERF_RECORD_FINISHED_ROUND, | ||
500 | }; | ||
501 | |||
502 | static void mmap_read_all(void) | ||
503 | { | ||
504 | int i, counter, thread; | ||
505 | |||
506 | for (i = 0; i < nr_cpu; i++) { | ||
507 | for (counter = 0; counter < nr_counters; counter++) { | ||
508 | for (thread = 0; thread < thread_num; thread++) { | ||
509 | if (mmap_array[i][counter][thread].base) | ||
510 | mmap_read(&mmap_array[i][counter][thread]); | ||
511 | } | ||
512 | |||
513 | } | ||
514 | } | ||
515 | |||
516 | if (perf_header__has_feat(&session->header, HEADER_TRACE_INFO)) | ||
517 | write_output(&finished_round_event, sizeof(finished_round_event)); | ||
518 | } | ||
519 | |||
497 | static int __cmd_record(int argc, const char **argv) | 520 | static int __cmd_record(int argc, const char **argv) |
498 | { | 521 | { |
499 | int i, counter; | 522 | int i, counter; |
@@ -726,16 +749,7 @@ static int __cmd_record(int argc, const char **argv) | |||
726 | int hits = samples; | 749 | int hits = samples; |
727 | int thread; | 750 | int thread; |
728 | 751 | ||
729 | for (i = 0; i < nr_cpu; i++) { | 752 | mmap_read_all(); |
730 | for (counter = 0; counter < nr_counters; counter++) { | ||
731 | for (thread = 0; | ||
732 | thread < thread_num; thread++) { | ||
733 | if (mmap_array[i][counter][thread].base) | ||
734 | mmap_read(&mmap_array[i][counter][thread]); | ||
735 | } | ||
736 | |||
737 | } | ||
738 | } | ||
739 | 753 | ||
740 | if (hits == samples) { | 754 | if (hits == samples) { |
741 | if (done) | 755 | if (done) |