• Home
  • Raw
  • Download

Lines Matching full:inject

3  * builtin-inject.c
5 * Builtin inject command: Examine the live mode (stdin) event stream
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
313 * if jit marker, then inject jit mmaps and generate ELF images in perf_event__jit_repipe_mmap()
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()
409 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_event__jit_repipe_mmap2() local
414 * if jit marker, then inject jit mmaps and generate ELF images in perf_event__jit_repipe_mmap2()
416 ret = jit_process(inject->session, &inject->output, machine, in perf_event__jit_repipe_mmap2()
421 inject->bytes_written += n; in perf_event__jit_repipe_mmap2()
593 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_process_exit() local
596 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_process_exit()
613 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_switch() local
627 list_add(&ent->node, &inject->samples); in perf_inject__sched_switch()
640 struct perf_inject *inject = container_of(tool, struct perf_inject, tool); in perf_inject__sched_stat() local
643 list_for_each_entry(ent, &inject->samples, node) { in perf_inject__sched_stat()
689 static void strip_init(struct perf_inject *inject) in strip_init() argument
691 struct evlist *evlist = inject->session->evlist; in strip_init()
694 inject->tool.context_switch = perf_event__drop; in strip_init()
700 static int __cmd_inject(struct perf_inject *inject) in __cmd_inject() argument
703 struct perf_session *session = inject->session; in __cmd_inject()
704 struct perf_data *data_out = &inject->output; in __cmd_inject()
710 if (inject->build_ids || inject->sched_stat || in __cmd_inject()
711 inject->itrace_synth_opts.set || inject->build_id_all) { in __cmd_inject()
712 inject->tool.mmap = perf_event__repipe_mmap; in __cmd_inject()
713 inject->tool.mmap2 = perf_event__repipe_mmap2; in __cmd_inject()
714 inject->tool.fork = perf_event__repipe_fork; in __cmd_inject()
715 inject->tool.tracing_data = perf_event__repipe_tracing_data; in __cmd_inject()
720 if (inject->build_id_all) { in __cmd_inject()
721 inject->tool.mmap = perf_event__repipe_buildid_mmap; in __cmd_inject()
722 inject->tool.mmap2 = perf_event__repipe_buildid_mmap2; in __cmd_inject()
723 } else if (inject->build_ids) { in __cmd_inject()
724 inject->tool.sample = perf_event__inject_buildid; in __cmd_inject()
725 } else if (inject->sched_stat) { in __cmd_inject()
741 } else if (inject->itrace_synth_opts.set) { in __cmd_inject()
742 session->itrace_synth_opts = &inject->itrace_synth_opts; in __cmd_inject()
743 inject->itrace_synth_opts.inject = true; in __cmd_inject()
744 inject->tool.comm = perf_event__repipe_comm; in __cmd_inject()
745 inject->tool.namespaces = perf_event__repipe_namespaces; in __cmd_inject()
746 inject->tool.exit = perf_event__repipe_exit; in __cmd_inject()
747 inject->tool.id_index = perf_event__process_id_index; in __cmd_inject()
748 inject->tool.auxtrace_info = perf_event__process_auxtrace_info; in __cmd_inject()
749 inject->tool.auxtrace = perf_event__process_auxtrace; in __cmd_inject()
750 inject->tool.aux = perf_event__drop_aux; in __cmd_inject()
751 inject->tool.itrace_start = perf_event__drop_aux, in __cmd_inject()
752 inject->tool.ordered_events = true; in __cmd_inject()
753 inject->tool.ordering_requires_timestamps = true; in __cmd_inject()
756 if (inject->strip) in __cmd_inject()
757 strip_init(inject); in __cmd_inject()
760 if (!inject->itrace_synth_opts.set) in __cmd_inject()
771 if (inject->build_ids) in __cmd_inject()
779 inject->have_auxtrace && !inject->itrace_synth_opts.set) in __cmd_inject()
785 if (inject->itrace_synth_opts.set) { in __cmd_inject()
788 if (inject->itrace_synth_opts.last_branch || in __cmd_inject()
789 inject->itrace_synth_opts.add_last_branch) in __cmd_inject()
794 session->header.data_size = inject->bytes_written; in __cmd_inject()
803 struct perf_inject inject = { in cmd_inject() local
843 .samples = LIST_HEAD_INIT(inject.samples), in cmd_inject()
855 OPT_BOOLEAN('b', "build-ids", &inject.build_ids, in cmd_inject()
856 "Inject build-ids into the output stream"), in cmd_inject()
857 OPT_BOOLEAN(0, "buildid-all", &inject.build_id_all, in cmd_inject()
858 "Inject build-ids of all DSOs into the output stream"), in cmd_inject()
859 OPT_STRING('i', "input", &inject.input_name, "file", in cmd_inject()
861 OPT_STRING('o', "output", &inject.output.path, "file", in cmd_inject()
863 OPT_BOOLEAN('s', "sched-stat", &inject.sched_stat, in cmd_inject()
867 OPT_BOOLEAN('j', "jit", &inject.jit_mode, "merge jitdump files into perf.data file"), in cmd_inject()
874 OPT_CALLBACK_OPTARG(0, "itrace", &inject.itrace_synth_opts, in cmd_inject()
878 OPT_BOOLEAN(0, "strip", &inject.strip, in cmd_inject()
883 "perf inject [<options>]", in cmd_inject()
897 if (inject.strip && !inject.itrace_synth_opts.set) { in cmd_inject()
902 if (perf_data__open(&inject.output)) { in cmd_inject()
907 data.path = inject.input_name; in cmd_inject()
908 inject.session = perf_session__new(&data, inject.output.is_pipe, &inject.tool); in cmd_inject()
909 if (IS_ERR(inject.session)) { in cmd_inject()
910 ret = PTR_ERR(inject.session); in cmd_inject()
914 if (zstd_init(&(inject.session->zstd_data), 0) < 0) in cmd_inject()
917 if (inject.build_ids && !inject.build_id_all) { in cmd_inject()
922 * inject the jit mmaps at the same time for now. in cmd_inject()
924 inject.tool.ordered_events = true; in cmd_inject()
925 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
928 if (inject.sched_stat) { in cmd_inject()
929 inject.tool.ordered_events = true; in cmd_inject()
933 if (inject.jit_mode) { in cmd_inject()
934 inject.tool.mmap2 = perf_event__jit_repipe_mmap2; in cmd_inject()
935 inject.tool.mmap = perf_event__jit_repipe_mmap; in cmd_inject()
936 inject.tool.ordered_events = true; in cmd_inject()
937 inject.tool.ordering_requires_timestamps = true; in cmd_inject()
942 inject.tool.finished_round = perf_event__drop_oe; in cmd_inject()
945 ret = symbol__init(&inject.session->header.env); in cmd_inject()
949 ret = __cmd_inject(&inject); in cmd_inject()
952 zstd_fini(&(inject.session->zstd_data)); in cmd_inject()
953 perf_session__delete(inject.session); in cmd_inject()
955 perf_data__close(&inject.output); in cmd_inject()