1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __LIBPERF_EVENT_H
3 #define __LIBPERF_EVENT_H
5 #include <linux/perf_event.h>
6 #include <linux/types.h>
7 #include <linux/limits.h>
9 #include <sys/types.h> /* pid_t */
11 struct perf_record_mmap
{
12 struct perf_event_header header
;
17 char filename
[PATH_MAX
];
20 struct perf_record_mmap2
{
21 struct perf_event_header header
;
32 char filename
[PATH_MAX
];
35 struct perf_record_comm
{
36 struct perf_event_header header
;
41 struct perf_record_namespaces
{
42 struct perf_event_header header
;
45 struct perf_ns_link_info link_info
[];
48 struct perf_record_fork
{
49 struct perf_event_header header
;
55 struct perf_record_lost
{
56 struct perf_event_header header
;
61 struct perf_record_lost_samples
{
62 struct perf_event_header header
;
67 * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
69 struct perf_record_read
{
70 struct perf_event_header header
;
78 struct perf_record_throttle
{
79 struct perf_event_header header
;
86 #define KSYM_NAME_LEN 256
89 struct perf_record_ksymbol
{
90 struct perf_event_header header
;
95 char name
[KSYM_NAME_LEN
];
98 struct perf_record_bpf_event
{
99 struct perf_event_header header
;
104 /* for bpf_prog types */
105 __u8 tag
[BPF_TAG_SIZE
]; // prog tag
108 struct perf_record_cgroup
{
109 struct perf_event_header header
;
114 struct perf_record_text_poke_event
{
115 struct perf_event_header header
;
122 struct perf_record_sample
{
123 struct perf_event_header header
;
127 struct perf_record_switch
{
128 struct perf_event_header header
;
133 struct perf_record_header_attr
{
134 struct perf_event_header header
;
135 struct perf_event_attr attr
;
140 PERF_CPU_MAP__CPUS
= 0,
141 PERF_CPU_MAP__MASK
= 1,
144 struct cpu_map_entries
{
149 struct perf_record_record_cpu_map
{
152 unsigned long mask
[];
155 struct perf_record_cpu_map_data
{
160 struct perf_record_cpu_map
{
161 struct perf_event_header header
;
162 struct perf_record_cpu_map_data data
;
166 PERF_EVENT_UPDATE__UNIT
= 0,
167 PERF_EVENT_UPDATE__SCALE
= 1,
168 PERF_EVENT_UPDATE__NAME
= 2,
169 PERF_EVENT_UPDATE__CPUS
= 3,
172 struct perf_record_event_update_cpus
{
173 struct perf_record_cpu_map_data cpus
;
176 struct perf_record_event_update_scale
{
180 struct perf_record_event_update
{
181 struct perf_event_header header
;
187 #define MAX_EVENT_NAME 64
189 struct perf_trace_event_type
{
191 char name
[MAX_EVENT_NAME
];
194 struct perf_record_header_event_type
{
195 struct perf_event_header header
;
196 struct perf_trace_event_type event_type
;
199 struct perf_record_header_tracing_data
{
200 struct perf_event_header header
;
204 #define PERF_RECORD_MISC_BUILD_ID_SIZE (1 << 15)
206 struct perf_record_header_build_id
{
207 struct perf_event_header header
;
221 struct id_index_entry
{
228 struct perf_record_id_index
{
229 struct perf_event_header header
;
231 struct id_index_entry entries
[0];
234 struct perf_record_auxtrace_info
{
235 struct perf_event_header header
;
237 __u32 reserved__
; /* For alignment */
241 struct perf_record_auxtrace
{
242 struct perf_event_header header
;
249 __u32 reserved__
; /* For alignment */
252 #define MAX_AUXTRACE_ERROR_MSG 64
254 struct perf_record_auxtrace_error
{
255 struct perf_event_header header
;
264 char msg
[MAX_AUXTRACE_ERROR_MSG
];
267 struct perf_record_aux
{
268 struct perf_event_header header
;
274 struct perf_record_itrace_start
{
275 struct perf_event_header header
;
280 struct perf_record_thread_map_entry
{
285 struct perf_record_thread_map
{
286 struct perf_event_header header
;
288 struct perf_record_thread_map_entry entries
[];
292 PERF_STAT_CONFIG_TERM__AGGR_MODE
= 0,
293 PERF_STAT_CONFIG_TERM__INTERVAL
= 1,
294 PERF_STAT_CONFIG_TERM__SCALE
= 2,
295 PERF_STAT_CONFIG_TERM__MAX
= 3,
298 struct perf_record_stat_config_entry
{
303 struct perf_record_stat_config
{
304 struct perf_event_header header
;
306 struct perf_record_stat_config_entry data
[];
309 struct perf_record_stat
{
310 struct perf_event_header header
;
326 struct perf_record_stat_round
{
327 struct perf_event_header header
;
332 struct perf_record_time_conv
{
333 struct perf_event_header header
;
339 bool cap_user_time_zero
;
340 bool cap_user_time_short
;
343 struct perf_record_header_feature
{
344 struct perf_event_header header
;
349 struct perf_record_compressed
{
350 struct perf_event_header header
;
354 enum perf_user_event_type
{ /* above any possible kernel type */
355 PERF_RECORD_USER_TYPE_START
= 64,
356 PERF_RECORD_HEADER_ATTR
= 64,
357 PERF_RECORD_HEADER_EVENT_TYPE
= 65, /* deprecated */
358 PERF_RECORD_HEADER_TRACING_DATA
= 66,
359 PERF_RECORD_HEADER_BUILD_ID
= 67,
360 PERF_RECORD_FINISHED_ROUND
= 68,
361 PERF_RECORD_ID_INDEX
= 69,
362 PERF_RECORD_AUXTRACE_INFO
= 70,
363 PERF_RECORD_AUXTRACE
= 71,
364 PERF_RECORD_AUXTRACE_ERROR
= 72,
365 PERF_RECORD_THREAD_MAP
= 73,
366 PERF_RECORD_CPU_MAP
= 74,
367 PERF_RECORD_STAT_CONFIG
= 75,
368 PERF_RECORD_STAT
= 76,
369 PERF_RECORD_STAT_ROUND
= 77,
370 PERF_RECORD_EVENT_UPDATE
= 78,
371 PERF_RECORD_TIME_CONV
= 79,
372 PERF_RECORD_HEADER_FEATURE
= 80,
373 PERF_RECORD_COMPRESSED
= 81,
374 PERF_RECORD_HEADER_MAX
378 struct perf_event_header header
;
379 struct perf_record_mmap mmap
;
380 struct perf_record_mmap2 mmap2
;
381 struct perf_record_comm comm
;
382 struct perf_record_namespaces namespaces
;
383 struct perf_record_cgroup cgroup
;
384 struct perf_record_fork fork
;
385 struct perf_record_lost lost
;
386 struct perf_record_lost_samples lost_samples
;
387 struct perf_record_read read
;
388 struct perf_record_throttle throttle
;
389 struct perf_record_sample sample
;
390 struct perf_record_bpf_event bpf
;
391 struct perf_record_ksymbol ksymbol
;
392 struct perf_record_text_poke_event text_poke
;
393 struct perf_record_header_attr attr
;
394 struct perf_record_event_update event_update
;
395 struct perf_record_header_event_type event_type
;
396 struct perf_record_header_tracing_data tracing_data
;
397 struct perf_record_header_build_id build_id
;
398 struct perf_record_id_index id_index
;
399 struct perf_record_auxtrace_info auxtrace_info
;
400 struct perf_record_auxtrace auxtrace
;
401 struct perf_record_auxtrace_error auxtrace_error
;
402 struct perf_record_aux aux
;
403 struct perf_record_itrace_start itrace_start
;
404 struct perf_record_switch context_switch
;
405 struct perf_record_thread_map thread_map
;
406 struct perf_record_cpu_map cpu_map
;
407 struct perf_record_stat_config stat_config
;
408 struct perf_record_stat stat
;
409 struct perf_record_stat_round stat_round
;
410 struct perf_record_time_conv time_conv
;
411 struct perf_record_header_feature feat
;
412 struct perf_record_compressed pack
;
415 #endif /* __LIBPERF_EVENT_H */