Lines Matching refs:evsel

43 static int perf_evsel__no_extra_init(struct perf_evsel *evsel __maybe_unused)  in perf_evsel__no_extra_init()
48 static void perf_evsel__no_extra_fini(struct perf_evsel *evsel __maybe_unused) in perf_evsel__no_extra_fini()
54 int (*init)(struct perf_evsel *evsel);
55 void (*fini)(struct perf_evsel *evsel);
63 int (*init)(struct perf_evsel *evsel), in perf_evsel__object_config() argument
64 void (*fini)(struct perf_evsel *evsel)) in perf_evsel__object_config() argument
163 void perf_evsel__calc_id_pos(struct perf_evsel *evsel) in perf_evsel__calc_id_pos() argument
165 evsel->id_pos = __perf_evsel__calc_id_pos(evsel->attr.sample_type); in perf_evsel__calc_id_pos()
166 evsel->is_pos = __perf_evsel__calc_is_pos(evsel->attr.sample_type); in perf_evsel__calc_id_pos()
169 void __perf_evsel__set_sample_bit(struct perf_evsel *evsel, in __perf_evsel__set_sample_bit() argument
172 if (!(evsel->attr.sample_type & bit)) { in __perf_evsel__set_sample_bit()
173 evsel->attr.sample_type |= bit; in __perf_evsel__set_sample_bit()
174 evsel->sample_size += sizeof(u64); in __perf_evsel__set_sample_bit()
175 perf_evsel__calc_id_pos(evsel); in __perf_evsel__set_sample_bit()
179 void __perf_evsel__reset_sample_bit(struct perf_evsel *evsel, in __perf_evsel__reset_sample_bit() argument
182 if (evsel->attr.sample_type & bit) { in __perf_evsel__reset_sample_bit()
183 evsel->attr.sample_type &= ~bit; in __perf_evsel__reset_sample_bit()
184 evsel->sample_size -= sizeof(u64); in __perf_evsel__reset_sample_bit()
185 perf_evsel__calc_id_pos(evsel); in __perf_evsel__reset_sample_bit()
189 void perf_evsel__set_sample_id(struct perf_evsel *evsel, in perf_evsel__set_sample_id() argument
193 perf_evsel__reset_sample_bit(evsel, ID); in perf_evsel__set_sample_id()
194 perf_evsel__set_sample_bit(evsel, IDENTIFIER); in perf_evsel__set_sample_id()
196 perf_evsel__set_sample_bit(evsel, ID); in perf_evsel__set_sample_id()
198 evsel->attr.read_format |= PERF_FORMAT_ID; in perf_evsel__set_sample_id()
201 void perf_evsel__init(struct perf_evsel *evsel, in perf_evsel__init() argument
204 evsel->idx = idx; in perf_evsel__init()
205 evsel->tracking = !idx; in perf_evsel__init()
206 evsel->attr = *attr; in perf_evsel__init()
207 evsel->leader = evsel; in perf_evsel__init()
208 evsel->unit = ""; in perf_evsel__init()
209 evsel->scale = 1.0; in perf_evsel__init()
210 evsel->evlist = NULL; in perf_evsel__init()
211 evsel->bpf_fd = -1; in perf_evsel__init()
212 INIT_LIST_HEAD(&evsel->node); in perf_evsel__init()
213 INIT_LIST_HEAD(&evsel->config_terms); in perf_evsel__init()
214 perf_evsel__object.init(evsel); in perf_evsel__init()
215 evsel->sample_size = __perf_evsel__sample_size(attr->sample_type); in perf_evsel__init()
216 perf_evsel__calc_id_pos(evsel); in perf_evsel__init()
217 evsel->cmdline_group_boundary = false; in perf_evsel__init()
222 struct perf_evsel *evsel = zalloc(perf_evsel__object.size); in perf_evsel__new_idx() local
224 if (evsel != NULL) in perf_evsel__new_idx()
225 perf_evsel__init(evsel, attr, idx); in perf_evsel__new_idx()
227 return evsel; in perf_evsel__new_idx()
235 struct perf_evsel *evsel = zalloc(perf_evsel__object.size); in perf_evsel__newtp_idx() local
238 if (evsel == NULL) { in perf_evsel__newtp_idx()
247 if (asprintf(&evsel->name, "%s:%s", sys, name) < 0) in perf_evsel__newtp_idx()
250 evsel->tp_format = trace_event__tp_format(sys, name); in perf_evsel__newtp_idx()
251 if (IS_ERR(evsel->tp_format)) { in perf_evsel__newtp_idx()
252 err = PTR_ERR(evsel->tp_format); in perf_evsel__newtp_idx()
257 attr.config = evsel->tp_format->id; in perf_evsel__newtp_idx()
259 perf_evsel__init(evsel, &attr, idx); in perf_evsel__newtp_idx()
262 return evsel; in perf_evsel__newtp_idx()
265 zfree(&evsel->name); in perf_evsel__newtp_idx()
266 free(evsel); in perf_evsel__newtp_idx()
292 static int perf_evsel__add_modifiers(struct perf_evsel *evsel, char *bf, size_t size) in perf_evsel__add_modifiers() argument
295 struct perf_event_attr *attr = &evsel->attr; in perf_evsel__add_modifiers()
328 static int perf_evsel__hw_name(struct perf_evsel *evsel, char *bf, size_t size) in perf_evsel__hw_name() argument
330 int r = scnprintf(bf, size, "%s", __perf_evsel__hw_name(evsel->attr.config)); in perf_evsel__hw_name()
331 return r + perf_evsel__add_modifiers(evsel, bf + r, size - r); in perf_evsel__hw_name()
354 static int perf_evsel__sw_name(struct perf_evsel *evsel, char *bf, size_t size) in perf_evsel__sw_name() argument
356 int r = scnprintf(bf, size, "%s", __perf_evsel__sw_name(evsel->attr.config)); in perf_evsel__sw_name()
357 return r + perf_evsel__add_modifiers(evsel, bf + r, size - r); in perf_evsel__sw_name()
378 static int perf_evsel__bp_name(struct perf_evsel *evsel, char *bf, size_t size) in perf_evsel__bp_name() argument
380 struct perf_event_attr *attr = &evsel->attr; in perf_evsel__bp_name()
382 return r + perf_evsel__add_modifiers(evsel, bf + r, size - r); in perf_evsel__bp_name()
478 static int perf_evsel__hw_cache_name(struct perf_evsel *evsel, char *bf, size_t size) in perf_evsel__hw_cache_name() argument
480 int ret = __perf_evsel__hw_cache_name(evsel->attr.config, bf, size); in perf_evsel__hw_cache_name()
481 return ret + perf_evsel__add_modifiers(evsel, bf + ret, size - ret); in perf_evsel__hw_cache_name()
484 static int perf_evsel__raw_name(struct perf_evsel *evsel, char *bf, size_t size) in perf_evsel__raw_name() argument
486 int ret = scnprintf(bf, size, "raw 0x%" PRIx64, evsel->attr.config); in perf_evsel__raw_name()
487 return ret + perf_evsel__add_modifiers(evsel, bf + ret, size - ret); in perf_evsel__raw_name()
490 const char *perf_evsel__name(struct perf_evsel *evsel) in perf_evsel__name() argument
494 if (evsel->name) in perf_evsel__name()
495 return evsel->name; in perf_evsel__name()
497 switch (evsel->attr.type) { in perf_evsel__name()
499 perf_evsel__raw_name(evsel, bf, sizeof(bf)); in perf_evsel__name()
503 perf_evsel__hw_name(evsel, bf, sizeof(bf)); in perf_evsel__name()
507 perf_evsel__hw_cache_name(evsel, bf, sizeof(bf)); in perf_evsel__name()
511 perf_evsel__sw_name(evsel, bf, sizeof(bf)); in perf_evsel__name()
519 perf_evsel__bp_name(evsel, bf, sizeof(bf)); in perf_evsel__name()
524 evsel->attr.type); in perf_evsel__name()
528 evsel->name = strdup(bf); in perf_evsel__name()
530 return evsel->name ?: "unknown"; in perf_evsel__name()
533 const char *perf_evsel__group_name(struct perf_evsel *evsel) in perf_evsel__group_name() argument
535 return evsel->group_name ?: "anon group"; in perf_evsel__group_name()
538 int perf_evsel__group_desc(struct perf_evsel *evsel, char *buf, size_t size) in perf_evsel__group_desc() argument
542 const char *group_name = perf_evsel__group_name(evsel); in perf_evsel__group_desc()
547 perf_evsel__name(evsel)); in perf_evsel__group_desc()
549 for_each_group_member(pos, evsel) in perf_evsel__group_desc()
559 perf_evsel__config_callgraph(struct perf_evsel *evsel, in perf_evsel__config_callgraph() argument
563 bool function = perf_evsel__is_function_event(evsel); in perf_evsel__config_callgraph()
564 struct perf_event_attr *attr = &evsel->attr; in perf_evsel__config_callgraph()
566 perf_evsel__set_sample_bit(evsel, CALLCHAIN); in perf_evsel__config_callgraph()
575 perf_evsel__set_sample_bit(evsel, BRANCH_STACK); in perf_evsel__config_callgraph()
586 perf_evsel__set_sample_bit(evsel, REGS_USER); in perf_evsel__config_callgraph()
587 perf_evsel__set_sample_bit(evsel, STACK_USER); in perf_evsel__config_callgraph()
604 perf_evsel__reset_callgraph(struct perf_evsel *evsel, in perf_evsel__reset_callgraph() argument
607 struct perf_event_attr *attr = &evsel->attr; in perf_evsel__reset_callgraph()
609 perf_evsel__reset_sample_bit(evsel, CALLCHAIN); in perf_evsel__reset_callgraph()
611 perf_evsel__reset_sample_bit(evsel, BRANCH_STACK); in perf_evsel__reset_callgraph()
616 perf_evsel__reset_sample_bit(evsel, REGS_USER); in perf_evsel__reset_callgraph()
617 perf_evsel__reset_sample_bit(evsel, STACK_USER); in perf_evsel__reset_callgraph()
621 static void apply_config_terms(struct perf_evsel *evsel, in apply_config_terms() argument
625 struct list_head *config_terms = &evsel->config_terms; in apply_config_terms()
626 struct perf_event_attr *attr = &evsel->attr; in apply_config_terms()
646 perf_evsel__set_sample_bit(evsel, TIME); in apply_config_terms()
648 perf_evsel__reset_sample_bit(evsel, TIME); in apply_config_terms()
683 evsel->name); in apply_config_terms()
695 perf_evsel__reset_callgraph(evsel, &callchain_param); in apply_config_terms()
699 perf_evsel__config_callgraph(evsel, opts, &param); in apply_config_terms()
731 void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts) in perf_evsel__config() argument
733 struct perf_evsel *leader = evsel->leader; in perf_evsel__config()
734 struct perf_event_attr *attr = &evsel->attr; in perf_evsel__config()
735 int track = evsel->tracking; in perf_evsel__config()
741 perf_evsel__set_sample_bit(evsel, IP); in perf_evsel__config()
742 perf_evsel__set_sample_bit(evsel, TID); in perf_evsel__config()
744 if (evsel->sample_read) { in perf_evsel__config()
745 perf_evsel__set_sample_bit(evsel, READ); in perf_evsel__config()
751 perf_evsel__set_sample_id(evsel, false); in perf_evsel__config()
770 perf_evsel__set_sample_bit(evsel, PERIOD); in perf_evsel__config()
782 if ((leader != evsel) && leader->sample_read) { in perf_evsel__config()
794 perf_evsel__set_sample_bit(evsel, ADDR); in perf_evsel__config()
803 if (perf_evsel__is_function_event(evsel)) in perf_evsel__config()
804 evsel->attr.exclude_callchain_user = 1; in perf_evsel__config()
806 if (callchain_param.enabled && !evsel->no_aux_samples) in perf_evsel__config()
807 perf_evsel__config_callgraph(evsel, opts, &callchain_param); in perf_evsel__config()
811 perf_evsel__set_sample_bit(evsel, REGS_INTR); in perf_evsel__config()
815 perf_evsel__set_sample_bit(evsel, CPU); in perf_evsel__config()
818 perf_evsel__set_sample_bit(evsel, PERIOD); in perf_evsel__config()
827 perf_evsel__set_sample_bit(evsel, TIME); in perf_evsel__config()
829 if (opts->raw_samples && !evsel->no_aux_samples) { in perf_evsel__config()
830 perf_evsel__set_sample_bit(evsel, TIME); in perf_evsel__config()
831 perf_evsel__set_sample_bit(evsel, RAW); in perf_evsel__config()
832 perf_evsel__set_sample_bit(evsel, CPU); in perf_evsel__config()
836 perf_evsel__set_sample_bit(evsel, DATA_SRC); in perf_evsel__config()
842 if (opts->branch_stack && !evsel->no_aux_samples) { in perf_evsel__config()
843 perf_evsel__set_sample_bit(evsel, BRANCH_STACK); in perf_evsel__config()
848 perf_evsel__set_sample_bit(evsel, WEIGHT); in perf_evsel__config()
859 perf_evsel__set_sample_bit(evsel, TRANSACTION); in perf_evsel__config()
862 evsel->attr.read_format |= in perf_evsel__config()
873 if (perf_evsel__is_group_leader(evsel)) in perf_evsel__config()
880 if (target__none(&opts->target) && perf_evsel__is_group_leader(evsel) && in perf_evsel__config()
884 if (evsel->immediate) { in perf_evsel__config()
895 if (evsel->precise_max) in perf_evsel__config()
902 apply_config_terms(evsel, opts); in perf_evsel__config()
905 static int perf_evsel__alloc_fd(struct perf_evsel *evsel, int ncpus, int nthreads) in perf_evsel__alloc_fd() argument
909 if (evsel->system_wide) in perf_evsel__alloc_fd()
912 evsel->fd = xyarray__new(ncpus, nthreads, sizeof(int)); in perf_evsel__alloc_fd()
914 if (evsel->fd) { in perf_evsel__alloc_fd()
917 FD(evsel, cpu, thread) = -1; in perf_evsel__alloc_fd()
922 return evsel->fd != NULL ? 0 : -ENOMEM; in perf_evsel__alloc_fd()
925 static int perf_evsel__run_ioctl(struct perf_evsel *evsel, int ncpus, int nthreads, in perf_evsel__run_ioctl() argument
930 if (evsel->system_wide) in perf_evsel__run_ioctl()
935 int fd = FD(evsel, cpu, thread), in perf_evsel__run_ioctl()
946 int perf_evsel__apply_filter(struct perf_evsel *evsel, int ncpus, int nthreads, in perf_evsel__apply_filter() argument
949 return perf_evsel__run_ioctl(evsel, ncpus, nthreads, in perf_evsel__apply_filter()
954 int perf_evsel__set_filter(struct perf_evsel *evsel, const char *filter) in perf_evsel__set_filter() argument
959 free(evsel->filter); in perf_evsel__set_filter()
960 evsel->filter = new_filter; in perf_evsel__set_filter()
967 int perf_evsel__append_filter(struct perf_evsel *evsel, in perf_evsel__append_filter() argument
972 if (evsel->filter == NULL) in perf_evsel__append_filter()
973 return perf_evsel__set_filter(evsel, filter); in perf_evsel__append_filter()
975 if (asprintf(&new_filter,"(%s) %s (%s)", evsel->filter, op, filter) > 0) { in perf_evsel__append_filter()
976 free(evsel->filter); in perf_evsel__append_filter()
977 evsel->filter = new_filter; in perf_evsel__append_filter()
984 int perf_evsel__enable(struct perf_evsel *evsel, int ncpus, int nthreads) in perf_evsel__enable() argument
986 return perf_evsel__run_ioctl(evsel, ncpus, nthreads, in perf_evsel__enable()
991 int perf_evsel__alloc_id(struct perf_evsel *evsel, int ncpus, int nthreads) in perf_evsel__alloc_id() argument
996 if (evsel->system_wide) in perf_evsel__alloc_id()
999 evsel->sample_id = xyarray__new(ncpus, nthreads, sizeof(struct perf_sample_id)); in perf_evsel__alloc_id()
1000 if (evsel->sample_id == NULL) in perf_evsel__alloc_id()
1003 evsel->id = zalloc(ncpus * nthreads * sizeof(u64)); in perf_evsel__alloc_id()
1004 if (evsel->id == NULL) { in perf_evsel__alloc_id()
1005 xyarray__delete(evsel->sample_id); in perf_evsel__alloc_id()
1006 evsel->sample_id = NULL; in perf_evsel__alloc_id()
1013 static void perf_evsel__free_fd(struct perf_evsel *evsel) in perf_evsel__free_fd() argument
1015 xyarray__delete(evsel->fd); in perf_evsel__free_fd()
1016 evsel->fd = NULL; in perf_evsel__free_fd()
1019 static void perf_evsel__free_id(struct perf_evsel *evsel) in perf_evsel__free_id() argument
1021 xyarray__delete(evsel->sample_id); in perf_evsel__free_id()
1022 evsel->sample_id = NULL; in perf_evsel__free_id()
1023 zfree(&evsel->id); in perf_evsel__free_id()
1026 static void perf_evsel__free_config_terms(struct perf_evsel *evsel) in perf_evsel__free_config_terms() argument
1030 list_for_each_entry_safe(term, h, &evsel->config_terms, list) { in perf_evsel__free_config_terms()
1036 void perf_evsel__close_fd(struct perf_evsel *evsel, int ncpus, int nthreads) in perf_evsel__close_fd() argument
1040 if (evsel->system_wide) in perf_evsel__close_fd()
1045 close(FD(evsel, cpu, thread)); in perf_evsel__close_fd()
1046 FD(evsel, cpu, thread) = -1; in perf_evsel__close_fd()
1050 void perf_evsel__exit(struct perf_evsel *evsel) in perf_evsel__exit() argument
1052 assert(list_empty(&evsel->node)); in perf_evsel__exit()
1053 assert(evsel->evlist == NULL); in perf_evsel__exit()
1054 perf_evsel__free_fd(evsel); in perf_evsel__exit()
1055 perf_evsel__free_id(evsel); in perf_evsel__exit()
1056 perf_evsel__free_config_terms(evsel); in perf_evsel__exit()
1057 close_cgroup(evsel->cgrp); in perf_evsel__exit()
1058 cpu_map__put(evsel->cpus); in perf_evsel__exit()
1059 cpu_map__put(evsel->own_cpus); in perf_evsel__exit()
1060 thread_map__put(evsel->threads); in perf_evsel__exit()
1061 zfree(&evsel->group_name); in perf_evsel__exit()
1062 zfree(&evsel->name); in perf_evsel__exit()
1063 perf_evsel__object.fini(evsel); in perf_evsel__exit()
1066 void perf_evsel__delete(struct perf_evsel *evsel) in perf_evsel__delete() argument
1068 perf_evsel__exit(evsel); in perf_evsel__delete()
1069 free(evsel); in perf_evsel__delete()
1072 void perf_evsel__compute_deltas(struct perf_evsel *evsel, int cpu, int thread, in perf_evsel__compute_deltas() argument
1077 if (!evsel->prev_raw_counts) in perf_evsel__compute_deltas()
1081 tmp = evsel->prev_raw_counts->aggr; in perf_evsel__compute_deltas()
1082 evsel->prev_raw_counts->aggr = *count; in perf_evsel__compute_deltas()
1084 tmp = *perf_counts(evsel->prev_raw_counts, cpu, thread); in perf_evsel__compute_deltas()
1085 *perf_counts(evsel->prev_raw_counts, cpu, thread) = *count; in perf_evsel__compute_deltas()
1113 int perf_evsel__read(struct perf_evsel *evsel, int cpu, int thread, in perf_evsel__read() argument
1118 if (FD(evsel, cpu, thread) < 0) in perf_evsel__read()
1121 if (readn(FD(evsel, cpu, thread), count, sizeof(*count)) < 0) in perf_evsel__read()
1127 int __perf_evsel__read_on_cpu(struct perf_evsel *evsel, in __perf_evsel__read_on_cpu() argument
1133 if (FD(evsel, cpu, thread) < 0) in __perf_evsel__read_on_cpu()
1136 if (evsel->counts == NULL && perf_evsel__alloc_counts(evsel, cpu + 1, thread + 1) < 0) in __perf_evsel__read_on_cpu()
1139 if (readn(FD(evsel, cpu, thread), &count, nv * sizeof(u64)) < 0) in __perf_evsel__read_on_cpu()
1142 perf_evsel__compute_deltas(evsel, cpu, thread, &count); in __perf_evsel__read_on_cpu()
1144 *perf_counts(evsel->counts, cpu, thread) = count; in __perf_evsel__read_on_cpu()
1148 static int get_group_fd(struct perf_evsel *evsel, int cpu, int thread) in get_group_fd() argument
1150 struct perf_evsel *leader = evsel->leader; in get_group_fd()
1153 if (perf_evsel__is_group_leader(evsel)) in get_group_fd()
1291 static int __perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, in __perf_evsel__open() argument
1299 if (evsel->system_wide) in __perf_evsel__open()
1304 if (evsel->fd == NULL && in __perf_evsel__open()
1305 perf_evsel__alloc_fd(evsel, cpus->nr, nthreads) < 0) in __perf_evsel__open()
1308 if (evsel->cgrp) { in __perf_evsel__open()
1310 pid = evsel->cgrp->fd; in __perf_evsel__open()
1315 evsel->attr.clockid = CLOCK_MONOTONIC; /* should always work */ in __perf_evsel__open()
1317 evsel->attr.use_clockid = 0; in __perf_evsel__open()
1318 evsel->attr.clockid = 0; in __perf_evsel__open()
1323 evsel->attr.mmap2 = 0; in __perf_evsel__open()
1325 evsel->attr.exclude_guest = evsel->attr.exclude_host = 0; in __perf_evsel__open()
1328 evsel->attr.sample_id_all = 0; in __perf_evsel__open()
1333 perf_event_attr__fprintf(stderr, &evsel->attr, __open_attr__fprintf, NULL); in __perf_evsel__open()
1342 if (!evsel->cgrp && !evsel->system_wide) in __perf_evsel__open()
1345 group_fd = get_group_fd(evsel, cpu, thread); in __perf_evsel__open()
1350 FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, in __perf_evsel__open()
1354 if (FD(evsel, cpu, thread) < 0) { in __perf_evsel__open()
1361 if (evsel->bpf_fd >= 0) { in __perf_evsel__open()
1362 int evt_fd = FD(evsel, cpu, thread); in __perf_evsel__open()
1363 int bpf_fd = evsel->bpf_fd; in __perf_evsel__open()
1425 if (!perf_missing_features.clockid_wrong && evsel->attr.use_clockid) { in __perf_evsel__open()
1428 } else if (!perf_missing_features.clockid && evsel->attr.use_clockid) { in __perf_evsel__open()
1434 } else if (!perf_missing_features.mmap2 && evsel->attr.mmap2) { in __perf_evsel__open()
1438 (evsel->attr.exclude_guest || evsel->attr.exclude_host)) { in __perf_evsel__open()
1449 close(FD(evsel, cpu, thread)); in __perf_evsel__open()
1450 FD(evsel, cpu, thread) = -1; in __perf_evsel__open()
1457 void perf_evsel__close(struct perf_evsel *evsel, int ncpus, int nthreads) in perf_evsel__close() argument
1459 if (evsel->fd == NULL) in perf_evsel__close()
1462 perf_evsel__close_fd(evsel, ncpus, nthreads); in perf_evsel__close()
1463 perf_evsel__free_fd(evsel); in perf_evsel__close()
1482 int perf_evsel__open(struct perf_evsel *evsel, struct cpu_map *cpus, in perf_evsel__open() argument
1493 return __perf_evsel__open(evsel, cpus, threads); in perf_evsel__open()
1496 int perf_evsel__open_per_cpu(struct perf_evsel *evsel, in perf_evsel__open_per_cpu() argument
1499 return __perf_evsel__open(evsel, cpus, &empty_thread_map.map); in perf_evsel__open_per_cpu()
1502 int perf_evsel__open_per_thread(struct perf_evsel *evsel, in perf_evsel__open_per_thread() argument
1505 return __perf_evsel__open(evsel, &empty_cpu_map.map, threads); in perf_evsel__open_per_thread()
1508 static int perf_evsel__parse_id_sample(const struct perf_evsel *evsel, in perf_evsel__parse_id_sample() argument
1512 u64 type = evsel->attr.sample_type; in perf_evsel__parse_id_sample()
1514 bool swapped = evsel->needs_swap; in perf_evsel__parse_id_sample()
1584 int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event, in perf_evsel__parse_sample() argument
1587 u64 type = evsel->attr.sample_type; in perf_evsel__parse_sample()
1588 bool swapped = evsel->needs_swap; in perf_evsel__parse_sample()
1603 data->period = evsel->attr.sample_period; in perf_evsel__parse_sample()
1607 if (!evsel->attr.sample_id_all) in perf_evsel__parse_sample()
1609 return perf_evsel__parse_id_sample(evsel, event, data); in perf_evsel__parse_sample()
1619 if (evsel->sample_size + sizeof(event->header) > event->header.size) in perf_evsel__parse_sample()
1687 u64 read_format = evsel->attr.read_format; in perf_evsel__parse_sample()
1779 u64 mask = evsel->attr.sample_regs_user; in perf_evsel__parse_sample()
1838 u64 mask = evsel->attr.sample_regs_intr; in perf_evsel__parse_sample()
2145 struct format_field *perf_evsel__field(struct perf_evsel *evsel, const char *name) in perf_evsel__field() argument
2147 return pevent_find_field(evsel->tp_format, name); in perf_evsel__field()
2150 void *perf_evsel__rawptr(struct perf_evsel *evsel, struct perf_sample *sample, in perf_evsel__rawptr() argument
2153 struct format_field *field = perf_evsel__field(evsel, name); in perf_evsel__rawptr()
2169 u64 perf_evsel__intval(struct perf_evsel *evsel, struct perf_sample *sample, in perf_evsel__intval() argument
2172 struct format_field *field = perf_evsel__field(evsel, name); in perf_evsel__intval()
2197 if (!evsel->needs_swap) in perf_evsel__intval()
2237 int perf_evsel__fprintf(struct perf_evsel *evsel, in perf_evsel__fprintf() argument
2246 if (!perf_evsel__is_group_leader(evsel)) in perf_evsel__fprintf()
2249 if (evsel->nr_members > 1) in perf_evsel__fprintf()
2250 printed += fprintf(fp, "%s{", evsel->group_name ?: ""); in perf_evsel__fprintf()
2252 printed += fprintf(fp, "%s", perf_evsel__name(evsel)); in perf_evsel__fprintf()
2253 for_each_group_member(pos, evsel) in perf_evsel__fprintf()
2256 if (evsel->nr_members > 1) in perf_evsel__fprintf()
2261 printed += fprintf(fp, "%s", perf_evsel__name(evsel)); in perf_evsel__fprintf()
2264 printed += perf_event_attr__fprintf(fp, &evsel->attr, in perf_evsel__fprintf()
2269 if (!evsel->attr.freq) in perf_evsel__fprintf()
2273 term, (u64)evsel->attr.sample_freq); in perf_evsel__fprintf()
2280 bool perf_evsel__fallback(struct perf_evsel *evsel, int err, in perf_evsel__fallback() argument
2284 evsel->attr.type == PERF_TYPE_HARDWARE && in perf_evsel__fallback()
2285 evsel->attr.config == PERF_COUNT_HW_CPU_CYCLES) { in perf_evsel__fallback()
2297 evsel->attr.type = PERF_TYPE_SOFTWARE; in perf_evsel__fallback()
2298 evsel->attr.config = PERF_COUNT_SW_CPU_CLOCK; in perf_evsel__fallback()
2300 zfree(&evsel->name); in perf_evsel__fallback()
2307 int perf_evsel__open_strerror(struct perf_evsel *evsel, struct target *target, in perf_evsel__open_strerror() argument
2325 perf_evsel__name(evsel)); in perf_evsel__open_strerror()
2338 if (evsel->attr.precise_ip) in perf_evsel__open_strerror()
2342 if (evsel->attr.type == PERF_TYPE_HARDWARE) in perf_evsel__open_strerror()
2369 perf_evsel__name(evsel)); in perf_evsel__open_strerror()