6292b7c41bacffd4743dba904d9e89dc0f679390
[linux-2.6-microblaze.git] / tools / perf / lib / include / perf / event.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __LIBPERF_EVENT_H
3 #define __LIBPERF_EVENT_H
4
5 #include <linux/perf_event.h>
6 #include <linux/types.h>
7 #include <linux/limits.h>
8 #include <linux/bpf.h>
9 #include <sys/types.h> /* pid_t */
10
11 struct perf_record_mmap {
12         struct perf_event_header header;
13         __u32                    pid, tid;
14         __u64                    start;
15         __u64                    len;
16         __u64                    pgoff;
17         char                     filename[PATH_MAX];
18 };
19
20 struct perf_record_mmap2 {
21         struct perf_event_header header;
22         __u32                    pid, tid;
23         __u64                    start;
24         __u64                    len;
25         __u64                    pgoff;
26         __u32                    maj;
27         __u32                    min;
28         __u64                    ino;
29         __u64                    ino_generation;
30         __u32                    prot;
31         __u32                    flags;
32         char                     filename[PATH_MAX];
33 };
34
35 struct perf_record_comm {
36         struct perf_event_header header;
37         __u32                    pid, tid;
38         char                     comm[16];
39 };
40
41 struct perf_record_namespaces {
42         struct perf_event_header header;
43         __u32                    pid, tid;
44         __u64                    nr_namespaces;
45         struct perf_ns_link_info link_info[];
46 };
47
48 struct perf_record_fork {
49         struct perf_event_header header;
50         __u32                    pid, ppid;
51         __u32                    tid, ptid;
52         __u64                    time;
53 };
54
55 struct perf_record_lost {
56         struct perf_event_header header;
57         __u64                    id;
58         __u64                    lost;
59 };
60
61 struct perf_record_lost_samples {
62         struct perf_event_header header;
63         __u64                    lost;
64 };
65
66 /*
67  * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
68  */
69 struct perf_record_read {
70         struct perf_event_header header;
71         __u32                    pid, tid;
72         __u64                    value;
73         __u64                    time_enabled;
74         __u64                    time_running;
75         __u64                    id;
76 };
77
78 struct perf_record_throttle {
79         struct perf_event_header header;
80         __u64                    time;
81         __u64                    id;
82         __u64                    stream_id;
83 };
84
85 #ifndef KSYM_NAME_LEN
86 #define KSYM_NAME_LEN 256
87 #endif
88
89 struct perf_record_ksymbol {
90         struct perf_event_header header;
91         __u64                    addr;
92         __u32                    len;
93         __u16                    ksym_type;
94         __u16                    flags;
95         char                     name[KSYM_NAME_LEN];
96 };
97
98 struct perf_record_bpf_event {
99         struct perf_event_header header;
100         __u16                    type;
101         __u16                    flags;
102         __u32                    id;
103
104         /* for bpf_prog types */
105         __u8                     tag[BPF_TAG_SIZE];  // prog tag
106 };
107
108 struct perf_record_sample {
109         struct perf_event_header header;
110         __u64                    array[];
111 };
112
113 struct attr_event {
114         struct perf_event_header header;
115         struct perf_event_attr   attr;
116         __u64                    id[];
117 };
118
119 enum {
120         PERF_CPU_MAP__CPUS = 0,
121         PERF_CPU_MAP__MASK = 1,
122 };
123
124 struct cpu_map_entries {
125         __u16                    nr;
126         __u16                    cpu[];
127 };
128
129 struct cpu_map_mask {
130         __u16                    nr;
131         __u16                    long_size;
132         unsigned long            mask[];
133 };
134
135 struct cpu_map_data {
136         __u16                    type;
137         char                     data[];
138 };
139
140 struct cpu_map_event {
141         struct perf_event_header header;
142         struct cpu_map_data      data;
143 };
144
145 enum {
146         PERF_EVENT_UPDATE__UNIT  = 0,
147         PERF_EVENT_UPDATE__SCALE = 1,
148         PERF_EVENT_UPDATE__NAME  = 2,
149         PERF_EVENT_UPDATE__CPUS  = 3,
150 };
151
152 struct event_update_event_cpus {
153         struct cpu_map_data      cpus;
154 };
155
156 struct event_update_event_scale {
157         double                   scale;
158 };
159
160 struct event_update_event {
161         struct perf_event_header header;
162         __u64                    type;
163         __u64                    id;
164         char                     data[];
165 };
166
167 #define MAX_EVENT_NAME 64
168
169 struct perf_trace_event_type {
170         __u64                    event_id;
171         char                     name[MAX_EVENT_NAME];
172 };
173
174 struct event_type_event {
175         struct perf_event_header         header;
176         struct perf_trace_event_type     event_type;
177 };
178
179 struct tracing_data_event {
180         struct perf_event_header header;
181         __u32                    size;
182 };
183
184 struct build_id_event {
185         struct perf_event_header header;
186         pid_t                    pid;
187         __u8                     build_id[24];
188         char                     filename[];
189 };
190
191 struct id_index_entry {
192         __u64                    id;
193         __u64                    idx;
194         __u64                    cpu;
195         __u64                    tid;
196 };
197
198 struct id_index_event {
199         struct perf_event_header header;
200         __u64                    nr;
201         struct id_index_entry    entries[0];
202 };
203
204 struct auxtrace_info_event {
205         struct perf_event_header header;
206         __u32                    type;
207         __u32                    reserved__; /* For alignment */
208         __u64                    priv[];
209 };
210
211 struct auxtrace_event {
212         struct perf_event_header header;
213         __u64                    size;
214         __u64                    offset;
215         __u64                    reference;
216         __u32                    idx;
217         __u32                    tid;
218         __u32                    cpu;
219         __u32                    reserved__; /* For alignment */
220 };
221
222 #define MAX_AUXTRACE_ERROR_MSG 64
223
224 struct auxtrace_error_event {
225         struct perf_event_header header;
226         __u32                    type;
227         __u32                    code;
228         __u32                    cpu;
229         __u32                    pid;
230         __u32                    tid;
231         __u32                    fmt;
232         __u64                    ip;
233         __u64                    time;
234         char                     msg[MAX_AUXTRACE_ERROR_MSG];
235 };
236
237 #endif /* __LIBPERF_EVENT_H */