diff options
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r-- | tools/perf/builtin-record.c | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 5d3e4b32072..edc3555098c 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -100,7 +100,7 @@ static void write_output(void *buf, size_t size) | |||
100 | } | 100 | } |
101 | } | 101 | } |
102 | 102 | ||
103 | static int process_synthesized_event(event_t *event, | 103 | static int process_synthesized_event(union perf_event *event, |
104 | struct perf_sample *sample __used, | 104 | struct perf_sample *sample __used, |
105 | struct perf_session *self __used) | 105 | struct perf_session *self __used) |
106 | { | 106 | { |
@@ -404,7 +404,7 @@ static void atexit_header(void) | |||
404 | } | 404 | } |
405 | } | 405 | } |
406 | 406 | ||
407 | static void event__synthesize_guest_os(struct machine *machine, void *data) | 407 | static void perf_event__synthesize_guest_os(struct machine *machine, void *data) |
408 | { | 408 | { |
409 | int err; | 409 | int err; |
410 | struct perf_session *psession = data; | 410 | struct perf_session *psession = data; |
@@ -420,8 +420,8 @@ static void event__synthesize_guest_os(struct machine *machine, void *data) | |||
420 | *method is used to avoid symbol missing when the first addr is | 420 | *method is used to avoid symbol missing when the first addr is |
421 | *in module instead of in guest kernel. | 421 | *in module instead of in guest kernel. |
422 | */ | 422 | */ |
423 | err = event__synthesize_modules(process_synthesized_event, | 423 | err = perf_event__synthesize_modules(process_synthesized_event, |
424 | psession, machine); | 424 | psession, machine); |
425 | if (err < 0) | 425 | if (err < 0) |
426 | pr_err("Couldn't record guest kernel [%d]'s reference" | 426 | pr_err("Couldn't record guest kernel [%d]'s reference" |
427 | " relocation symbol.\n", machine->pid); | 427 | " relocation symbol.\n", machine->pid); |
@@ -430,11 +430,12 @@ static void event__synthesize_guest_os(struct machine *machine, void *data) | |||
430 | * We use _stext for guest kernel because guest kernel's /proc/kallsyms | 430 | * We use _stext for guest kernel because guest kernel's /proc/kallsyms |
431 | * have no _text sometimes. | 431 | * have no _text sometimes. |
432 | */ | 432 | */ |
433 | err = event__synthesize_kernel_mmap(process_synthesized_event, | 433 | err = perf_event__synthesize_kernel_mmap(process_synthesized_event, |
434 | psession, machine, "_text"); | 434 | psession, machine, "_text"); |
435 | if (err < 0) | 435 | if (err < 0) |
436 | err = event__synthesize_kernel_mmap(process_synthesized_event, | 436 | err = perf_event__synthesize_kernel_mmap(process_synthesized_event, |
437 | psession, machine, "_stext"); | 437 | psession, machine, |
438 | "_stext"); | ||
438 | if (err < 0) | 439 | if (err < 0) |
439 | pr_err("Couldn't record guest kernel [%d]'s reference" | 440 | pr_err("Couldn't record guest kernel [%d]'s reference" |
440 | " relocation symbol.\n", machine->pid); | 441 | " relocation symbol.\n", machine->pid); |
@@ -617,16 +618,16 @@ static int __cmd_record(int argc, const char **argv) | |||
617 | perf_session__set_sample_id_all(session, sample_id_all_avail); | 618 | perf_session__set_sample_id_all(session, sample_id_all_avail); |
618 | 619 | ||
619 | if (pipe_output) { | 620 | if (pipe_output) { |
620 | err = event__synthesize_attrs(&session->header, | 621 | err = perf_event__synthesize_attrs(&session->header, |
621 | process_synthesized_event, | 622 | process_synthesized_event, |
622 | session); | 623 | session); |
623 | if (err < 0) { | 624 | if (err < 0) { |
624 | pr_err("Couldn't synthesize attrs.\n"); | 625 | pr_err("Couldn't synthesize attrs.\n"); |
625 | return err; | 626 | return err; |
626 | } | 627 | } |
627 | 628 | ||
628 | err = event__synthesize_event_types(process_synthesized_event, | 629 | err = perf_event__synthesize_event_types(process_synthesized_event, |
629 | session); | 630 | session); |
630 | if (err < 0) { | 631 | if (err < 0) { |
631 | pr_err("Couldn't synthesize event_types.\n"); | 632 | pr_err("Couldn't synthesize event_types.\n"); |
632 | return err; | 633 | return err; |
@@ -641,9 +642,9 @@ static int __cmd_record(int argc, const char **argv) | |||
641 | * return this more properly and also | 642 | * return this more properly and also |
642 | * propagate errors that now are calling die() | 643 | * propagate errors that now are calling die() |
643 | */ | 644 | */ |
644 | err = event__synthesize_tracing_data(output, evsel_list, | 645 | err = perf_event__synthesize_tracing_data(output, evsel_list, |
645 | process_synthesized_event, | 646 | process_synthesized_event, |
646 | session); | 647 | session); |
647 | if (err <= 0) { | 648 | if (err <= 0) { |
648 | pr_err("Couldn't record tracing data.\n"); | 649 | pr_err("Couldn't record tracing data.\n"); |
649 | return err; | 650 | return err; |
@@ -658,31 +659,34 @@ static int __cmd_record(int argc, const char **argv) | |||
658 | return -1; | 659 | return -1; |
659 | } | 660 | } |
660 | 661 | ||
661 | err = event__synthesize_kernel_mmap(process_synthesized_event, | 662 | err = perf_event__synthesize_kernel_mmap(process_synthesized_event, |
662 | session, machine, "_text"); | 663 | session, machine, "_text"); |
663 | if (err < 0) | 664 | if (err < 0) |
664 | err = event__synthesize_kernel_mmap(process_synthesized_event, | 665 | err = perf_event__synthesize_kernel_mmap(process_synthesized_event, |
665 | session, machine, "_stext"); | 666 | session, machine, "_stext"); |
666 | if (err < 0) | 667 | if (err < 0) |
667 | pr_err("Couldn't record kernel reference relocation symbol\n" | 668 | pr_err("Couldn't record kernel reference relocation symbol\n" |
668 | "Symbol resolution may be skewed if relocation was used (e.g. kexec).\n" | 669 | "Symbol resolution may be skewed if relocation was used (e.g. kexec).\n" |
669 | "Check /proc/kallsyms permission or run as root.\n"); | 670 | "Check /proc/kallsyms permission or run as root.\n"); |
670 | 671 | ||
671 | err = event__synthesize_modules(process_synthesized_event, | 672 | err = perf_event__synthesize_modules(process_synthesized_event, |
672 | session, machine); | 673 | session, machine); |
673 | if (err < 0) | 674 | if (err < 0) |
674 | pr_err("Couldn't record kernel module information.\n" | 675 | pr_err("Couldn't record kernel module information.\n" |
675 | "Symbol resolution may be skewed if relocation was used (e.g. kexec).\n" | 676 | "Symbol resolution may be skewed if relocation was used (e.g. kexec).\n" |
676 | "Check /proc/modules permission or run as root.\n"); | 677 | "Check /proc/modules permission or run as root.\n"); |
677 | 678 | ||
678 | if (perf_guest) | 679 | if (perf_guest) |
679 | perf_session__process_machines(session, event__synthesize_guest_os); | 680 | perf_session__process_machines(session, |
681 | perf_event__synthesize_guest_os); | ||
680 | 682 | ||
681 | if (!system_wide) | 683 | if (!system_wide) |
682 | event__synthesize_thread(target_tid, process_synthesized_event, | 684 | perf_event__synthesize_thread(target_tid, |
683 | session); | 685 | process_synthesized_event, |
686 | session); | ||
684 | else | 687 | else |
685 | event__synthesize_threads(process_synthesized_event, session); | 688 | perf_event__synthesize_threads(process_synthesized_event, |
689 | session); | ||
686 | 690 | ||
687 | if (realtime_prio) { | 691 | if (realtime_prio) { |
688 | struct sched_param param; | 692 | struct sched_param param; |