Lines Matching refs:evsel
91 bool evsel__is_tool(const struct evsel *evsel) in evsel__is_tool() argument
93 return perf_pmu__is_tool(evsel->pmu); in evsel__is_tool()
96 enum tool_pmu_event evsel__tool_event(const struct evsel *evsel) in evsel__tool_event() argument
98 if (!evsel__is_tool(evsel)) in evsel__tool_event()
101 return (enum tool_pmu_event)evsel->core.attr.config; in evsel__tool_event()
104 const char *evsel__tool_pmu_event_name(const struct evsel *evsel) in evsel__tool_pmu_event_name() argument
106 return tool_pmu__event_to_str(evsel->core.attr.config); in evsel__tool_pmu_event_name()
201 int evsel__tool_pmu_prepare_open(struct evsel *evsel, in evsel__tool_pmu_prepare_open() argument
205 if ((evsel__tool_event(evsel) == TOOL_PMU__EVENT_SYSTEM_TIME || in evsel__tool_pmu_prepare_open()
206 evsel__tool_event(evsel) == TOOL_PMU__EVENT_USER_TIME) && in evsel__tool_pmu_prepare_open()
207 !evsel->start_times) { in evsel__tool_pmu_prepare_open()
208 evsel->start_times = xyarray__new(perf_cpu_map__nr(cpus), in evsel__tool_pmu_prepare_open()
211 if (!evsel->start_times) in evsel__tool_pmu_prepare_open()
219 int evsel__tool_pmu_open(struct evsel *evsel, in evsel__tool_pmu_open() argument
223 enum tool_pmu_event ev = evsel__tool_event(evsel); in evsel__tool_pmu_open()
230 if (evsel->core.attr.sample_period) /* no sampling */ in evsel__tool_pmu_open()
232 evsel->start_time = rdclock(); in evsel__tool_pmu_open()
236 if (evsel->cgrp) in evsel__tool_pmu_open()
237 pid = evsel->cgrp->fd; in evsel__tool_pmu_open()
245 if (!evsel->cgrp && !evsel->core.system_wide) in evsel__tool_pmu_open()
253 if (evsel->core.attr.sample_period) { in evsel__tool_pmu_open()
263 evsel->pid_stat = true; in evsel__tool_pmu_open()
267 FD(evsel, idx, thread) = fd; in evsel__tool_pmu_open()
272 start_time = xyarray__entry(evsel->start_times, idx, thread); in evsel__tool_pmu_open()
279 cpu = perf_cpu_map__cpu(evsel->core.cpus, idx); in evsel__tool_pmu_open()
297 if (FD(evsel, idx, thread) >= 0) in evsel__tool_pmu_open()
298 close(FD(evsel, idx, thread)); in evsel__tool_pmu_open()
299 FD(evsel, idx, thread) = -1; in evsel__tool_pmu_open()
335 bool tool_pmu__read_event(enum tool_pmu_event ev, struct evsel *evsel, u64 *result) in tool_pmu__read_event() argument
350 if (!evsel || perf_cpu_map__is_empty(evsel->core.cpus)) { in tool_pmu__read_event()
353 } else if (!perf_cpu_map__has_any_cpu(evsel->core.cpus)) { in tool_pmu__read_event()
355 *result = perf_cpu_map__nr(evsel->core.cpus); in tool_pmu__read_event()
362 if (!perf_cpu_map__is_empty(evsel->core.pmu_cpus)) in tool_pmu__read_event()
363 *result = perf_cpu_map__nr(evsel->core.pmu_cpus); in tool_pmu__read_event()
375 if (!evsel || perf_cpu_map__is_empty(evsel->core.cpus)) { in tool_pmu__read_event()
378 } else if (!perf_cpu_map__has_any_cpu(evsel->core.cpus)) { in tool_pmu__read_event()
381 perf_cpu_map__intersect(online, evsel->core.cpus); in tool_pmu__read_event()
392 if (!perf_cpu_map__is_empty(evsel->core.pmu_cpus)) { in tool_pmu__read_event()
394 perf_cpu_map__intersect(online, evsel->core.pmu_cpus); in tool_pmu__read_event()
437 int evsel__tool_pmu_read(struct evsel *evsel, int cpu_map_idx, int thread) in evsel__tool_pmu_read() argument
444 enum tool_pmu_event ev = evsel__tool_event(evsel); in evsel__tool_pmu_read()
446 count = perf_counts(evsel->counts, cpu_map_idx, thread); in evsel__tool_pmu_read()
458 if (evsel->prev_raw_counts) in evsel__tool_pmu_read()
459 old_count = perf_counts(evsel->prev_raw_counts, cpu_map_idx, thread); in evsel__tool_pmu_read()
462 if (!tool_pmu__read_event(ev, evsel, &val)) { in evsel__tool_pmu_read()
483 start_time = &evsel->start_time; in evsel__tool_pmu_read()
491 bool system = evsel__tool_event(evsel) == TOOL_PMU__EVENT_SYSTEM_TIME; in evsel__tool_pmu_read()
493 start_time = xyarray__entry(evsel->start_times, cpu_map_idx, thread); in evsel__tool_pmu_read()
494 fd = FD(evsel, cpu_map_idx, thread); in evsel__tool_pmu_read()
496 if (evsel->pid_stat) { in evsel__tool_pmu_read()
505 struct perf_cpu cpu = perf_cpu_map__cpu(evsel->core.cpus, in evsel__tool_pmu_read()