Lines Matching refs:inject
46 static int output_bytes(struct perf_inject *inject, void *buf, size_t sz) in output_bytes() argument
50 size = perf_data_file__write(&inject->output, buf, sz); in output_bytes()
54 inject->bytes_written += size; in output_bytes()
61 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_synth() local
64 return output_bytes(inject, event, event->header.size); in perf_event__repipe_synth()
86 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_attr() local
94 if (!inject->output.is_pipe) in perf_event__repipe_attr()
102 static int copy_bytes(struct perf_inject *inject, int fd, off_t size) in copy_bytes() argument
112 ret = output_bytes(inject, buf, ssz); in copy_bytes()
126 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_auxtrace() local
130 inject->have_auxtrace = true; in perf_event__repipe_auxtrace()
132 if (!inject->output.is_pipe) { in perf_event__repipe_auxtrace()
135 offset = lseek(inject->output.fd, 0, SEEK_CUR); in perf_event__repipe_auxtrace()
145 ret = output_bytes(inject, event, event->header.size); in perf_event__repipe_auxtrace()
148 ret = copy_bytes(inject, perf_data_file__fd(session->file), in perf_event__repipe_auxtrace()
151 ret = output_bytes(inject, event, in perf_event__repipe_auxtrace()
194 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__drop_aux() local
196 if (!inject->aux_id) in perf_event__drop_aux()
197 inject->aux_id = sample->id; in perf_event__drop_aux()
403 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_process_exit() local
406 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_process_exit()
423 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_switch() local
437 list_add(&ent->node, &inject->samples); in perf_inject__sched_switch()
450 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_stat() local
453 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_stat()
501 static void strip_init(struct perf_inject *inject) in strip_init() argument
503 struct perf_evlist *evlist = inject->session->evlist; in strip_init()
506 inject->tool.context_switch = perf_event__drop; in strip_init()
548 static void strip_fini(struct perf_inject *inject) in strip_fini() argument
550 struct perf_evlist *evlist = inject->session->evlist; in strip_fini()
564 static int __cmd_inject(struct perf_inject *inject) in __cmd_inject() argument
567 struct perf_session *session = inject->session; in __cmd_inject()
568 struct perf_data_file *file_out = &inject->output; in __cmd_inject()
574 if (inject->build_ids || inject->sched_stat || in __cmd_inject()
575 inject->itrace_synth_opts.set) { in __cmd_inject()
576 inject->tool.mmap = perf_event__repipe_mmap; in __cmd_inject()
577 inject->tool.mmap2 = perf_event__repipe_mmap2; in __cmd_inject()
578 inject->tool.fork = perf_event__repipe_fork; in __cmd_inject()
579 inject->tool.tracing_data = perf_event__repipe_tracing_data; in __cmd_inject()
584 if (inject->build_ids) { in __cmd_inject()
585 inject->tool.sample = perf_event__inject_buildid; in __cmd_inject()
586 } else if (inject->sched_stat) { in __cmd_inject()
602 } else if (inject->itrace_synth_opts.set) { in __cmd_inject()
603 session->itrace_synth_opts = &inject->itrace_synth_opts; in __cmd_inject()
604 inject->itrace_synth_opts.inject = true; in __cmd_inject()
605 inject->tool.comm = perf_event__repipe_comm; in __cmd_inject()
606 inject->tool.exit = perf_event__repipe_exit; in __cmd_inject()
607 inject->tool.id_index = perf_event__repipe_id_index; in __cmd_inject()
608 inject->tool.auxtrace_info = perf_event__process_auxtrace_info; in __cmd_inject()
609 inject->tool.auxtrace = perf_event__process_auxtrace; in __cmd_inject()
610 inject->tool.aux = perf_event__drop_aux; in __cmd_inject()
611 inject->tool.itrace_start = perf_event__drop_aux, in __cmd_inject()
612 inject->tool.ordered_events = true; in __cmd_inject()
613 inject->tool.ordering_requires_timestamps = true; in __cmd_inject()
616 if (inject->strip) in __cmd_inject()
617 strip_init(inject); in __cmd_inject()
620 if (!inject->itrace_synth_opts.set) in __cmd_inject()
629 if (inject->build_ids) { in __cmd_inject()
632 if (inject->have_auxtrace) in __cmd_inject()
640 if (inject->itrace_synth_opts.set) { in __cmd_inject()
645 if (inject->itrace_synth_opts.last_branch) in __cmd_inject()
649 inject->aux_id); in __cmd_inject()
656 if (inject->strip) in __cmd_inject()
657 strip_fini(inject); in __cmd_inject()
660 session->header.data_size = inject->bytes_written; in __cmd_inject()
669 struct perf_inject inject = { in cmd_inject() local
695 .samples = LIST_HEAD_INIT(inject.samples), in cmd_inject()
707 OPT_BOOLEAN('b', "build-ids", &inject.build_ids, in cmd_inject()
709 OPT_STRING('i', "input", &inject.input_name, "file", in cmd_inject()
711 OPT_STRING('o', "output", &inject.output.path, "file", in cmd_inject()
713 OPT_BOOLEAN('s', "sched-stat", &inject.sched_stat, in cmd_inject()
721 OPT_CALLBACK_OPTARG(0, "itrace", &inject.itrace_synth_opts, in cmd_inject()
724 OPT_BOOLEAN(0, "strip", &inject.strip, in cmd_inject()
741 if (inject.strip && !inject.itrace_synth_opts.set) { in cmd_inject()
746 if (perf_data_file__open(&inject.output)) { in cmd_inject()
751 inject.tool.ordered_events = inject.sched_stat; in cmd_inject()
753 file.path = inject.input_name; in cmd_inject()
754 inject.session = perf_session__new(&file, true, &inject.tool); in cmd_inject()
755 if (inject.session == NULL) in cmd_inject()
758 ret = symbol__init(&inject.session->header.env); in cmd_inject()
762 ret = __cmd_inject(&inject); in cmd_inject()
765 perf_session__delete(inject.session); in cmd_inject()