Lines Matching +full:event +full:-
8 #include <perf/event.h>
18 #include "event.h"
27 #include "time-utils.h"
36 #include "bpf-event.h"
111 type == 'A') || strcmp(name, args->name)) in find_func_symbol_cb()
114 args->start = start; in find_func_symbol_cb()
123 if (strcmp(name, args->name)) in find_any_symbol_cb()
126 args->start = start; in find_any_symbol_cb()
136 return -1; in kallsyms__get_function_start()
148 return -1; in kallsyms__get_symbol_start()
155 struct perf_record_stat_config *event) in perf_event__read_stat_config() argument
159 for (i = 0; i < event->nr; i++) { in perf_event__read_stat_config()
161 switch (event->data[i].tag) { in perf_event__read_stat_config()
164 config->__val = event->data[i].val; \ in perf_event__read_stat_config()
174 event->data[i].tag); in perf_event__read_stat_config()
179 size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp) in perf_event__fprintf_comm() argument
183 if (event->header.misc & PERF_RECORD_MISC_COMM_EXEC) in perf_event__fprintf_comm()
188 return fprintf(fp, "%s: %s:%d/%d\n", s, event->comm.comm, event->comm.pid, event->comm.tid); in perf_event__fprintf_comm()
191 size_t perf_event__fprintf_namespaces(union perf_event *event, FILE *fp) in perf_event__fprintf_namespaces() argument
197 ns_link_info = event->namespaces.link_info; in perf_event__fprintf_namespaces()
198 nr_namespaces = event->namespaces.nr_namespaces; in perf_event__fprintf_namespaces()
200 ret += fprintf(fp, " %d/%d - nr_namespaces: %u\n\t\t[", in perf_event__fprintf_namespaces()
201 event->namespaces.pid, in perf_event__fprintf_namespaces()
202 event->namespaces.tid, in perf_event__fprintf_namespaces()
218 size_t perf_event__fprintf_cgroup(union perf_event *event, FILE *fp) in perf_event__fprintf_cgroup() argument
221 event->cgroup.id, event->cgroup.path); in perf_event__fprintf_cgroup()
225 union perf_event *event, in perf_event__process_comm() argument
229 return machine__process_comm_event(machine, event, sample); in perf_event__process_comm()
233 union perf_event *event, in perf_event__process_namespaces() argument
237 return machine__process_namespaces_event(machine, event, sample); in perf_event__process_namespaces()
241 union perf_event *event, in perf_event__process_cgroup() argument
245 return machine__process_cgroup_event(machine, event, sample); in perf_event__process_cgroup()
249 union perf_event *event, in perf_event__process_lost() argument
253 return machine__process_lost_event(machine, event, sample); in perf_event__process_lost()
257 union perf_event *event, in perf_event__process_aux() argument
261 return machine__process_aux_event(machine, event); in perf_event__process_aux()
265 union perf_event *event, in perf_event__process_itrace_start() argument
269 return machine__process_itrace_start_event(machine, event); in perf_event__process_itrace_start()
273 union perf_event *event, in perf_event__process_aux_output_hw_id() argument
277 return machine__process_aux_output_hw_id_event(machine, event); in perf_event__process_aux_output_hw_id()
281 union perf_event *event, in perf_event__process_lost_samples() argument
285 return machine__process_lost_samples_event(machine, event, sample); in perf_event__process_lost_samples()
289 union perf_event *event, in perf_event__process_switch() argument
293 return machine__process_switch_event(machine, event); in perf_event__process_switch()
297 union perf_event *event, in perf_event__process_ksymbol() argument
301 return machine__process_ksymbol(machine, event, sample); in perf_event__process_ksymbol()
305 union perf_event *event, in perf_event__process_bpf() argument
309 return machine__process_bpf(machine, event, sample); in perf_event__process_bpf()
313 union perf_event *event, in perf_event__process_text_poke() argument
317 return machine__process_text_poke(machine, event, sample); in perf_event__process_text_poke()
320 size_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp) in perf_event__fprintf_mmap() argument
323 event->mmap.pid, event->mmap.tid, event->mmap.start, in perf_event__fprintf_mmap()
324 event->mmap.len, event->mmap.pgoff, in perf_event__fprintf_mmap()
325 (event->header.misc & PERF_RECORD_MISC_MMAP_DATA) ? 'r' : 'x', in perf_event__fprintf_mmap()
326 event->mmap.filename); in perf_event__fprintf_mmap()
329 size_t perf_event__fprintf_mmap2(union perf_event *event, FILE *fp) in perf_event__fprintf_mmap2() argument
331 if (event->header.misc & PERF_RECORD_MISC_MMAP_BUILD_ID) { in perf_event__fprintf_mmap2()
335 build_id__init(&bid, event->mmap2.build_id, in perf_event__fprintf_mmap2()
336 event->mmap2.build_id_size); in perf_event__fprintf_mmap2()
341 event->mmap2.pid, event->mmap2.tid, event->mmap2.start, in perf_event__fprintf_mmap2()
342 event->mmap2.len, event->mmap2.pgoff, sbuild_id, in perf_event__fprintf_mmap2()
343 (event->mmap2.prot & PROT_READ) ? 'r' : '-', in perf_event__fprintf_mmap2()
344 (event->mmap2.prot & PROT_WRITE) ? 'w' : '-', in perf_event__fprintf_mmap2()
345 (event->mmap2.prot & PROT_EXEC) ? 'x' : '-', in perf_event__fprintf_mmap2()
346 (event->mmap2.flags & MAP_SHARED) ? 's' : 'p', in perf_event__fprintf_mmap2()
347 event->mmap2.filename); in perf_event__fprintf_mmap2()
351 event->mmap2.pid, event->mmap2.tid, event->mmap2.start, in perf_event__fprintf_mmap2()
352 event->mmap2.len, event->mmap2.pgoff, event->mmap2.maj, in perf_event__fprintf_mmap2()
353 event->mmap2.min, event->mmap2.ino, in perf_event__fprintf_mmap2()
354 event->mmap2.ino_generation, in perf_event__fprintf_mmap2()
355 (event->mmap2.prot & PROT_READ) ? 'r' : '-', in perf_event__fprintf_mmap2()
356 (event->mmap2.prot & PROT_WRITE) ? 'w' : '-', in perf_event__fprintf_mmap2()
357 (event->mmap2.prot & PROT_EXEC) ? 'x' : '-', in perf_event__fprintf_mmap2()
358 (event->mmap2.flags & MAP_SHARED) ? 's' : 'p', in perf_event__fprintf_mmap2()
359 event->mmap2.filename); in perf_event__fprintf_mmap2()
363 size_t perf_event__fprintf_thread_map(union perf_event *event, FILE *fp) in perf_event__fprintf_thread_map() argument
365 struct perf_thread_map *threads = thread_map__new_event(&event->thread_map); in perf_event__fprintf_thread_map()
373 ret += fprintf(fp, "failed to get threads from event\n"); in perf_event__fprintf_thread_map()
379 size_t perf_event__fprintf_cpu_map(union perf_event *event, FILE *fp) in perf_event__fprintf_cpu_map() argument
381 struct perf_cpu_map *cpus = cpu_map__new_data(&event->cpu_map.data); in perf_event__fprintf_cpu_map()
389 ret += fprintf(fp, "failed to get cpumap from event\n"); in perf_event__fprintf_cpu_map()
396 union perf_event *event, in perf_event__process_mmap() argument
400 return machine__process_mmap_event(machine, event, sample); in perf_event__process_mmap()
404 union perf_event *event, in perf_event__process_mmap2() argument
408 return machine__process_mmap2_event(machine, event, sample); in perf_event__process_mmap2()
411 size_t perf_event__fprintf_task(union perf_event *event, FILE *fp) in perf_event__fprintf_task() argument
414 event->fork.pid, event->fork.tid, in perf_event__fprintf_task()
415 event->fork.ppid, event->fork.ptid); in perf_event__fprintf_task()
419 union perf_event *event, in perf_event__process_fork() argument
423 return machine__process_fork_event(machine, event, sample); in perf_event__process_fork()
427 union perf_event *event, in perf_event__process_exit() argument
431 return machine__process_exit_event(machine, event, sample); in perf_event__process_exit()
435 union perf_event *event, in perf_event__exit_del_thread() argument
440 event->fork.pid, in perf_event__exit_del_thread()
441 event->fork.tid); in perf_event__exit_del_thread()
443 dump_printf("(%d:%d):(%d:%d)\n", event->fork.pid, event->fork.tid, in perf_event__exit_del_thread()
444 event->fork.ppid, event->fork.ptid); in perf_event__exit_del_thread()
454 size_t perf_event__fprintf_aux(union perf_event *event, FILE *fp) in perf_event__fprintf_aux() argument
457 event->aux.aux_offset, event->aux.aux_size, in perf_event__fprintf_aux()
458 event->aux.flags, in perf_event__fprintf_aux()
459 event->aux.flags & PERF_AUX_FLAG_TRUNCATED ? "T" : "", in perf_event__fprintf_aux()
460 event->aux.flags & PERF_AUX_FLAG_OVERWRITE ? "O" : "", in perf_event__fprintf_aux()
461 event->aux.flags & PERF_AUX_FLAG_PARTIAL ? "P" : "", in perf_event__fprintf_aux()
462 event->aux.flags & PERF_AUX_FLAG_COLLISION ? "C" : ""); in perf_event__fprintf_aux()
465 size_t perf_event__fprintf_itrace_start(union perf_event *event, FILE *fp) in perf_event__fprintf_itrace_start() argument
468 event->itrace_start.pid, event->itrace_start.tid); in perf_event__fprintf_itrace_start()
471 size_t perf_event__fprintf_aux_output_hw_id(union perf_event *event, FILE *fp) in perf_event__fprintf_aux_output_hw_id() argument
474 event->aux_output_hw_id.hw_id); in perf_event__fprintf_aux_output_hw_id()
477 size_t perf_event__fprintf_switch(union perf_event *event, FILE *fp) in perf_event__fprintf_switch() argument
479 bool out = event->header.misc & PERF_RECORD_MISC_SWITCH_OUT; in perf_event__fprintf_switch()
481 !(event->header.misc & PERF_RECORD_MISC_SWITCH_OUT_PREEMPT) ? in perf_event__fprintf_switch()
484 if (event->header.type == PERF_RECORD_SWITCH) in perf_event__fprintf_switch()
487 return fprintf(fp, " %s %s pid/tid: %5d/%-5d\n", in perf_event__fprintf_switch()
489 event->context_switch.next_prev_pid, in perf_event__fprintf_switch()
490 event->context_switch.next_prev_tid); in perf_event__fprintf_switch()
493 static size_t perf_event__fprintf_lost(union perf_event *event, FILE *fp) in perf_event__fprintf_lost() argument
495 return fprintf(fp, " lost %" PRI_lu64 "\n", event->lost.lost); in perf_event__fprintf_lost()
498 size_t perf_event__fprintf_ksymbol(union perf_event *event, FILE *fp) in perf_event__fprintf_ksymbol() argument
501 event->ksymbol.addr, event->ksymbol.len, in perf_event__fprintf_ksymbol()
502 event->ksymbol.ksym_type, in perf_event__fprintf_ksymbol()
503 event->ksymbol.flags, event->ksymbol.name); in perf_event__fprintf_ksymbol()
506 size_t perf_event__fprintf_bpf(union perf_event *event, FILE *fp) in perf_event__fprintf_bpf() argument
509 event->bpf.type, event->bpf.flags, event->bpf.id); in perf_event__fprintf_bpf()
512 size_t perf_event__fprintf_bpf_metadata(union perf_event *event, FILE *fp) in perf_event__fprintf_bpf_metadata() argument
514 struct perf_record_bpf_metadata *metadata = &event->bpf_metadata; in perf_event__fprintf_bpf_metadata()
517 ret = fprintf(fp, " prog %s\n", metadata->prog_name); in perf_event__fprintf_bpf_metadata()
518 for (__u32 i = 0; i < metadata->nr_entries; i++) { in perf_event__fprintf_bpf_metadata()
520 metadata->entries[i].key, in perf_event__fprintf_bpf_metadata()
521 metadata->entries[i].value); in perf_event__fprintf_bpf_metadata()
543 size_t perf_event__fprintf_text_poke(union perf_event *event, struct machine *machine, FILE *fp) in perf_event__fprintf_text_poke() argument
545 struct perf_record_text_poke_event *tp = &event->text_poke; in perf_event__fprintf_text_poke()
549 ret = fprintf(fp, " %" PRI_lx64 " ", tp->addr); in perf_event__fprintf_text_poke()
554 al.map = maps__find(machine__kernel_maps(machine), tp->addr); in perf_event__fprintf_text_poke()
556 al.addr = map__map_ip(al.map, tp->addr); in perf_event__fprintf_text_poke()
563 ret += fprintf(fp, " old len %u new len %u\n", tp->old_len, tp->new_len); in perf_event__fprintf_text_poke()
565 ret += binary__fprintf(tp->bytes, tp->old_len, 16, text_poke_printer, in perf_event__fprintf_text_poke()
568 ret += binary__fprintf(tp->bytes + tp->old_len, tp->new_len, 16, in perf_event__fprintf_text_poke()
573 size_t perf_event__fprintf(union perf_event *event, struct machine *machine, FILE *fp) in perf_event__fprintf() argument
576 perf_event__name(event->header.type)); in perf_event__fprintf()
578 switch (event->header.type) { in perf_event__fprintf()
580 ret += perf_event__fprintf_comm(event, fp); in perf_event__fprintf()
584 ret += perf_event__fprintf_task(event, fp); in perf_event__fprintf()
587 ret += perf_event__fprintf_mmap(event, fp); in perf_event__fprintf()
590 ret += perf_event__fprintf_namespaces(event, fp); in perf_event__fprintf()
593 ret += perf_event__fprintf_cgroup(event, fp); in perf_event__fprintf()
596 ret += perf_event__fprintf_mmap2(event, fp); in perf_event__fprintf()
599 ret += perf_event__fprintf_aux(event, fp); in perf_event__fprintf()
602 ret += perf_event__fprintf_itrace_start(event, fp); in perf_event__fprintf()
606 ret += perf_event__fprintf_switch(event, fp); in perf_event__fprintf()
609 ret += perf_event__fprintf_lost(event, fp); in perf_event__fprintf()
612 ret += perf_event__fprintf_ksymbol(event, fp); in perf_event__fprintf()
615 ret += perf_event__fprintf_bpf(event, fp); in perf_event__fprintf()
618 ret += perf_event__fprintf_text_poke(event, machine, fp); in perf_event__fprintf()
621 ret += perf_event__fprintf_aux_output_hw_id(event, fp); in perf_event__fprintf()
624 ret += perf_event__fprintf_bpf_metadata(event, fp); in perf_event__fprintf()
634 union perf_event *event, in perf_event__process() argument
638 return machine__process_event(machine, event, sample); in perf_event__process()
648 maps__zput(al->maps); in thread__find_map()
649 map__zput(al->map); in thread__find_map()
650 thread__zput(al->thread); in thread__find_map()
651 al->thread = thread__get(thread); in thread__find_map()
653 al->addr = addr; in thread__find_map()
654 al->cpumode = cpumode; in thread__find_map()
655 al->filtered = 0; in thread__find_map()
661 al->level = 'k'; in thread__find_map()
665 al->level = '.'; in thread__find_map()
667 al->level = 'g'; in thread__find_map()
671 al->level = 'u'; in thread__find_map()
673 al->level = 'H'; in thread__find_map()
678 al->filtered |= (1 << HIST_FILTER__GUEST); in thread__find_map()
682 al->filtered |= (1 << HIST_FILTER__HOST); in thread__find_map()
686 al->maps = maps__get(maps); in thread__find_map()
687 al->map = maps__find(maps, al->addr); in thread__find_map()
688 if (al->map != NULL) { in thread__find_map()
694 map__load(al->map); in thread__find_map()
695 al->addr = map__map_ip(al->map, al->addr); in thread__find_map()
698 return al->map; in thread__find_map()
722 al->sym = NULL; in thread__find_symbol()
724 al->sym = map__find_symbol(al->map, al->addr); in thread__find_symbol()
725 return al->sym; in thread__find_symbol()
731 al->sym = NULL; in thread__find_symbol_fb()
733 al->sym = map__find_symbol(al->map, al->addr); in thread__find_symbol_fb()
734 return al->sym; in thread__find_symbol_fb()
743 if (addr >= pos->i && addr < pos->i + addr_range) in check_address_range()
751 * Callers need to drop the reference to al->thread, obtained in
761 thread = machine__findnew_guest_code(machine, sample->pid); in machine__resolve()
763 thread = machine__findnew_thread(machine, sample->pid, sample->tid); in machine__resolve()
765 return -1; in machine__resolve()
768 thread__find_map(thread, sample->cpumode, sample->ip, al); in machine__resolve()
769 dso = al->map ? map__dso(al->map) : NULL; in machine__resolve()
773 : (al->level == 'H' ? "[hypervisor]" : "<not found>")); in machine__resolve()
776 al->filtered |= (1 << HIST_FILTER__THREAD); in machine__resolve()
781 al->sym = NULL; in machine__resolve()
782 al->cpu = sample->cpu; in machine__resolve()
783 al->socket = -1; in machine__resolve()
784 al->srcline = NULL; in machine__resolve()
786 if (al->cpu >= 0) { in machine__resolve()
787 struct perf_env *env = machine->env; in machine__resolve()
789 if (env && env->cpu) in machine__resolve()
790 al->socket = env->cpu[al->cpu].socket_id; in machine__resolve()
793 /* Account for possible out-of-order switch events. */ in machine__resolve()
794 al->parallelism = max(1, min(machine->parallelism, machine__nr_cpus_avail(machine))); in machine__resolve()
795 if (test_bit(al->parallelism, symbol_conf.parallelism_filter)) in machine__resolve()
796 al->filtered |= (1 << HIST_FILTER__PARALLELISM); in machine__resolve()
802 al->latency = sample->period * 1000 / al->parallelism; in machine__resolve()
804 if (al->map) { in machine__resolve()
811 al->filtered |= (1 << HIST_FILTER__DSO); in machine__resolve()
814 al->sym = map__find_symbol(al->map, al->addr); in machine__resolve()
816 al->filtered |= (1 << HIST_FILTER__DSO); in machine__resolve()
824 if (al->sym) { in machine__resolve()
826 al->sym->name); in machine__resolve()
828 if (!ret && al->sym) { in machine__resolve()
830 map__unmap_ip(al->map, al->sym->start)); in machine__resolve()
834 if (!ret && symbol_conf.addr_list && al->map) { in machine__resolve()
835 unsigned long addr = map__unmap_ip(al->map, al->addr); in machine__resolve()
846 al->filtered |= (1 << HIST_FILTER__SYMBOL); in machine__resolve()
854 return attr->type == PERF_TYPE_HARDWARE && in is_bts_event()
855 (attr->config & PERF_COUNT_HW_BRANCH_INSTRUCTIONS) && in is_bts_event()
856 attr->sample_period == 1; in is_bts_event()
861 if (attr->type == PERF_TYPE_SOFTWARE && in sample_addr_correlates_sym()
862 (attr->config == PERF_COUNT_SW_PAGE_FAULTS || in sample_addr_correlates_sym()
863 attr->config == PERF_COUNT_SW_PAGE_FAULTS_MIN || in sample_addr_correlates_sym()
864 attr->config == PERF_COUNT_SW_PAGE_FAULTS_MAJ)) in sample_addr_correlates_sym()
876 thread__find_map_fb(thread, sample->cpumode, sample->addr, al); in thread__resolve()
878 al->cpu = sample->cpu; in thread__resolve()
879 al->sym = NULL; in thread__resolve()
881 if (al->map) in thread__resolve()
882 al->sym = map__find_symbol(al->map, al->addr); in thread__resolve()