1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __PERF_SYNTHETIC_EVENTS_H
3 #define __PERF_SYNTHETIC_EVENTS_H
6 #include <sys/types.h> // pid_t
7 #include <linux/compiler.h>
8 #include <linux/types.h>
10 struct auxtrace_record
;
15 struct perf_counts_values
;
17 struct perf_event_attr
;
18 struct perf_event_mmap_page
;
21 struct perf_stat_config
;
22 struct perf_thread_map
;
29 typedef int (*perf_event__handler_t
)(struct perf_tool
*tool
, union perf_event
*event
,
30 struct perf_sample
*sample
, struct machine
*machine
);
32 int perf_event__synthesize_attrs(struct perf_tool
*tool
, struct evlist
*evlist
, perf_event__handler_t process
);
33 int perf_event__synthesize_attr(struct perf_tool
*tool
, struct perf_event_attr
*attr
, u32 ids
, u64
*id
, perf_event__handler_t process
);
34 int perf_event__synthesize_build_id(struct perf_tool
*tool
, struct dso
*pos
, u16 misc
, perf_event__handler_t process
, struct machine
*machine
);
35 int perf_event__synthesize_cpu_map(struct perf_tool
*tool
, struct perf_cpu_map
*cpus
, perf_event__handler_t process
, struct machine
*machine
);
36 int perf_event__synthesize_event_update_cpus(struct perf_tool
*tool
, struct evsel
*evsel
, perf_event__handler_t process
);
37 int perf_event__synthesize_event_update_name(struct perf_tool
*tool
, struct evsel
*evsel
, perf_event__handler_t process
);
38 int perf_event__synthesize_event_update_scale(struct perf_tool
*tool
, struct evsel
*evsel
, perf_event__handler_t process
);
39 int perf_event__synthesize_event_update_unit(struct perf_tool
*tool
, struct evsel
*evsel
, perf_event__handler_t process
);
40 int perf_event__synthesize_extra_attr(struct perf_tool
*tool
, struct evlist
*evsel_list
, perf_event__handler_t process
, bool is_pipe
);
41 int perf_event__synthesize_extra_kmaps(struct perf_tool
*tool
, perf_event__handler_t process
, struct machine
*machine
);
42 int perf_event__synthesize_features(struct perf_tool
*tool
, struct perf_session
*session
, struct evlist
*evlist
, perf_event__handler_t process
);
43 int perf_event__synthesize_id_index(struct perf_tool
*tool
, perf_event__handler_t process
, struct evlist
*evlist
, struct machine
*machine
);
44 int perf_event__synthesize_kernel_mmap(struct perf_tool
*tool
, perf_event__handler_t process
, struct machine
*machine
);
45 int perf_event__synthesize_mmap_events(struct perf_tool
*tool
, union perf_event
*event
, pid_t pid
, pid_t tgid
, perf_event__handler_t process
, struct machine
*machine
, bool mmap_data
);
46 int perf_event__synthesize_modules(struct perf_tool
*tool
, perf_event__handler_t process
, struct machine
*machine
);
47 int perf_event__synthesize_namespaces(struct perf_tool
*tool
, union perf_event
*event
, pid_t pid
, pid_t tgid
, perf_event__handler_t process
, struct machine
*machine
);
48 int perf_event__synthesize_cgroups(struct perf_tool
*tool
, perf_event__handler_t process
, struct machine
*machine
);
49 int perf_event__synthesize_sample(union perf_event
*event
, u64 type
, u64 read_format
, const struct perf_sample
*sample
);
50 int perf_event__synthesize_stat_config(struct perf_tool
*tool
, struct perf_stat_config
*config
, perf_event__handler_t process
, struct machine
*machine
);
51 int perf_event__synthesize_stat_events(struct perf_stat_config
*config
, struct perf_tool
*tool
, struct evlist
*evlist
, perf_event__handler_t process
, bool attrs
);
52 int perf_event__synthesize_stat_round(struct perf_tool
*tool
, u64 time
, u64 type
, perf_event__handler_t process
, struct machine
*machine
);
53 int perf_event__synthesize_stat(struct perf_tool
*tool
, u32 cpu
, u32 thread
, u64 id
, struct perf_counts_values
*count
, perf_event__handler_t process
, struct machine
*machine
);
54 int perf_event__synthesize_thread_map2(struct perf_tool
*tool
, struct perf_thread_map
*threads
, perf_event__handler_t process
, struct machine
*machine
);
55 int perf_event__synthesize_thread_map(struct perf_tool
*tool
, struct perf_thread_map
*threads
, perf_event__handler_t process
, struct machine
*machine
, bool mmap_data
);
56 int perf_event__synthesize_threads(struct perf_tool
*tool
, perf_event__handler_t process
, struct machine
*machine
, bool mmap_data
, unsigned int nr_threads_synthesize
);
57 int perf_event__synthesize_tracing_data(struct perf_tool
*tool
, int fd
, struct evlist
*evlist
, perf_event__handler_t process
);
58 int perf_event__synth_time_conv(const struct perf_event_mmap_page
*pc
, struct perf_tool
*tool
, perf_event__handler_t process
, struct machine
*machine
);
59 pid_t
perf_event__synthesize_comm(struct perf_tool
*tool
, union perf_event
*event
, pid_t pid
, perf_event__handler_t process
, struct machine
*machine
);
61 int perf_tool__process_synth_event(struct perf_tool
*tool
, union perf_event
*event
, struct machine
*machine
, perf_event__handler_t process
);
63 size_t perf_event__sample_event_size(const struct perf_sample
*sample
, u64 type
, u64 read_format
);
65 int __machine__synthesize_threads(struct machine
*machine
, struct perf_tool
*tool
,
66 struct target
*target
, struct perf_thread_map
*threads
,
67 perf_event__handler_t process
, bool data_mmap
,
68 unsigned int nr_threads_synthesize
);
69 int machine__synthesize_threads(struct machine
*machine
, struct target
*target
,
70 struct perf_thread_map
*threads
, bool data_mmap
,
71 unsigned int nr_threads_synthesize
);
73 #ifdef HAVE_AUXTRACE_SUPPORT
74 int perf_event__synthesize_auxtrace_info(struct auxtrace_record
*itr
, struct perf_tool
*tool
,
75 struct perf_session
*session
, perf_event__handler_t process
);
77 #else // HAVE_AUXTRACE_SUPPORT
82 perf_event__synthesize_auxtrace_info(struct auxtrace_record
*itr __maybe_unused
,
83 struct perf_tool
*tool __maybe_unused
,
84 struct perf_session
*session __maybe_unused
,
85 perf_event__handler_t process __maybe_unused
)
89 #endif // HAVE_AUXTRACE_SUPPORT
91 #ifdef HAVE_LIBBPF_SUPPORT
92 int perf_event__synthesize_bpf_events(struct perf_session
*session
, perf_event__handler_t process
,
93 struct machine
*machine
, struct record_opts
*opts
);
94 #else // HAVE_LIBBPF_SUPPORT
95 static inline int perf_event__synthesize_bpf_events(struct perf_session
*session __maybe_unused
,
96 perf_event__handler_t process __maybe_unused
,
97 struct machine
*machine __maybe_unused
,
98 struct record_opts
*opts __maybe_unused
)
102 #endif // HAVE_LIBBPF_SUPPORT
104 #endif // __PERF_SYNTHETIC_EVENTS_H