static int process_sample_event(union perf_event *event, struct perf_sample *sample, struct perf_evsel *evsel, struct perf_session *session) { struct addr_location al; if (perf_event__preprocess_sample(event, session, &al, sample, annotate_init) < 0) { fprintf(stderr, "problem processing %d event, skipping it.\n", event->header.type); return -1; } if (al.filtered || (hide_unresolved && al.sym == NULL)) return 0; if (cpu_list && !test_bit(sample->cpu, cpu_bitmap)) return 0; if (al.map != NULL) al.map->dso->hit = 1; if (perf_session__add_hist_entry(session, &al, sample, evsel)) { pr_debug("problem incrementing symbol period, skipping event\n"); return -1; } return 0; }
static int dump_raw_samples(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine) { struct perf_mem *mem = container_of(tool, struct perf_mem, tool); struct addr_location al; const char *fmt; if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) { fprintf(stderr, "problem processing %d event, skipping it.\n", event->header.type); return -1; } if (al.filtered || (mem->hide_unresolved && al.sym == NULL)) goto out_put; if (al.map != NULL) al.map->dso->hit = 1; if (symbol_conf.field_sep) { fmt = "%d%s%d%s0x%"PRIx64"%s0x%"PRIx64"%s%"PRIu64 "%s0x%"PRIx64"%s%s:%s\n"; } else { fmt = "%5d%s%5d%s0x%016"PRIx64"%s0x016%"PRIx64 "%s%5"PRIu64"%s0x%06"PRIx64"%s%s:%s\n"; symbol_conf.field_sep = " "; } printf(fmt, sample->pid, symbol_conf.field_sep, sample->tid, symbol_conf.field_sep, sample->ip, symbol_conf.field_sep, sample->addr, symbol_conf.field_sep, sample->weight, symbol_conf.field_sep, sample->data_src, symbol_conf.field_sep, al.map ? (al.map->dso ? al.map->dso->long_name : "???") : "???", al.sym ? al.sym->name : "???"); out_put: addr_location__put(&al); return 0; }