Lines Matching refs:evsel

213 static int perf_evsel__init_tp_uint_field(struct perf_evsel *evsel,  in perf_evsel__init_tp_uint_field()  argument
217 struct format_field *format_field = perf_evsel__field(evsel, name); in perf_evsel__init_tp_uint_field()
222 return tp_field__init_uint(field, format_field, evsel->needs_swap); in perf_evsel__init_tp_uint_field()
225 #define perf_evsel__init_sc_tp_uint_field(evsel, name) \ argument
226 ({ struct syscall_tp *sc = evsel->priv;\
227 perf_evsel__init_tp_uint_field(evsel, &sc->name, #name); })
229 static int perf_evsel__init_tp_ptr_field(struct perf_evsel *evsel, in perf_evsel__init_tp_ptr_field() argument
233 struct format_field *format_field = perf_evsel__field(evsel, name); in perf_evsel__init_tp_ptr_field()
241 #define perf_evsel__init_sc_tp_ptr_field(evsel, name) \ argument
242 ({ struct syscall_tp *sc = evsel->priv;\
243 perf_evsel__init_tp_ptr_field(evsel, &sc->name, #name); })
245 static void perf_evsel__delete_priv(struct perf_evsel *evsel) in perf_evsel__delete_priv() argument
247 zfree(&evsel->priv); in perf_evsel__delete_priv()
248 perf_evsel__delete(evsel); in perf_evsel__delete_priv()
251 static int perf_evsel__init_syscall_tp(struct perf_evsel *evsel) in perf_evsel__init_syscall_tp() argument
253 struct syscall_tp *sc = evsel->priv = malloc(sizeof(struct syscall_tp)); in perf_evsel__init_syscall_tp()
255 if (evsel->priv != NULL) { in perf_evsel__init_syscall_tp()
256 if (perf_evsel__init_tp_uint_field(evsel, &sc->id, "__syscall_nr")) in perf_evsel__init_syscall_tp()
263 zfree(&evsel->priv); in perf_evsel__init_syscall_tp()
267 static int perf_evsel__init_augmented_syscall_tp(struct perf_evsel *evsel) in perf_evsel__init_augmented_syscall_tp() argument
269 struct syscall_tp *sc = evsel->priv = malloc(sizeof(struct syscall_tp)); in perf_evsel__init_augmented_syscall_tp()
271 if (evsel->priv != NULL) { /* field, sizeof_field, offsetof_field */ in perf_evsel__init_augmented_syscall_tp()
272 if (__tp_field__init_uint(&sc->id, sizeof(long), sizeof(long long), evsel->needs_swap)) in perf_evsel__init_augmented_syscall_tp()
280 zfree(&evsel->priv); in perf_evsel__init_augmented_syscall_tp()
284 static int perf_evsel__init_augmented_syscall_tp_args(struct perf_evsel *evsel) in perf_evsel__init_augmented_syscall_tp_args() argument
286 struct syscall_tp *sc = evsel->priv; in perf_evsel__init_augmented_syscall_tp_args()
291 static int perf_evsel__init_raw_syscall_tp(struct perf_evsel *evsel, void *handler) in perf_evsel__init_raw_syscall_tp() argument
293 evsel->priv = malloc(sizeof(struct syscall_tp)); in perf_evsel__init_raw_syscall_tp()
294 if (evsel->priv != NULL) { in perf_evsel__init_raw_syscall_tp()
295 if (perf_evsel__init_sc_tp_uint_field(evsel, id)) in perf_evsel__init_raw_syscall_tp()
298 evsel->handler = handler; in perf_evsel__init_raw_syscall_tp()
305 zfree(&evsel->priv); in perf_evsel__init_raw_syscall_tp()
311 struct perf_evsel *evsel = perf_evsel__newtp("raw_syscalls", direction); in perf_evsel__raw_syscall_newtp() local
314 if (IS_ERR(evsel)) in perf_evsel__raw_syscall_newtp()
315 evsel = perf_evsel__newtp("syscalls", direction); in perf_evsel__raw_syscall_newtp()
317 if (IS_ERR(evsel)) in perf_evsel__raw_syscall_newtp()
320 if (perf_evsel__init_raw_syscall_tp(evsel, handler)) in perf_evsel__raw_syscall_newtp()
323 return evsel; in perf_evsel__raw_syscall_newtp()
326 perf_evsel__delete_priv(evsel); in perf_evsel__raw_syscall_newtp()
330 #define perf_evsel__sc_tp_uint(evsel, name, sample) \ argument
331 ({ struct syscall_tp *fields = evsel->priv; \
334 #define perf_evsel__sc_tp_ptr(evsel, name, sample) \ argument
335 ({ struct syscall_tp *fields = evsel->priv; \
1547 typedef int (*tracepoint_handler)(struct trace *trace, struct perf_evsel *evsel,
1552 struct perf_evsel *evsel, int id) in trace__syscall_info() argument
1570 id, perf_evsel__name(evsel), ++n); in trace__syscall_info()
1640 static int trace__fprintf_sample(struct trace *trace, struct perf_evsel *evsel, in trace__fprintf_sample() argument
1649 perf_evsel__name(evsel), ts, in trace__fprintf_sample()
1657 static int trace__sys_enter(struct trace *trace, struct perf_evsel *evsel, in trace__sys_enter() argument
1665 int id = perf_evsel__sc_tp_uint(evsel, id, sample), err = -1; in trace__sys_enter()
1666 struct syscall *sc = trace__syscall_info(trace, evsel, id); in trace__sys_enter()
1677 trace__fprintf_sample(trace, evsel, sample, thread); in trace__sys_enter()
1679 args = perf_evsel__sc_tp_ptr(evsel, args, sample); in trace__sys_enter()
1718 static int trace__fprintf_sys_enter(struct trace *trace, struct perf_evsel *evsel, in trace__fprintf_sys_enter() argument
1723 int id = perf_evsel__sc_tp_uint(evsel, id, sample), err = -1; in trace__fprintf_sys_enter()
1724 struct syscall *sc = trace__syscall_info(trace, evsel, id); in trace__fprintf_sys_enter()
1740 args = perf_evsel__sc_tp_ptr(evsel, args, sample); in trace__fprintf_sys_enter()
1749 static int trace__resolve_callchain(struct trace *trace, struct perf_evsel *evsel, in trace__resolve_callchain() argument
1754 int max_stack = evsel->attr.sample_max_stack ? in trace__resolve_callchain()
1755 evsel->attr.sample_max_stack : in trace__resolve_callchain()
1759 thread__resolve_callchain(al.thread, cursor, evsel, sample, NULL, NULL, max_stack)) in trace__resolve_callchain()
1775 static const char *errno_to_name(struct perf_evsel *evsel, int err) in errno_to_name() argument
1777 struct perf_env *env = perf_evsel__env(evsel); in errno_to_name()
1783 static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel, in trace__sys_exit() argument
1791 int id = perf_evsel__sc_tp_uint(evsel, id, sample), err = -1, callchain_ret = 0; in trace__sys_exit()
1792 struct syscall *sc = trace__syscall_info(trace, evsel, id); in trace__sys_exit()
1803 trace__fprintf_sample(trace, evsel, sample, thread); in trace__sys_exit()
1808 ret = perf_evsel__sc_tp_uint(evsel, ret, sample); in trace__sys_exit()
1825 callchain_ret = trace__resolve_callchain(trace, evsel, sample, &callchain_cursor); in trace__sys_exit()
1855 *e = errno_to_name(evsel, -ret); in trace__sys_exit()
1890 pr_err("Problem processing %s callchain, skipping...\n", perf_evsel__name(evsel)); in trace__sys_exit()
1899 static int trace__vfs_getname(struct trace *trace, struct perf_evsel *evsel, in trace__vfs_getname() argument
1908 const char *filename = perf_evsel__rawptr(evsel, sample, "pathname"); in trace__vfs_getname()
1960 static int trace__sched_stat_runtime(struct trace *trace, struct perf_evsel *evsel, in trace__sched_stat_runtime() argument
1964 u64 runtime = perf_evsel__intval(evsel, sample, "runtime"); in trace__sched_stat_runtime()
1982 evsel->name, in trace__sched_stat_runtime()
1983 perf_evsel__strval(evsel, sample, "comm"), in trace__sched_stat_runtime()
1984 (pid_t)perf_evsel__intval(evsel, sample, "pid"), in trace__sched_stat_runtime()
1986 perf_evsel__intval(evsel, sample, "vruntime")); in trace__sched_stat_runtime()
2021 static int trace__event_handler(struct trace *trace, struct perf_evsel *evsel, in trace__event_handler() argument
2028 callchain_ret = trace__resolve_callchain(trace, evsel, sample, &callchain_cursor); in trace__event_handler()
2042 fprintf(trace->output, "%s:", evsel->name); in trace__event_handler()
2044 if (perf_evsel__is_bpf_output(evsel)) { in trace__event_handler()
2045 if (evsel == trace->syscalls.events.augmented) in trace__event_handler()
2046 trace__fprintf_sys_enter(trace, evsel, sample); in trace__event_handler()
2049 } else if (evsel->tp_format) { in trace__event_handler()
2050 if (strncmp(evsel->tp_format->name, "sys_enter_", 10) || in trace__event_handler()
2051 trace__fprintf_sys_enter(trace, evsel, sample)) { in trace__event_handler()
2052 event_format__fprintf(evsel->tp_format, sample->cpu, in trace__event_handler()
2063 pr_err("Problem processing %s callchain, skipping...\n", perf_evsel__name(evsel)); in trace__event_handler()
2086 struct perf_evsel *evsel, in trace__pgfault() argument
2100 callchain_ret = trace__resolve_callchain(trace, evsel, sample, &callchain_cursor); in trace__pgfault()
2112 if (evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ) in trace__pgfault()
2125 evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ ? in trace__pgfault()
2150 pr_err("Problem processing %s callchain, skipping...\n", perf_evsel__name(evsel)); in trace__pgfault()
2159 struct perf_evsel *evsel, in trace__set_base_time() argument
2171 (evsel->attr.sample_type & PERF_SAMPLE_TIME)) in trace__set_base_time()
2178 struct perf_evsel *evsel, in trace__process_sample() argument
2185 tracepoint_handler handler = evsel->handler; in trace__process_sample()
2191 trace__set_base_time(trace, evsel, sample); in trace__process_sample()
2195 handler(trace, evsel, event, sample); in trace__process_sample()
2266 struct perf_evsel *evsel = perf_evsel__newtp("probe", "vfs_getname"); in perf_evlist__add_vfs_getname() local
2268 if (IS_ERR(evsel)) in perf_evlist__add_vfs_getname()
2271 if (perf_evsel__field(evsel, "pathname") == NULL) { in perf_evlist__add_vfs_getname()
2272 perf_evsel__delete(evsel); in perf_evlist__add_vfs_getname()
2276 evsel->handler = trace__vfs_getname; in perf_evlist__add_vfs_getname()
2277 perf_evlist__add(evlist, evsel); in perf_evlist__add_vfs_getname()
2283 struct perf_evsel *evsel; in perf_evsel__new_pgfault() local
2294 evsel = perf_evsel__new(&attr); in perf_evsel__new_pgfault()
2295 if (evsel) in perf_evsel__new_pgfault()
2296 evsel->handler = trace__pgfault; in perf_evsel__new_pgfault()
2298 return evsel; in perf_evsel__new_pgfault()
2304 struct perf_evsel *evsel; in trace__handle_event() local
2311 evsel = perf_evlist__id2evsel(trace->evlist, sample->id); in trace__handle_event()
2312 if (evsel == NULL) { in trace__handle_event()
2317 trace__set_base_time(trace, evsel, sample); in trace__handle_event()
2319 if (evsel->attr.type == PERF_TYPE_TRACEPOINT && in trace__handle_event()
2322 perf_evsel__name(evsel), sample->tid, in trace__handle_event()
2325 tracepoint_handler handler = evsel->handler; in trace__handle_event()
2326 handler(trace, evsel, event, sample); in trace__handle_event()
2431 struct perf_evsel *evsel, *pgfault_maj = NULL, *pgfault_min = NULL; in trace__run() local
2557 err = perf_evlist__apply_filters(evlist, &evsel); in trace__run()
2586 evlist__for_each_entry(evlist, evsel) { in trace__run()
2587 if (evsel__has_callchain(evsel) && in trace__run()
2588 evsel->attr.sample_max_stack == 0) in trace__run()
2589 evsel->attr.sample_max_stack = trace->max_stack; in trace__run()
2692 evsel->filter, perf_evsel__name(evsel), errno, in trace__run()
2718 struct perf_evsel *evsel; in trace__replay() local
2757 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, in trace__replay()
2760 if (evsel == NULL) in trace__replay()
2761 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, in trace__replay()
2764 if (evsel && in trace__replay()
2765 (perf_evsel__init_raw_syscall_tp(evsel, trace__sys_enter) < 0 || in trace__replay()
2766 perf_evsel__init_sc_tp_ptr_field(evsel, args))) { in trace__replay()
2771 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, in trace__replay()
2773 if (evsel == NULL) in trace__replay()
2774 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, in trace__replay()
2776 if (evsel && in trace__replay()
2777 (perf_evsel__init_raw_syscall_tp(evsel, trace__sys_exit) < 0 || in trace__replay()
2778 perf_evsel__init_sc_tp_uint_field(evsel, ret))) { in trace__replay()
2783 evlist__for_each_entry(session->evlist, evsel) { in trace__replay()
2784 if (evsel->attr.type == PERF_TYPE_SOFTWARE && in trace__replay()
2785 (evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MAJ || in trace__replay()
2786 evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS_MIN || in trace__replay()
2787 evsel->attr.config == PERF_COUNT_SW_PAGE_FAULTS)) in trace__replay()
2788 evsel->handler = trace__pgfault; in trace__replay()
3011 struct perf_evsel *evsel; in evlist__set_evsel_handler() local
3013 evlist__for_each_entry(evlist, evsel) in evlist__set_evsel_handler()
3014 evsel->handler = handler; in evlist__set_evsel_handler()
3019 struct perf_evsel *evsel; in evlist__set_syscall_tp_fields() local
3021 evlist__for_each_entry(evlist, evsel) { in evlist__set_syscall_tp_fields()
3022 if (evsel->priv || !evsel->tp_format) in evlist__set_syscall_tp_fields()
3025 if (strcmp(evsel->tp_format->system, "syscalls")) in evlist__set_syscall_tp_fields()
3028 if (perf_evsel__init_syscall_tp(evsel)) in evlist__set_syscall_tp_fields()
3031 if (!strncmp(evsel->tp_format->name, "sys_enter_", 10)) { in evlist__set_syscall_tp_fields()
3032 struct syscall_tp *sc = evsel->priv; in evlist__set_syscall_tp_fields()
3036 } else if (!strncmp(evsel->tp_format->name, "sys_exit_", 9)) { in evlist__set_syscall_tp_fields()
3037 struct syscall_tp *sc = evsel->priv; in evlist__set_syscall_tp_fields()
3039 if (__tp_field__init_uint(&sc->ret, sizeof(u64), sc->id.offset + sizeof(u64), evsel->needs_swap)) in evlist__set_syscall_tp_fields()
3247 struct perf_evsel *evsel; in cmd_trace() local
3272 evsel = bpf__setup_output_event(trace.evlist, "__augmented_syscalls__"); in cmd_trace()
3273 if (IS_ERR(evsel)) { in cmd_trace()
3274 bpf__strerror_setup_output_event(trace.evlist, PTR_ERR(evsel), bf, sizeof(bf)); in cmd_trace()
3279 if (evsel) { in cmd_trace()
3280 if (perf_evsel__init_augmented_syscall_tp(evsel) || in cmd_trace()
3281 perf_evsel__init_augmented_syscall_tp_args(evsel)) in cmd_trace()
3283 trace.syscalls.events.augmented = evsel; in cmd_trace()