Lines Matching refs:inject

56 static int output_bytes(struct perf_inject *inject, void *buf, size_t sz)  in output_bytes()  argument
60 size = perf_data__write(&inject->output, buf, sz); in output_bytes()
64 inject->bytes_written += size; in output_bytes()
71 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_synth() local
74 return output_bytes(inject, event, event->header.size); in perf_event__repipe_synth()
103 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_attr() local
111 if (!inject->output.is_pipe) in perf_event__repipe_attr()
119 static int copy_bytes(struct perf_inject *inject, int fd, off_t size) in copy_bytes() argument
129 ret = output_bytes(inject, buf, ssz); in copy_bytes()
142 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_auxtrace() local
146 inject->have_auxtrace = true; in perf_event__repipe_auxtrace()
148 if (!inject->output.is_pipe) { in perf_event__repipe_auxtrace()
151 offset = lseek(inject->output.file.fd, 0, SEEK_CUR); in perf_event__repipe_auxtrace()
161 ret = output_bytes(inject, event, event->header.size); in perf_event__repipe_auxtrace()
164 ret = copy_bytes(inject, perf_data__fd(session->data), in perf_event__repipe_auxtrace()
167 ret = output_bytes(inject, event, in perf_event__repipe_auxtrace()
209 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__drop_aux() local
211 if (!inject->aux_id) in perf_event__drop_aux()
212 inject->aux_id = sample->id; in perf_event__drop_aux()
258 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap() local
265 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap()
270 inject->bytes_written += n; in perf_event__jit_repipe_mmap()
296 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap2() local
303 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap2()
308 inject->bytes_written += n; in perf_event__jit_repipe_mmap2()
473 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_process_exit() local
476 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_process_exit()
493 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_switch() local
507 list_add(&ent->node, &inject->samples); in perf_inject__sched_switch()
520 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_stat() local
523 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_stat()
570 static void strip_init(struct perf_inject *inject) in strip_init() argument
572 struct evlist *evlist = inject->session->evlist; in strip_init()
575 inject->tool.context_switch = perf_event__drop; in strip_init()
617 static void strip_fini(struct perf_inject *inject) in strip_fini() argument
619 struct evlist *evlist = inject->session->evlist; in strip_fini()
633 static int __cmd_inject(struct perf_inject *inject) in __cmd_inject() argument
636 struct perf_session *session = inject->session; in __cmd_inject()
637 struct perf_data *data_out = &inject->output; in __cmd_inject()
643 if (inject->build_ids || inject->sched_stat || in __cmd_inject()
644 inject->itrace_synth_opts.set) { in __cmd_inject()
645 inject->tool.mmap = perf_event__repipe_mmap; in __cmd_inject()
646 inject->tool.mmap2 = perf_event__repipe_mmap2; in __cmd_inject()
647 inject->tool.fork = perf_event__repipe_fork; in __cmd_inject()
648 inject->tool.tracing_data = perf_event__repipe_tracing_data; in __cmd_inject()
653 if (inject->build_ids) { in __cmd_inject()
654 inject->tool.sample = perf_event__inject_buildid; in __cmd_inject()
655 } else if (inject->sched_stat) { in __cmd_inject()
671 } else if (inject->itrace_synth_opts.set) { in __cmd_inject()
672 session->itrace_synth_opts = &inject->itrace_synth_opts; in __cmd_inject()
673 inject->itrace_synth_opts.inject = true; in __cmd_inject()
674 inject->tool.comm = perf_event__repipe_comm; in __cmd_inject()
675 inject->tool.namespaces = perf_event__repipe_namespaces; in __cmd_inject()
676 inject->tool.exit = perf_event__repipe_exit; in __cmd_inject()
677 inject->tool.id_index = perf_event__repipe_id_index; in __cmd_inject()
678 inject->tool.auxtrace_info = perf_event__process_auxtrace_info; in __cmd_inject()
679 inject->tool.auxtrace = perf_event__process_auxtrace; in __cmd_inject()
680 inject->tool.aux = perf_event__drop_aux; in __cmd_inject()
681 inject->tool.itrace_start = perf_event__drop_aux, in __cmd_inject()
682 inject->tool.ordered_events = true; in __cmd_inject()
683 inject->tool.ordering_requires_timestamps = true; in __cmd_inject()
686 if (inject->strip) in __cmd_inject()
687 strip_init(inject); in __cmd_inject()
690 if (!inject->itrace_synth_opts.set) in __cmd_inject()
701 if (inject->build_ids) in __cmd_inject()
709 inject->have_auxtrace && !inject->itrace_synth_opts.set) in __cmd_inject()
716 if (inject->itrace_synth_opts.set) { in __cmd_inject()
721 if (inject->itrace_synth_opts.last_branch) in __cmd_inject()
725 inject->aux_id); in __cmd_inject()
732 if (inject->strip) in __cmd_inject()
733 strip_fini(inject); in __cmd_inject()
736 session->header.data_size = inject->bytes_written; in __cmd_inject()
745 struct perf_inject inject = { in cmd_inject() local
773 .samples = LIST_HEAD_INIT(inject.samples), in cmd_inject()
785 OPT_BOOLEAN('b', "build-ids", &inject.build_ids, in cmd_inject()
787 OPT_STRING('i', "input", &inject.input_name, "file", in cmd_inject()
789 OPT_STRING('o', "output", &inject.output.path, "file", in cmd_inject()
791 OPT_BOOLEAN('s', "sched-stat", &inject.sched_stat, in cmd_inject()
795 OPT_BOOLEAN('j', "jit", &inject.jit_mode, "merge jitdump files into perf.data file"), in cmd_inject()
802 OPT_CALLBACK_OPTARG(0, "itrace", &inject.itrace_synth_opts, in cmd_inject()
806 OPT_BOOLEAN(0, "strip", &inject.strip, in cmd_inject()
825 if (inject.strip && !inject.itrace_synth_opts.set) { in cmd_inject()
830 if (perf_data__open(&inject.output)) { in cmd_inject()
835 inject.tool.ordered_events = inject.sched_stat; in cmd_inject()
837 data.path = inject.input_name; in cmd_inject()
838 inject.session = perf_session__new(&data, true, &inject.tool); in cmd_inject()
839 if (IS_ERR(inject.session)) in cmd_inject()
840 return PTR_ERR(inject.session); in cmd_inject()
842 if (zstd_init(&(inject.session->zstd_data), 0) < 0) in cmd_inject()
845 if (inject.build_ids) { in cmd_inject()
852 inject.tool.ordered_events = true; in cmd_inject()
853 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
856 if (inject.jit_mode) { in cmd_inject()
857 inject.tool.mmap2 = perf_event__jit_repipe_mmap2; in cmd_inject()
858 inject.tool.mmap = perf_event__jit_repipe_mmap; in cmd_inject()
859 inject.tool.ordered_events = true; in cmd_inject()
860 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
865 inject.tool.finished_round = perf_event__drop_oe; in cmd_inject()
868 ret = symbol__init(&inject.session->header.env); in cmd_inject()
872 ret = __cmd_inject(&inject); in cmd_inject()
875 zstd_fini(&(inject.session->zstd_data)); in cmd_inject()
876 perf_session__delete(inject.session); in cmd_inject()