Lines Matching refs:jd

77 jit_emit_elf(struct jit_buf_desc *jd,  in jit_emit_elf()  argument
95 nsinfo__mountns_enter(jd->nsi, &nsc); in jit_emit_elf()
110 nsinfo__mountns_enter(jd->nsi, &nsc); in jit_emit_elf()
119 jit_close(struct jit_buf_desc *jd) in jit_close() argument
121 if (!(jd && jd->in)) in jit_close()
123 funlockfile(jd->in); in jit_close()
124 fclose(jd->in); in jit_close()
125 jd->in = NULL; in jit_close()
144 jit_open(struct jit_buf_desc *jd, const char *name) in jit_open() argument
153 nsinfo__mountns_enter(jd->nsi, &nsc); in jit_open()
154 jd->in = fopen(name, "r"); in jit_open()
156 if (!jd->in) in jit_open()
168 flockfile(jd->in); in jit_open()
170 ret = fread(buf, sizeof(header), 1, jd->in); in jit_open()
179 jd->needs_bswap = true; in jit_open()
182 if (jd->needs_bswap) { in jit_open()
191 jd->use_arch_timestamp = header.flags & JITDUMP_FLAGS_ARCH_TIMESTAMP; in jit_open()
200 jd->use_arch_timestamp); in jit_open()
214 if (jd->use_arch_timestamp && !jd->session->time_conv.time_mult) { in jit_open()
222 if (!jd->use_arch_timestamp && jit_validate_events(jd->session)) { in jit_open()
236 ret = fread(buf, bs - bsz, 1, jd->in); in jit_open()
243 strcpy(jd->dir, name); in jit_open()
244 dirname(jd->dir); in jit_open()
248 funlockfile(jd->in); in jit_open()
249 fclose(jd->in); in jit_open()
254 jit_get_next_entry(struct jit_buf_desc *jd) in jit_get_next_entry() argument
262 if (!(jd && jd->in)) in jit_get_next_entry()
265 if (jd->buf == NULL) { in jit_get_next_entry()
270 jd->buf = malloc(sz); in jit_get_next_entry()
271 if (jd->buf == NULL) in jit_get_next_entry()
274 jd->bufsize = sz; in jit_get_next_entry()
277 prefix = jd->buf; in jit_get_next_entry()
282 ret = fread(prefix, sizeof(*prefix), 1, jd->in); in jit_get_next_entry()
286 if (jd->needs_bswap) { in jit_get_next_entry()
301 if (bs > jd->bufsize) { in jit_get_next_entry()
303 n = realloc(jd->buf, bs); in jit_get_next_entry()
306 jd->buf = n; in jit_get_next_entry()
307 jd->bufsize = bs; in jit_get_next_entry()
310 addr = ((void *)jd->buf) + sizeof(*prefix); in jit_get_next_entry()
312 ret = fread(addr, bs - sizeof(*prefix), 1, jd->in); in jit_get_next_entry()
316 jr = (union jr_entry *)jd->buf; in jit_get_next_entry()
320 if (jd->needs_bswap) { in jit_get_next_entry()
332 if (jd->needs_bswap) { in jit_get_next_entry()
341 if (jd->needs_bswap) { in jit_get_next_entry()
349 jd->code_load_count++; in jit_get_next_entry()
352 if (jd->needs_bswap) { in jit_get_next_entry()
371 jit_inject_event(struct jit_buf_desc *jd, union perf_event *event) in jit_inject_event() argument
375 size = perf_data__write(jd->output, event, event->header.size); in jit_inject_event()
379 jd->bytes_written += size; in jit_inject_event()
383 static pid_t jr_entry_pid(struct jit_buf_desc *jd, union jr_entry *jr) in jr_entry_pid() argument
385 if (jd->nsi && jd->nsi->in_pidns) in jr_entry_pid()
386 return jd->nsi->tgid; in jr_entry_pid()
390 static pid_t jr_entry_tid(struct jit_buf_desc *jd, union jr_entry *jr) in jr_entry_tid() argument
392 if (jd->nsi && jd->nsi->in_pidns) in jr_entry_tid()
393 return jd->nsi->pid; in jr_entry_tid()
397 static uint64_t convert_timestamp(struct jit_buf_desc *jd, uint64_t timestamp) in convert_timestamp() argument
400 struct perf_record_time_conv *time_conv = &jd->session->time_conv; in convert_timestamp()
402 if (!jd->use_arch_timestamp) in convert_timestamp()
428 static int jit_repipe_code_load(struct jit_buf_desc *jd, union jr_entry *jr) in jit_repipe_code_load() argument
432 struct perf_tool *tool = jd->session->tool; in jit_repipe_code_load()
449 pid = jr_entry_pid(jd, jr); in jit_repipe_code_load()
450 tid = jr_entry_tid(jd, jr); in jit_repipe_code_load()
452 usize = jd->unwinding_mapped_size; in jit_repipe_code_load()
457 idr_size = jd->machine->id_hdr_size; in jit_repipe_code_load()
465 jd->dir, in jit_repipe_code_load()
473 …ret = jit_emit_elf(jd, filename, sym, addr, (const void *)uaddr, csize, jd->debug_data, jd->nr_deb… in jit_repipe_code_load()
474 jd->unwinding_data, jd->eh_frame_hdr_size, jd->unwinding_size); in jit_repipe_code_load()
476 if (jd->debug_data && jd->nr_debug_entries) { in jit_repipe_code_load()
477 zfree(&jd->debug_data); in jit_repipe_code_load()
478 jd->nr_debug_entries = 0; in jit_repipe_code_load()
481 if (jd->unwinding_data && jd->eh_frame_hdr_size) { in jit_repipe_code_load()
482 zfree(&jd->unwinding_data); in jit_repipe_code_load()
483 jd->eh_frame_hdr_size = 0; in jit_repipe_code_load()
484 jd->unwinding_mapped_size = 0; in jit_repipe_code_load()
485 jd->unwinding_size = 0; in jit_repipe_code_load()
492 if (nsinfo__stat(filename, &st, jd->nsi)) in jit_repipe_code_load()
513 if (jd->sample_type & PERF_SAMPLE_TID) { in jit_repipe_code_load()
517 if (jd->sample_type & PERF_SAMPLE_TIME) in jit_repipe_code_load()
518 id->time = convert_timestamp(jd, jr->load.p.timestamp); in jit_repipe_code_load()
531 ret = perf_event__process_mmap2(tool, event, &sample, jd->machine); in jit_repipe_code_load()
535 ret = jit_inject_event(jd, event); in jit_repipe_code_load()
540 build_id__mark_dso_hit(tool, event, &sample, NULL, jd->machine); in jit_repipe_code_load()
545 static int jit_repipe_code_move(struct jit_buf_desc *jd, union jr_entry *jr) in jit_repipe_code_move() argument
549 struct perf_tool *tool = jd->session->tool; in jit_repipe_code_move()
563 pid = jr_entry_pid(jd, jr); in jit_repipe_code_move()
564 tid = jr_entry_tid(jd, jr); in jit_repipe_code_move()
565 usize = jd->unwinding_mapped_size; in jit_repipe_code_move()
566 idr_size = jd->machine->id_hdr_size; in jit_repipe_code_move()
577 jd->dir, in jit_repipe_code_move()
583 if (nsinfo__stat(filename, &st, jd->nsi)) in jit_repipe_code_move()
606 if (jd->sample_type & PERF_SAMPLE_TID) { in jit_repipe_code_move()
610 if (jd->sample_type & PERF_SAMPLE_TIME) in jit_repipe_code_move()
611 id->time = convert_timestamp(jd, jr->load.p.timestamp); in jit_repipe_code_move()
624 ret = perf_event__process_mmap2(tool, event, &sample, jd->machine); in jit_repipe_code_move()
628 ret = jit_inject_event(jd, event); in jit_repipe_code_move()
630 build_id__mark_dso_hit(tool, event, &sample, NULL, jd->machine); in jit_repipe_code_move()
635 static int jit_repipe_debug_info(struct jit_buf_desc *jd, union jr_entry *jr) in jit_repipe_debug_info() argument
640 if (!(jd && jr)) in jit_repipe_debug_info()
650 jd->debug_data = data; in jit_repipe_debug_info()
656 jd->nr_debug_entries = jr->info.nr_entry; in jit_repipe_debug_info()
662 jit_repipe_unwinding_info(struct jit_buf_desc *jd, union jr_entry *jr) in jit_repipe_unwinding_info() argument
667 if (!(jd && jr)) in jit_repipe_unwinding_info()
678 jd->eh_frame_hdr_size = jr->unwinding.eh_frame_hdr_size; in jit_repipe_unwinding_info()
679 jd->unwinding_size = jr->unwinding.unwinding_size; in jit_repipe_unwinding_info()
680 jd->unwinding_mapped_size = jr->unwinding.mapped_size; in jit_repipe_unwinding_info()
681 jd->unwinding_data = unwinding_data; in jit_repipe_unwinding_info()
687 jit_process_dump(struct jit_buf_desc *jd) in jit_process_dump() argument
692 while ((jr = jit_get_next_entry(jd))) { in jit_process_dump()
695 ret = jit_repipe_code_load(jd, jr); in jit_process_dump()
698 ret = jit_repipe_code_move(jd, jr); in jit_process_dump()
701 ret = jit_repipe_debug_info(jd, jr); in jit_process_dump()
704 ret = jit_repipe_unwinding_info(jd, jr); in jit_process_dump()
715 jit_inject(struct jit_buf_desc *jd, char *path) in jit_inject() argument
722 ret = jit_open(jd, path); in jit_inject()
726 ret = jit_process_dump(jd); in jit_inject()
728 jit_close(jd); in jit_inject()
830 struct jit_buf_desc jd; in jit_process() local
855 memset(&jd, 0, sizeof(jd)); in jit_process()
857 jd.session = session; in jit_process()
858 jd.output = output; in jit_process()
859 jd.machine = machine; in jit_process()
860 jd.nsi = nsi; in jit_process()
867 jd.sample_type = first->core.attr.sample_type; in jit_process()
871 ret = jit_inject(&jd, filename); in jit_process()
874 *nbytes = jd.bytes_written; in jit_process()
878 nsinfo__put(jd.nsi); in jit_process()