Lines Matching refs:inject

68 static int output_bytes(struct perf_inject *inject, void *buf, size_t sz)  in output_bytes()  argument
72 size = perf_data__write(&inject->output, buf, sz); in output_bytes()
76 inject->bytes_written += size; in output_bytes()
83 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_synth() local
86 return output_bytes(inject, event, event->header.size); in perf_event__repipe_synth()
122 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_attr() local
130 if (!inject->is_pipe) in perf_event__repipe_attr()
145 static int copy_bytes(struct perf_inject *inject, int fd, off_t size) in copy_bytes() argument
155 ret = output_bytes(inject, buf, ssz); in copy_bytes()
168 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_auxtrace() local
172 inject->have_auxtrace = true; in perf_event__repipe_auxtrace()
174 if (!inject->output.is_pipe) { in perf_event__repipe_auxtrace()
177 offset = lseek(inject->output.file.fd, 0, SEEK_CUR); in perf_event__repipe_auxtrace()
187 ret = output_bytes(inject, event, event->header.size); in perf_event__repipe_auxtrace()
190 ret = copy_bytes(inject, perf_data__fd(session->data), in perf_event__repipe_auxtrace()
193 ret = output_bytes(inject, event, in perf_event__repipe_auxtrace()
235 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__drop_aux() local
237 if (!inject->aux_id) in perf_event__drop_aux()
238 inject->aux_id = sample->id; in perf_event__drop_aux()
244 perf_inject__cut_auxtrace_sample(struct perf_inject *inject, in perf_inject__cut_auxtrace_sample() argument
250 union perf_event *ev = (union perf_event *)inject->event_copy; in perf_inject__cut_auxtrace_sample()
277 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_sample() local
287 if (inject->itrace_synth_opts.set && sample->aux_sample.size) in perf_event__repipe_sample()
288 event = perf_inject__cut_auxtrace_sample(inject, event, sample); in perf_event__repipe_sample()
312 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap() local
319 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap()
324 inject->bytes_written += n; in perf_event__jit_repipe_mmap()
425 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap2() local
432 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap2()
437 inject->bytes_written += n; in perf_event__jit_repipe_mmap2()
621 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_process_exit() local
624 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_process_exit()
641 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_switch() local
655 list_add(&ent->node, &inject->samples); in perf_inject__sched_switch()
668 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_stat() local
671 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_stat()
717 static void strip_init(struct perf_inject *inject) in strip_init() argument
719 struct evlist *evlist = inject->session->evlist; in strip_init()
722 inject->tool.context_switch = perf_event__drop; in strip_init()
730 struct perf_inject *inject = opt->value; in parse_vm_time_correlation() local
737 inject->itrace_synth_opts.set = true; in parse_vm_time_correlation()
738 inject->itrace_synth_opts.vm_time_correlation = true; in parse_vm_time_correlation()
739 inject->in_place_update = true; in parse_vm_time_correlation()
746 inject->itrace_synth_opts.vm_tm_corr_dry_run = true; in parse_vm_time_correlation()
747 inject->in_place_update_dry_run = true; in parse_vm_time_correlation()
753 inject->itrace_synth_opts.vm_tm_corr_args = strdup(args); in parse_vm_time_correlation()
755 return inject->itrace_synth_opts.vm_tm_corr_args ? 0 : -ENOMEM; in parse_vm_time_correlation()
758 static int output_fd(struct perf_inject *inject) in output_fd() argument
760 return inject->in_place_update ? -1 : perf_data__fd(&inject->output); in output_fd()
763 static int __cmd_inject(struct perf_inject *inject) in __cmd_inject() argument
766 struct perf_session *session = inject->session; in __cmd_inject()
767 int fd = output_fd(inject); in __cmd_inject()
772 if (inject->build_ids || inject->sched_stat || in __cmd_inject()
773 inject->itrace_synth_opts.set || inject->build_id_all) { in __cmd_inject()
774 inject->tool.mmap = perf_event__repipe_mmap; in __cmd_inject()
775 inject->tool.mmap2 = perf_event__repipe_mmap2; in __cmd_inject()
776 inject->tool.fork = perf_event__repipe_fork; in __cmd_inject()
777 inject->tool.tracing_data = perf_event__repipe_tracing_data; in __cmd_inject()
782 if (inject->build_id_all) { in __cmd_inject()
783 inject->tool.mmap = perf_event__repipe_buildid_mmap; in __cmd_inject()
784 inject->tool.mmap2 = perf_event__repipe_buildid_mmap2; in __cmd_inject()
785 } else if (inject->build_ids) { in __cmd_inject()
786 inject->tool.sample = perf_event__inject_buildid; in __cmd_inject()
787 } else if (inject->sched_stat) { in __cmd_inject()
803 } else if (inject->itrace_synth_opts.vm_time_correlation) { in __cmd_inject()
804 session->itrace_synth_opts = &inject->itrace_synth_opts; in __cmd_inject()
805 memset(&inject->tool, 0, sizeof(inject->tool)); in __cmd_inject()
806 inject->tool.id_index = perf_event__process_id_index; in __cmd_inject()
807 inject->tool.auxtrace_info = perf_event__process_auxtrace_info; in __cmd_inject()
808 inject->tool.auxtrace = perf_event__process_auxtrace; in __cmd_inject()
809 inject->tool.auxtrace_error = perf_event__process_auxtrace_error; in __cmd_inject()
810 inject->tool.ordered_events = true; in __cmd_inject()
811 inject->tool.ordering_requires_timestamps = true; in __cmd_inject()
812 } else if (inject->itrace_synth_opts.set) { in __cmd_inject()
813 session->itrace_synth_opts = &inject->itrace_synth_opts; in __cmd_inject()
814 inject->itrace_synth_opts.inject = true; in __cmd_inject()
815 inject->tool.comm = perf_event__repipe_comm; in __cmd_inject()
816 inject->tool.namespaces = perf_event__repipe_namespaces; in __cmd_inject()
817 inject->tool.exit = perf_event__repipe_exit; in __cmd_inject()
818 inject->tool.id_index = perf_event__process_id_index; in __cmd_inject()
819 inject->tool.auxtrace_info = perf_event__process_auxtrace_info; in __cmd_inject()
820 inject->tool.auxtrace = perf_event__process_auxtrace; in __cmd_inject()
821 inject->tool.aux = perf_event__drop_aux; in __cmd_inject()
822 inject->tool.itrace_start = perf_event__drop_aux; in __cmd_inject()
823 inject->tool.aux_output_hw_id = perf_event__drop_aux; in __cmd_inject()
824 inject->tool.ordered_events = true; in __cmd_inject()
825 inject->tool.ordering_requires_timestamps = true; in __cmd_inject()
828 if (inject->strip) in __cmd_inject()
829 strip_init(inject); in __cmd_inject()
832 if (!inject->itrace_synth_opts.set) in __cmd_inject()
835 if (!inject->is_pipe && !inject->in_place_update) in __cmd_inject()
842 if (!inject->is_pipe && !inject->in_place_update) { in __cmd_inject()
843 if (inject->build_ids) in __cmd_inject()
851 inject->have_auxtrace && !inject->itrace_synth_opts.set) in __cmd_inject()
857 if (inject->itrace_synth_opts.set) { in __cmd_inject()
860 if (inject->itrace_synth_opts.last_branch || in __cmd_inject()
861 inject->itrace_synth_opts.add_last_branch) in __cmd_inject()
866 session->header.data_size = inject->bytes_written; in __cmd_inject()
875 struct perf_inject inject = { in cmd_inject() local
916 .samples = LIST_HEAD_INIT(inject.samples), in cmd_inject()
931 OPT_BOOLEAN('b', "build-ids", &inject.build_ids, in cmd_inject()
933 OPT_BOOLEAN(0, "buildid-all", &inject.build_id_all, in cmd_inject()
935 OPT_STRING('i', "input", &inject.input_name, "file", in cmd_inject()
937 OPT_STRING('o', "output", &inject.output.path, "file", in cmd_inject()
939 OPT_BOOLEAN('s', "sched-stat", &inject.sched_stat, in cmd_inject()
943 OPT_BOOLEAN('j', "jit", &inject.jit_mode, "merge jitdump files into perf.data file"), in cmd_inject()
954 OPT_CALLBACK_OPTARG(0, "itrace", &inject.itrace_synth_opts, in cmd_inject()
958 OPT_BOOLEAN(0, "strip", &inject.strip, in cmd_inject()
960 OPT_CALLBACK_OPTARG(0, "vm-time-correlation", &inject, NULL, "opts", in cmd_inject()
980 if (inject.strip && !inject.itrace_synth_opts.set) { in cmd_inject()
988 if (inject.in_place_update) { in cmd_inject()
989 if (!strcmp(inject.input_name, "-")) { in cmd_inject()
993 if (strcmp(inject.output.path, "-")) { in cmd_inject()
997 if (!data.force && !inject.in_place_update_dry_run) { in cmd_inject()
1002 if (!inject.in_place_update_dry_run) in cmd_inject()
1004 } else if (perf_data__open(&inject.output)) { in cmd_inject()
1009 data.path = inject.input_name; in cmd_inject()
1010 if (!strcmp(inject.input_name, "-") || inject.output.is_pipe) { in cmd_inject()
1011 inject.is_pipe = true; in cmd_inject()
1017 if (strcmp(inject.input_name, "-")) in cmd_inject()
1021 inject.session = __perf_session__new(&data, repipe, in cmd_inject()
1022 output_fd(&inject), in cmd_inject()
1023 &inject.tool); in cmd_inject()
1024 if (IS_ERR(inject.session)) { in cmd_inject()
1025 ret = PTR_ERR(inject.session); in cmd_inject()
1029 if (zstd_init(&(inject.session->zstd_data), 0) < 0) in cmd_inject()
1032 if (!data.is_pipe && inject.output.is_pipe) { in cmd_inject()
1033 ret = perf_header__write_pipe(perf_data__fd(&inject.output)); in cmd_inject()
1039 ret = perf_event__synthesize_for_pipe(&inject.tool, in cmd_inject()
1040 inject.session, in cmd_inject()
1041 &inject.output, in cmd_inject()
1047 if (inject.build_ids && !inject.build_id_all) { in cmd_inject()
1054 inject.tool.ordered_events = true; in cmd_inject()
1055 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
1058 if (inject.sched_stat) { in cmd_inject()
1059 inject.tool.ordered_events = true; in cmd_inject()
1063 if (inject.jit_mode) { in cmd_inject()
1064 inject.tool.mmap2 = perf_event__jit_repipe_mmap2; in cmd_inject()
1065 inject.tool.mmap = perf_event__jit_repipe_mmap; in cmd_inject()
1066 inject.tool.ordered_events = true; in cmd_inject()
1067 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
1072 inject.tool.finished_round = perf_event__drop_oe; in cmd_inject()
1075 ret = symbol__init(&inject.session->header.env); in cmd_inject()
1079 ret = __cmd_inject(&inject); in cmd_inject()
1082 zstd_fini(&(inject.session->zstd_data)); in cmd_inject()
1083 perf_session__delete(inject.session); in cmd_inject()
1085 if (!inject.in_place_update) in cmd_inject()
1086 perf_data__close(&inject.output); in cmd_inject()
1087 free(inject.itrace_synth_opts.vm_tm_corr_args); in cmd_inject()