xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/perf_event.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_PERF_EVENT_H
8*8d67ca89SAndroid Build Coastguard Worker #define _UAPI_LINUX_PERF_EVENT_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/ioctl.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <asm/byteorder.h>
12*8d67ca89SAndroid Build Coastguard Worker enum perf_type_id {
13*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_HARDWARE = 0,
14*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_SOFTWARE = 1,
15*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_TRACEPOINT = 2,
16*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_HW_CACHE = 3,
17*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_RAW = 4,
18*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_BREAKPOINT = 5,
19*8d67ca89SAndroid Build Coastguard Worker   PERF_TYPE_MAX,
20*8d67ca89SAndroid Build Coastguard Worker };
21*8d67ca89SAndroid Build Coastguard Worker #define PERF_PMU_TYPE_SHIFT 32
22*8d67ca89SAndroid Build Coastguard Worker #define PERF_HW_EVENT_MASK 0xffffffff
23*8d67ca89SAndroid Build Coastguard Worker enum perf_hw_id {
24*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CPU_CYCLES = 0,
25*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_INSTRUCTIONS = 1,
26*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_REFERENCES = 2,
27*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_MISSES = 3,
28*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
29*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_BRANCH_MISSES = 5,
30*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_BUS_CYCLES = 6,
31*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 7,
32*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 8,
33*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_REF_CPU_CYCLES = 9,
34*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_MAX,
35*8d67ca89SAndroid Build Coastguard Worker };
36*8d67ca89SAndroid Build Coastguard Worker enum perf_hw_cache_id {
37*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_L1D = 0,
38*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_L1I = 1,
39*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_LL = 2,
40*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_DTLB = 3,
41*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_ITLB = 4,
42*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_BPU = 5,
43*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_NODE = 6,
44*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_MAX,
45*8d67ca89SAndroid Build Coastguard Worker };
46*8d67ca89SAndroid Build Coastguard Worker enum perf_hw_cache_op_id {
47*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_OP_READ = 0,
48*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_OP_WRITE = 1,
49*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
50*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_OP_MAX,
51*8d67ca89SAndroid Build Coastguard Worker };
52*8d67ca89SAndroid Build Coastguard Worker enum perf_hw_cache_op_result_id {
53*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
54*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
55*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_HW_CACHE_RESULT_MAX,
56*8d67ca89SAndroid Build Coastguard Worker };
57*8d67ca89SAndroid Build Coastguard Worker enum perf_sw_ids {
58*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_CPU_CLOCK = 0,
59*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_TASK_CLOCK = 1,
60*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_PAGE_FAULTS = 2,
61*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
62*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_CPU_MIGRATIONS = 4,
63*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
64*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
65*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
66*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_EMULATION_FAULTS = 8,
67*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_DUMMY = 9,
68*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_BPF_OUTPUT = 10,
69*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_CGROUP_SWITCHES = 11,
70*8d67ca89SAndroid Build Coastguard Worker   PERF_COUNT_SW_MAX,
71*8d67ca89SAndroid Build Coastguard Worker };
72*8d67ca89SAndroid Build Coastguard Worker enum perf_event_sample_format {
73*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_IP = 1U << 0,
74*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_TID = 1U << 1,
75*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_TIME = 1U << 2,
76*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_ADDR = 1U << 3,
77*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_READ = 1U << 4,
78*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_CALLCHAIN = 1U << 5,
79*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_ID = 1U << 6,
80*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_CPU = 1U << 7,
81*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_PERIOD = 1U << 8,
82*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_STREAM_ID = 1U << 9,
83*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_RAW = 1U << 10,
84*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_STACK = 1U << 11,
85*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_REGS_USER = 1U << 12,
86*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_STACK_USER = 1U << 13,
87*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_WEIGHT = 1U << 14,
88*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_DATA_SRC = 1U << 15,
89*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_IDENTIFIER = 1U << 16,
90*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_TRANSACTION = 1U << 17,
91*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_REGS_INTR = 1U << 18,
92*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_PHYS_ADDR = 1U << 19,
93*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_AUX = 1U << 20,
94*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_CGROUP = 1U << 21,
95*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_DATA_PAGE_SIZE = 1U << 22,
96*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
97*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
98*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_MAX = 1U << 25,
99*8d67ca89SAndroid Build Coastguard Worker };
100*8d67ca89SAndroid Build Coastguard Worker #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
101*8d67ca89SAndroid Build Coastguard Worker enum perf_branch_sample_type_shift {
102*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_USER_SHIFT = 0,
103*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_KERNEL_SHIFT = 1,
104*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_HV_SHIFT = 2,
105*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ANY_SHIFT = 3,
106*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT = 4,
107*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT = 5,
108*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_IND_CALL_SHIFT = 6,
109*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT = 7,
110*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_IN_TX_SHIFT = 8,
111*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_NO_TX_SHIFT = 9,
112*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_COND_SHIFT = 10,
113*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT = 11,
114*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT = 12,
115*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_CALL_SHIFT = 13,
116*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT = 14,
117*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
118*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
119*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
120*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
121*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_COUNTERS_SHIFT = 19,
122*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_MAX_SHIFT
123*8d67ca89SAndroid Build Coastguard Worker };
124*8d67ca89SAndroid Build Coastguard Worker enum perf_branch_sample_type {
125*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_USER = 1U << PERF_SAMPLE_BRANCH_USER_SHIFT,
126*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_KERNEL = 1U << PERF_SAMPLE_BRANCH_KERNEL_SHIFT,
127*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_HV = 1U << PERF_SAMPLE_BRANCH_HV_SHIFT,
128*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ANY = 1U << PERF_SAMPLE_BRANCH_ANY_SHIFT,
129*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ANY_CALL = 1U << PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT,
130*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ANY_RETURN = 1U << PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT,
131*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_IND_CALL = 1U << PERF_SAMPLE_BRANCH_IND_CALL_SHIFT,
132*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_ABORT_TX = 1U << PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT,
133*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_IN_TX = 1U << PERF_SAMPLE_BRANCH_IN_TX_SHIFT,
134*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_NO_TX = 1U << PERF_SAMPLE_BRANCH_NO_TX_SHIFT,
135*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_COND = 1U << PERF_SAMPLE_BRANCH_COND_SHIFT,
136*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_CALL_STACK = 1U << PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT,
137*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_IND_JUMP = 1U << PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT,
138*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_CALL = 1U << PERF_SAMPLE_BRANCH_CALL_SHIFT,
139*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_NO_FLAGS = 1U << PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT,
140*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
141*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
142*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
143*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
144*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_COUNTERS = 1U << PERF_SAMPLE_BRANCH_COUNTERS_SHIFT,
145*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
146*8d67ca89SAndroid Build Coastguard Worker };
147*8d67ca89SAndroid Build Coastguard Worker enum {
148*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_UNKNOWN = 0,
149*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_COND = 1,
150*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_UNCOND = 2,
151*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_IND = 3,
152*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_CALL = 4,
153*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_IND_CALL = 5,
154*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_RET = 6,
155*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SYSCALL = 7,
156*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SYSRET = 8,
157*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_COND_CALL = 9,
158*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_COND_RET = 10,
159*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_ERET = 11,
160*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_IRQ = 12,
161*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SERROR = 13,
162*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NO_TX = 14,
163*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_EXTEND_ABI = 15,
164*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_MAX,
165*8d67ca89SAndroid Build Coastguard Worker };
166*8d67ca89SAndroid Build Coastguard Worker enum {
167*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SPEC_NA = 0,
168*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SPEC_WRONG_PATH = 1,
169*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NON_SPEC_CORRECT_PATH = 2,
170*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SPEC_CORRECT_PATH = 3,
171*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_SPEC_MAX,
172*8d67ca89SAndroid Build Coastguard Worker };
173*8d67ca89SAndroid Build Coastguard Worker enum {
174*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_FAULT_ALGN = 0,
175*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_FAULT_DATA = 1,
176*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_FAULT_INST = 2,
177*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_ARCH_1 = 3,
178*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_ARCH_2 = 4,
179*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_ARCH_3 = 5,
180*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_ARCH_4 = 6,
181*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_ARCH_5 = 7,
182*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_NEW_MAX,
183*8d67ca89SAndroid Build Coastguard Worker };
184*8d67ca89SAndroid Build Coastguard Worker enum {
185*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_PRIV_UNKNOWN = 0,
186*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_PRIV_USER = 1,
187*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_PRIV_KERNEL = 2,
188*8d67ca89SAndroid Build Coastguard Worker   PERF_BR_PRIV_HV = 3,
189*8d67ca89SAndroid Build Coastguard Worker };
190*8d67ca89SAndroid Build Coastguard Worker #define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
191*8d67ca89SAndroid Build Coastguard Worker #define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
192*8d67ca89SAndroid Build Coastguard Worker #define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
193*8d67ca89SAndroid Build Coastguard Worker #define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
194*8d67ca89SAndroid Build Coastguard Worker #define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
195*8d67ca89SAndroid Build Coastguard Worker #define PERF_SAMPLE_BRANCH_PLM_ALL (PERF_SAMPLE_BRANCH_USER | PERF_SAMPLE_BRANCH_KERNEL | PERF_SAMPLE_BRANCH_HV)
196*8d67ca89SAndroid Build Coastguard Worker enum perf_sample_regs_abi {
197*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_REGS_ABI_NONE = 0,
198*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_REGS_ABI_32 = 1,
199*8d67ca89SAndroid Build Coastguard Worker   PERF_SAMPLE_REGS_ABI_64 = 2,
200*8d67ca89SAndroid Build Coastguard Worker };
201*8d67ca89SAndroid Build Coastguard Worker enum {
202*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_ELISION = (1 << 0),
203*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_TRANSACTION = (1 << 1),
204*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_SYNC = (1 << 2),
205*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_ASYNC = (1 << 3),
206*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_RETRY = (1 << 4),
207*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_CONFLICT = (1 << 5),
208*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_CAPACITY_WRITE = (1 << 6),
209*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_CAPACITY_READ = (1 << 7),
210*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_MAX = (1 << 8),
211*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_ABORT_MASK = (0xffffffffULL << 32),
212*8d67ca89SAndroid Build Coastguard Worker   PERF_TXN_ABORT_SHIFT = 32,
213*8d67ca89SAndroid Build Coastguard Worker };
214*8d67ca89SAndroid Build Coastguard Worker enum perf_event_read_format {
215*8d67ca89SAndroid Build Coastguard Worker   PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0,
216*8d67ca89SAndroid Build Coastguard Worker   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
217*8d67ca89SAndroid Build Coastguard Worker   PERF_FORMAT_ID = 1U << 2,
218*8d67ca89SAndroid Build Coastguard Worker   PERF_FORMAT_GROUP = 1U << 3,
219*8d67ca89SAndroid Build Coastguard Worker   PERF_FORMAT_LOST = 1U << 4,
220*8d67ca89SAndroid Build Coastguard Worker   PERF_FORMAT_MAX = 1U << 5,
221*8d67ca89SAndroid Build Coastguard Worker };
222*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER0 64
223*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER1 72
224*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER2 80
225*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER3 96
226*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER4 104
227*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER5 112
228*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER6 120
229*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER7 128
230*8d67ca89SAndroid Build Coastguard Worker #define PERF_ATTR_SIZE_VER8 136
231*8d67ca89SAndroid Build Coastguard Worker struct perf_event_attr {
232*8d67ca89SAndroid Build Coastguard Worker   __u32 type;
233*8d67ca89SAndroid Build Coastguard Worker   __u32 size;
234*8d67ca89SAndroid Build Coastguard Worker   __u64 config;
235*8d67ca89SAndroid Build Coastguard Worker   union {
236*8d67ca89SAndroid Build Coastguard Worker     __u64 sample_period;
237*8d67ca89SAndroid Build Coastguard Worker     __u64 sample_freq;
238*8d67ca89SAndroid Build Coastguard Worker   };
239*8d67ca89SAndroid Build Coastguard Worker   __u64 sample_type;
240*8d67ca89SAndroid Build Coastguard Worker   __u64 read_format;
241*8d67ca89SAndroid Build Coastguard Worker   __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, ksymbol : 1, bpf_event : 1, aux_output : 1, cgroup : 1, text_poke : 1, build_id : 1, inherit_thread : 1, remove_on_exec : 1, sigtrap : 1, __reserved_1 : 26;
242*8d67ca89SAndroid Build Coastguard Worker   union {
243*8d67ca89SAndroid Build Coastguard Worker     __u32 wakeup_events;
244*8d67ca89SAndroid Build Coastguard Worker     __u32 wakeup_watermark;
245*8d67ca89SAndroid Build Coastguard Worker   };
246*8d67ca89SAndroid Build Coastguard Worker   __u32 bp_type;
247*8d67ca89SAndroid Build Coastguard Worker   union {
248*8d67ca89SAndroid Build Coastguard Worker     __u64 bp_addr;
249*8d67ca89SAndroid Build Coastguard Worker     __u64 kprobe_func;
250*8d67ca89SAndroid Build Coastguard Worker     __u64 uprobe_path;
251*8d67ca89SAndroid Build Coastguard Worker     __u64 config1;
252*8d67ca89SAndroid Build Coastguard Worker   };
253*8d67ca89SAndroid Build Coastguard Worker   union {
254*8d67ca89SAndroid Build Coastguard Worker     __u64 bp_len;
255*8d67ca89SAndroid Build Coastguard Worker     __u64 kprobe_addr;
256*8d67ca89SAndroid Build Coastguard Worker     __u64 probe_offset;
257*8d67ca89SAndroid Build Coastguard Worker     __u64 config2;
258*8d67ca89SAndroid Build Coastguard Worker   };
259*8d67ca89SAndroid Build Coastguard Worker   __u64 branch_sample_type;
260*8d67ca89SAndroid Build Coastguard Worker   __u64 sample_regs_user;
261*8d67ca89SAndroid Build Coastguard Worker   __u32 sample_stack_user;
262*8d67ca89SAndroid Build Coastguard Worker   __s32 clockid;
263*8d67ca89SAndroid Build Coastguard Worker   __u64 sample_regs_intr;
264*8d67ca89SAndroid Build Coastguard Worker   __u32 aux_watermark;
265*8d67ca89SAndroid Build Coastguard Worker   __u16 sample_max_stack;
266*8d67ca89SAndroid Build Coastguard Worker   __u16 __reserved_2;
267*8d67ca89SAndroid Build Coastguard Worker   __u32 aux_sample_size;
268*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved_3;
269*8d67ca89SAndroid Build Coastguard Worker   __u64 sig_data;
270*8d67ca89SAndroid Build Coastguard Worker   __u64 config3;
271*8d67ca89SAndroid Build Coastguard Worker };
272*8d67ca89SAndroid Build Coastguard Worker struct perf_event_query_bpf {
273*8d67ca89SAndroid Build Coastguard Worker   __u32 ids_len;
274*8d67ca89SAndroid Build Coastguard Worker   __u32 prog_cnt;
275*8d67ca89SAndroid Build Coastguard Worker   __u32 ids[];
276*8d67ca89SAndroid Build Coastguard Worker };
277*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
278*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
279*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_REFRESH _IO('$', 2)
280*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_RESET _IO('$', 3)
281*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64)
282*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_SET_OUTPUT _IO('$', 5)
283*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *)
284*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *)
285*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_SET_BPF _IOW('$', 8, __u32)
286*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_PAUSE_OUTPUT _IOW('$', 9, __u32)
287*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_QUERY_BPF _IOWR('$', 10, struct perf_event_query_bpf *)
288*8d67ca89SAndroid Build Coastguard Worker #define PERF_EVENT_IOC_MODIFY_ATTRIBUTES _IOW('$', 11, struct perf_event_attr *)
289*8d67ca89SAndroid Build Coastguard Worker enum perf_event_ioc_flags {
290*8d67ca89SAndroid Build Coastguard Worker   PERF_IOC_FLAG_GROUP = 1U << 0,
291*8d67ca89SAndroid Build Coastguard Worker };
292*8d67ca89SAndroid Build Coastguard Worker struct perf_event_mmap_page {
293*8d67ca89SAndroid Build Coastguard Worker   __u32 version;
294*8d67ca89SAndroid Build Coastguard Worker   __u32 compat_version;
295*8d67ca89SAndroid Build Coastguard Worker   __u32 lock;
296*8d67ca89SAndroid Build Coastguard Worker   __u32 index;
297*8d67ca89SAndroid Build Coastguard Worker   __s64 offset;
298*8d67ca89SAndroid Build Coastguard Worker   __u64 time_enabled;
299*8d67ca89SAndroid Build Coastguard Worker   __u64 time_running;
300*8d67ca89SAndroid Build Coastguard Worker   union {
301*8d67ca89SAndroid Build Coastguard Worker     __u64 capabilities;
302*8d67ca89SAndroid Build Coastguard Worker     struct {
303*8d67ca89SAndroid Build Coastguard Worker       __u64 cap_bit0 : 1, cap_bit0_is_deprecated : 1, cap_user_rdpmc : 1, cap_user_time : 1, cap_user_time_zero : 1, cap_user_time_short : 1, cap_____res : 58;
304*8d67ca89SAndroid Build Coastguard Worker     };
305*8d67ca89SAndroid Build Coastguard Worker   };
306*8d67ca89SAndroid Build Coastguard Worker   __u16 pmc_width;
307*8d67ca89SAndroid Build Coastguard Worker   __u16 time_shift;
308*8d67ca89SAndroid Build Coastguard Worker   __u32 time_mult;
309*8d67ca89SAndroid Build Coastguard Worker   __u64 time_offset;
310*8d67ca89SAndroid Build Coastguard Worker   __u64 time_zero;
311*8d67ca89SAndroid Build Coastguard Worker   __u32 size;
312*8d67ca89SAndroid Build Coastguard Worker   __u32 __reserved_1;
313*8d67ca89SAndroid Build Coastguard Worker   __u64 time_cycles;
314*8d67ca89SAndroid Build Coastguard Worker   __u64 time_mask;
315*8d67ca89SAndroid Build Coastguard Worker   __u8 __reserved[116 * 8];
316*8d67ca89SAndroid Build Coastguard Worker   __u64 data_head;
317*8d67ca89SAndroid Build Coastguard Worker   __u64 data_tail;
318*8d67ca89SAndroid Build Coastguard Worker   __u64 data_offset;
319*8d67ca89SAndroid Build Coastguard Worker   __u64 data_size;
320*8d67ca89SAndroid Build Coastguard Worker   __u64 aux_head;
321*8d67ca89SAndroid Build Coastguard Worker   __u64 aux_tail;
322*8d67ca89SAndroid Build Coastguard Worker   __u64 aux_offset;
323*8d67ca89SAndroid Build Coastguard Worker   __u64 aux_size;
324*8d67ca89SAndroid Build Coastguard Worker };
325*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0)
326*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0)
327*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_KERNEL (1 << 0)
328*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_USER (2 << 0)
329*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_HYPERVISOR (3 << 0)
330*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0)
331*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_GUEST_USER (5 << 0)
332*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT (1 << 12)
333*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_MMAP_DATA (1 << 13)
334*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_COMM_EXEC (1 << 13)
335*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_FORK_EXEC (1 << 13)
336*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_SWITCH_OUT (1 << 13)
337*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_EXACT_IP (1 << 14)
338*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_SWITCH_OUT_PREEMPT (1 << 14)
339*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_MMAP_BUILD_ID (1 << 14)
340*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_MISC_EXT_RESERVED (1 << 15)
341*8d67ca89SAndroid Build Coastguard Worker struct perf_event_header {
342*8d67ca89SAndroid Build Coastguard Worker   __u32 type;
343*8d67ca89SAndroid Build Coastguard Worker   __u16 misc;
344*8d67ca89SAndroid Build Coastguard Worker   __u16 size;
345*8d67ca89SAndroid Build Coastguard Worker };
346*8d67ca89SAndroid Build Coastguard Worker struct perf_ns_link_info {
347*8d67ca89SAndroid Build Coastguard Worker   __u64 dev;
348*8d67ca89SAndroid Build Coastguard Worker   __u64 ino;
349*8d67ca89SAndroid Build Coastguard Worker };
350*8d67ca89SAndroid Build Coastguard Worker enum {
351*8d67ca89SAndroid Build Coastguard Worker   NET_NS_INDEX = 0,
352*8d67ca89SAndroid Build Coastguard Worker   UTS_NS_INDEX = 1,
353*8d67ca89SAndroid Build Coastguard Worker   IPC_NS_INDEX = 2,
354*8d67ca89SAndroid Build Coastguard Worker   PID_NS_INDEX = 3,
355*8d67ca89SAndroid Build Coastguard Worker   USER_NS_INDEX = 4,
356*8d67ca89SAndroid Build Coastguard Worker   MNT_NS_INDEX = 5,
357*8d67ca89SAndroid Build Coastguard Worker   CGROUP_NS_INDEX = 6,
358*8d67ca89SAndroid Build Coastguard Worker   NR_NAMESPACES,
359*8d67ca89SAndroid Build Coastguard Worker };
360*8d67ca89SAndroid Build Coastguard Worker enum perf_event_type {
361*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_MMAP = 1,
362*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_LOST = 2,
363*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_COMM = 3,
364*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_EXIT = 4,
365*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_THROTTLE = 5,
366*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_UNTHROTTLE = 6,
367*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_FORK = 7,
368*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_READ = 8,
369*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_SAMPLE = 9,
370*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_MMAP2 = 10,
371*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_AUX = 11,
372*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_ITRACE_START = 12,
373*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_LOST_SAMPLES = 13,
374*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_SWITCH = 14,
375*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_SWITCH_CPU_WIDE = 15,
376*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_NAMESPACES = 16,
377*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_KSYMBOL = 17,
378*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_BPF_EVENT = 18,
379*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_CGROUP = 19,
380*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_TEXT_POKE = 20,
381*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_AUX_OUTPUT_HW_ID = 21,
382*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_MAX,
383*8d67ca89SAndroid Build Coastguard Worker };
384*8d67ca89SAndroid Build Coastguard Worker enum perf_record_ksymbol_type {
385*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
386*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
387*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_KSYMBOL_TYPE_OOL = 2,
388*8d67ca89SAndroid Build Coastguard Worker   PERF_RECORD_KSYMBOL_TYPE_MAX
389*8d67ca89SAndroid Build Coastguard Worker };
390*8d67ca89SAndroid Build Coastguard Worker #define PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER (1 << 0)
391*8d67ca89SAndroid Build Coastguard Worker enum perf_bpf_event_type {
392*8d67ca89SAndroid Build Coastguard Worker   PERF_BPF_EVENT_UNKNOWN = 0,
393*8d67ca89SAndroid Build Coastguard Worker   PERF_BPF_EVENT_PROG_LOAD = 1,
394*8d67ca89SAndroid Build Coastguard Worker   PERF_BPF_EVENT_PROG_UNLOAD = 2,
395*8d67ca89SAndroid Build Coastguard Worker   PERF_BPF_EVENT_MAX,
396*8d67ca89SAndroid Build Coastguard Worker };
397*8d67ca89SAndroid Build Coastguard Worker #define PERF_MAX_STACK_DEPTH 127
398*8d67ca89SAndroid Build Coastguard Worker #define PERF_MAX_CONTEXTS_PER_STACK 8
399*8d67ca89SAndroid Build Coastguard Worker enum perf_callchain_context {
400*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_HV = (__u64) - 32,
401*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_KERNEL = (__u64) - 128,
402*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_USER = (__u64) - 512,
403*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_GUEST = (__u64) - 2048,
404*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_GUEST_KERNEL = (__u64) - 2176,
405*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_GUEST_USER = (__u64) - 2560,
406*8d67ca89SAndroid Build Coastguard Worker   PERF_CONTEXT_MAX = (__u64) - 4095,
407*8d67ca89SAndroid Build Coastguard Worker };
408*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_TRUNCATED 0x01
409*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_OVERWRITE 0x02
410*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_PARTIAL 0x04
411*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_COLLISION 0x08
412*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK 0xff00
413*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT 0x0000
414*8d67ca89SAndroid Build Coastguard Worker #define PERF_AUX_FLAG_CORESIGHT_FORMAT_RAW 0x0100
415*8d67ca89SAndroid Build Coastguard Worker #define PERF_FLAG_FD_NO_GROUP (1UL << 0)
416*8d67ca89SAndroid Build Coastguard Worker #define PERF_FLAG_FD_OUTPUT (1UL << 1)
417*8d67ca89SAndroid Build Coastguard Worker #define PERF_FLAG_PID_CGROUP (1UL << 2)
418*8d67ca89SAndroid Build Coastguard Worker #define PERF_FLAG_FD_CLOEXEC (1UL << 3)
419*8d67ca89SAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN_BITFIELD
420*8d67ca89SAndroid Build Coastguard Worker union perf_mem_data_src {
421*8d67ca89SAndroid Build Coastguard Worker   __u64 val;
422*8d67ca89SAndroid Build Coastguard Worker   struct {
423*8d67ca89SAndroid Build Coastguard Worker     __u64 mem_op : 5, mem_lvl : 14, mem_snoop : 5, mem_lock : 2, mem_dtlb : 7, mem_lvl_num : 4, mem_remote : 1, mem_snoopx : 2, mem_blk : 3, mem_hops : 3, mem_rsvd : 18;
424*8d67ca89SAndroid Build Coastguard Worker   };
425*8d67ca89SAndroid Build Coastguard Worker };
426*8d67ca89SAndroid Build Coastguard Worker #elif defined(__BIG_ENDIAN_BITFIELD)
427*8d67ca89SAndroid Build Coastguard Worker union perf_mem_data_src {
428*8d67ca89SAndroid Build Coastguard Worker   __u64 val;
429*8d67ca89SAndroid Build Coastguard Worker   struct {
430*8d67ca89SAndroid Build Coastguard Worker     __u64 mem_rsvd : 18, mem_hops : 3, mem_blk : 3, mem_snoopx : 2, mem_remote : 1, mem_lvl_num : 4, mem_dtlb : 7, mem_lock : 2, mem_snoop : 5, mem_lvl : 14, mem_op : 5;
431*8d67ca89SAndroid Build Coastguard Worker   };
432*8d67ca89SAndroid Build Coastguard Worker };
433*8d67ca89SAndroid Build Coastguard Worker #else
434*8d67ca89SAndroid Build Coastguard Worker #error "Unknown endianness"
435*8d67ca89SAndroid Build Coastguard Worker #endif
436*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_OP_NA 0x01
437*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_OP_LOAD 0x02
438*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_OP_STORE 0x04
439*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_OP_PFETCH 0x08
440*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_OP_EXEC 0x10
441*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_OP_SHIFT 0
442*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_NA 0x01
443*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_HIT 0x02
444*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_MISS 0x04
445*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_L1 0x08
446*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_LFB 0x10
447*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_L2 0x20
448*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_L3 0x40
449*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_LOC_RAM 0x80
450*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_REM_RAM1 0x100
451*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_REM_RAM2 0x200
452*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_REM_CCE1 0x400
453*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_REM_CCE2 0x800
454*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_IO 0x1000
455*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_UNC 0x2000
456*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVL_SHIFT 5
457*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_REMOTE_REMOTE 0x01
458*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_REMOTE_SHIFT 37
459*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_L1 0x01
460*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_L2 0x02
461*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_L3 0x03
462*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_L4 0x04
463*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_L2_MHB 0x05
464*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_MSC 0x06
465*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_UNC 0x08
466*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_CXL 0x09
467*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_IO 0x0a
468*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
469*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_LFB 0x0c
470*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_RAM 0x0d
471*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_PMEM 0x0e
472*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_NA 0x0f
473*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LVLNUM_SHIFT 33
474*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOP_NA 0x01
475*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOP_NONE 0x02
476*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOP_HIT 0x04
477*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOP_MISS 0x08
478*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOP_HITM 0x10
479*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOP_SHIFT 19
480*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOPX_FWD 0x01
481*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOPX_PEER 0x02
482*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_SNOOPX_SHIFT 38
483*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LOCK_NA 0x01
484*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LOCK_LOCKED 0x02
485*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_LOCK_SHIFT 24
486*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_NA 0x01
487*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_HIT 0x02
488*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_MISS 0x04
489*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_L1 0x08
490*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_L2 0x10
491*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_WK 0x20
492*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_OS 0x40
493*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_TLB_SHIFT 26
494*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_BLK_NA 0x01
495*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_BLK_DATA 0x02
496*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_BLK_ADDR 0x04
497*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_BLK_SHIFT 40
498*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_HOPS_0 0x01
499*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_HOPS_1 0x02
500*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_HOPS_2 0x03
501*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_HOPS_3 0x04
502*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_HOPS_SHIFT 43
503*8d67ca89SAndroid Build Coastguard Worker #define PERF_MEM_S(a,s) (((__u64) PERF_MEM_ ##a ##_ ##s) << PERF_MEM_ ##a ##_SHIFT)
504*8d67ca89SAndroid Build Coastguard Worker struct perf_branch_entry {
505*8d67ca89SAndroid Build Coastguard Worker   __u64 from;
506*8d67ca89SAndroid Build Coastguard Worker   __u64 to;
507*8d67ca89SAndroid Build Coastguard Worker   __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
508*8d67ca89SAndroid Build Coastguard Worker };
509*8d67ca89SAndroid Build Coastguard Worker #define PERF_BRANCH_ENTRY_INFO_BITS_MAX 33
510*8d67ca89SAndroid Build Coastguard Worker union perf_sample_weight {
511*8d67ca89SAndroid Build Coastguard Worker   __u64 full;
512*8d67ca89SAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN_BITFIELD
513*8d67ca89SAndroid Build Coastguard Worker   struct {
514*8d67ca89SAndroid Build Coastguard Worker     __u32 var1_dw;
515*8d67ca89SAndroid Build Coastguard Worker     __u16 var2_w;
516*8d67ca89SAndroid Build Coastguard Worker     __u16 var3_w;
517*8d67ca89SAndroid Build Coastguard Worker   };
518*8d67ca89SAndroid Build Coastguard Worker #elif defined(__BIG_ENDIAN_BITFIELD)
519*8d67ca89SAndroid Build Coastguard Worker   struct {
520*8d67ca89SAndroid Build Coastguard Worker     __u16 var3_w;
521*8d67ca89SAndroid Build Coastguard Worker     __u16 var2_w;
522*8d67ca89SAndroid Build Coastguard Worker     __u32 var1_dw;
523*8d67ca89SAndroid Build Coastguard Worker   };
524*8d67ca89SAndroid Build Coastguard Worker #else
525*8d67ca89SAndroid Build Coastguard Worker #error "Unknown endianness"
526*8d67ca89SAndroid Build Coastguard Worker #endif
527*8d67ca89SAndroid Build Coastguard Worker };
528*8d67ca89SAndroid Build Coastguard Worker #endif
529