1 /*
2 * Copyright (c) 2016-2018 Eugene Syromyatnikov <evgsyr@gmail.com>
3 * Copyright (c) 2016-2023 The strace developers.
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7 */
8
9 #ifndef STRACE_LINUX_PERF_EVENT_STRUCT_H
10 # define STRACE_LINUX_PERF_EVENT_STRUCT_H
11
12 # include <stdint.h>
13
14 # define PERF_PMU_TYPE_SHIFT 32
15 # define PERF_HW_EVENT_MASK 0xffffffff
16
17 struct perf_event_attr {
18 uint32_t type;
19 uint32_t size;
20 uint64_t config;
21 union {
22 uint64_t sample_period;
23 uint64_t sample_freq;
24 };
25 uint64_t sample_type;
26 uint64_t read_format;
27 uint64_t disabled :1,
28 inherit :1,
29 pinned :1,
30 exclusive :1,
31 exclude_user :1,
32 exclude_kernel :1,
33 exclude_hv :1,
34 exclude_idle :1,
35 mmap :1,
36 comm :1,
37 freq :1,
38 inherit_stat :1,
39 enable_on_exec :1,
40 task :1,
41 watermark :1,
42 precise_ip :2,
43 mmap_data :1,
44 sample_id_all :1,
45 exclude_host :1,
46 exclude_guest :1,
47 exclude_callchain_kernel :1,
48 exclude_callchain_user :1,
49 mmap2 :1,
50 comm_exec :1,
51 use_clockid :1,
52 context_switch :1,
53 write_backward :1,
54 namespaces :1,
55 ksymbol :1,
56 bpf_event :1,
57 aux_output :1,
58 cgroup :1,
59 text_poke :1,
60 build_id :1,
61 inherit_thread :1,
62 remove_on_exec :1,
63 sigtrap :1,
64 __reserved_1 :26;
65 union {
66 uint32_t wakeup_events;
67 uint32_t wakeup_watermark;
68 };
69 uint32_t bp_type;
70 union {
71 uint64_t bp_addr;
72 uint64_t config1;
73 };
74 /* End of ver 0 - 64 bytes */
75 union {
76 uint64_t bp_len;
77 uint64_t config2;
78 };
79 /* End of ver 1 - 72 bytes */
80 uint64_t branch_sample_type;
81 /* End of ver 2 - 80 bytes */
82 uint64_t sample_regs_user;
83 uint32_t sample_stack_user;
84 int32_t clockid;
85 /* End of ver 3 - 96 bytes */
86 uint64_t sample_regs_intr;
87 /* End of ver 4 - 104 bytes */
88 uint32_t aux_watermark;
89 uint16_t sample_max_stack;
90 uint16_t __reserved_2;
91 /* End of ver 5 - 112 bytes */
92 uint32_t aux_sample_size;
93 uint32_t __reserved_3;
94 /* End of ver 6 - 120 bytes */
95 uint64_t sig_data;
96 /* End of ver 7 - 128 bytes */
97 uint64_t config3;
98 /* End of ver 8 - 136 bytes */
99 };
100
101 struct perf_event_query_bpf {
102 uint32_t ids_len;
103 uint32_t prog_cnt;
104 uint32_t ids[0];
105 };
106
107 #endif /* !STRACE_LINUX_PERF_EVENT_STRUCT_H */