Lines Matching refs:inject
64 static int output_bytes(struct perf_inject *inject, void *buf, size_t sz) in output_bytes() argument
68 size = perf_data__write(&inject->output, buf, sz); in output_bytes()
72 inject->bytes_written += size; in output_bytes()
79 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_synth() local
82 return output_bytes(inject, event, event->header.size); in perf_event__repipe_synth()
118 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_attr() local
126 if (!inject->output.is_pipe) in perf_event__repipe_attr()
141 static int copy_bytes(struct perf_inject *inject, int fd, off_t size) in copy_bytes() argument
151 ret = output_bytes(inject, buf, ssz); in copy_bytes()
164 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_auxtrace() local
168 inject->have_auxtrace = true; in perf_event__repipe_auxtrace()
170 if (!inject->output.is_pipe) { in perf_event__repipe_auxtrace()
173 offset = lseek(inject->output.file.fd, 0, SEEK_CUR); in perf_event__repipe_auxtrace()
183 ret = output_bytes(inject, event, event->header.size); in perf_event__repipe_auxtrace()
186 ret = copy_bytes(inject, perf_data__fd(session->data), in perf_event__repipe_auxtrace()
189 ret = output_bytes(inject, event, in perf_event__repipe_auxtrace()
231 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__drop_aux() local
233 if (!inject->aux_id) in perf_event__drop_aux()
234 inject->aux_id = sample->id; in perf_event__drop_aux()
240 perf_inject__cut_auxtrace_sample(struct perf_inject *inject, in perf_inject__cut_auxtrace_sample() argument
246 union perf_event *ev = (union perf_event *)inject->event_copy; in perf_inject__cut_auxtrace_sample()
273 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_sample() local
283 if (inject->itrace_synth_opts.set && sample->aux_sample.size) in perf_event__repipe_sample()
284 event = perf_inject__cut_auxtrace_sample(inject, event, sample); in perf_event__repipe_sample()
308 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap() local
315 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap()
320 inject->bytes_written += n; in perf_event__jit_repipe_mmap()
408 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap2() local
415 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap2()
420 inject->bytes_written += n; in perf_event__jit_repipe_mmap2()
592 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_process_exit() local
595 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_process_exit()
612 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_switch() local
626 list_add(&ent->node, &inject->samples); in perf_inject__sched_switch()
639 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_stat() local
642 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_stat()
688 static void strip_init(struct perf_inject *inject) in strip_init() argument
690 struct evlist *evlist = inject->session->evlist; in strip_init()
693 inject->tool.context_switch = perf_event__drop; in strip_init()
699 static int __cmd_inject(struct perf_inject *inject) in __cmd_inject() argument
702 struct perf_session *session = inject->session; in __cmd_inject()
703 struct perf_data *data_out = &inject->output; in __cmd_inject()
709 if (inject->build_ids || inject->sched_stat || in __cmd_inject()
710 inject->itrace_synth_opts.set || inject->build_id_all) { in __cmd_inject()
711 inject->tool.mmap = perf_event__repipe_mmap; in __cmd_inject()
712 inject->tool.mmap2 = perf_event__repipe_mmap2; in __cmd_inject()
713 inject->tool.fork = perf_event__repipe_fork; in __cmd_inject()
714 inject->tool.tracing_data = perf_event__repipe_tracing_data; in __cmd_inject()
719 if (inject->build_id_all) { in __cmd_inject()
720 inject->tool.mmap = perf_event__repipe_buildid_mmap; in __cmd_inject()
721 inject->tool.mmap2 = perf_event__repipe_buildid_mmap2; in __cmd_inject()
722 } else if (inject->build_ids) { in __cmd_inject()
723 inject->tool.sample = perf_event__inject_buildid; in __cmd_inject()
724 } else if (inject->sched_stat) { in __cmd_inject()
740 } else if (inject->itrace_synth_opts.set) { in __cmd_inject()
741 session->itrace_synth_opts = &inject->itrace_synth_opts; in __cmd_inject()
742 inject->itrace_synth_opts.inject = true; in __cmd_inject()
743 inject->tool.comm = perf_event__repipe_comm; in __cmd_inject()
744 inject->tool.namespaces = perf_event__repipe_namespaces; in __cmd_inject()
745 inject->tool.exit = perf_event__repipe_exit; in __cmd_inject()
746 inject->tool.id_index = perf_event__process_id_index; in __cmd_inject()
747 inject->tool.auxtrace_info = perf_event__process_auxtrace_info; in __cmd_inject()
748 inject->tool.auxtrace = perf_event__process_auxtrace; in __cmd_inject()
749 inject->tool.aux = perf_event__drop_aux; in __cmd_inject()
750 inject->tool.itrace_start = perf_event__drop_aux, in __cmd_inject()
751 inject->tool.ordered_events = true; in __cmd_inject()
752 inject->tool.ordering_requires_timestamps = true; in __cmd_inject()
755 if (inject->strip) in __cmd_inject()
756 strip_init(inject); in __cmd_inject()
759 if (!inject->itrace_synth_opts.set) in __cmd_inject()
770 if (inject->build_ids) in __cmd_inject()
778 inject->have_auxtrace && !inject->itrace_synth_opts.set) in __cmd_inject()
784 if (inject->itrace_synth_opts.set) { in __cmd_inject()
787 if (inject->itrace_synth_opts.last_branch || in __cmd_inject()
788 inject->itrace_synth_opts.add_last_branch) in __cmd_inject()
793 session->header.data_size = inject->bytes_written; in __cmd_inject()
802 struct perf_inject inject = { in cmd_inject() local
842 .samples = LIST_HEAD_INIT(inject.samples), in cmd_inject()
854 OPT_BOOLEAN('b', "build-ids", &inject.build_ids, in cmd_inject()
856 OPT_BOOLEAN(0, "buildid-all", &inject.build_id_all, in cmd_inject()
858 OPT_STRING('i', "input", &inject.input_name, "file", in cmd_inject()
860 OPT_STRING('o', "output", &inject.output.path, "file", in cmd_inject()
862 OPT_BOOLEAN('s', "sched-stat", &inject.sched_stat, in cmd_inject()
866 OPT_BOOLEAN('j', "jit", &inject.jit_mode, "merge jitdump files into perf.data file"), in cmd_inject()
873 OPT_CALLBACK_OPTARG(0, "itrace", &inject.itrace_synth_opts, in cmd_inject()
877 OPT_BOOLEAN(0, "strip", &inject.strip, in cmd_inject()
896 if (inject.strip && !inject.itrace_synth_opts.set) { in cmd_inject()
901 if (perf_data__open(&inject.output)) { in cmd_inject()
906 data.path = inject.input_name; in cmd_inject()
907 inject.session = perf_session__new(&data, true, &inject.tool); in cmd_inject()
908 if (IS_ERR(inject.session)) in cmd_inject()
909 return PTR_ERR(inject.session); in cmd_inject()
911 if (zstd_init(&(inject.session->zstd_data), 0) < 0) in cmd_inject()
914 if (inject.build_ids && !inject.build_id_all) { in cmd_inject()
921 inject.tool.ordered_events = true; in cmd_inject()
922 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
925 if (inject.sched_stat) { in cmd_inject()
926 inject.tool.ordered_events = true; in cmd_inject()
930 if (inject.jit_mode) { in cmd_inject()
931 inject.tool.mmap2 = perf_event__jit_repipe_mmap2; in cmd_inject()
932 inject.tool.mmap = perf_event__jit_repipe_mmap; in cmd_inject()
933 inject.tool.ordered_events = true; in cmd_inject()
934 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
939 inject.tool.finished_round = perf_event__drop_oe; in cmd_inject()
942 ret = symbol__init(&inject.session->header.env); in cmd_inject()
946 ret = __cmd_inject(&inject); in cmd_inject()
949 zstd_fini(&(inject.session->zstd_data)); in cmd_inject()
950 perf_session__delete(inject.session); in cmd_inject()