Linux Perf
event.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __PERF_RECORD_H
3 #define __PERF_RECORD_H
4 
5 #include <limits.h>
6 #include <stdio.h>
7 #include <linux/kernel.h>
8 
9 #include "../perf.h"
10 #include "build-id.h"
11 #include "perf_regs.h"
12 
13 struct mmap_event {
14  struct perf_event_header header;
15  u32 pid, tid;
16  u64 start;
17  u64 len;
18  u64 pgoff;
20 };
21 
22 struct mmap2_event {
23  struct perf_event_header header;
24  u32 pid, tid;
25  u64 start;
26  u64 len;
27  u64 pgoff;
28  u32 maj;
29  u32 min;
30  u64 ino;
32  u32 prot;
33  u32 flags;
35 };
36 
37 struct comm_event {
38  struct perf_event_header header;
39  u32 pid, tid;
40  char comm[16];
41 };
42 
44  struct perf_event_header header;
45  u32 pid, tid;
47  struct perf_ns_link_info link_info[];
48 };
49 
50 struct fork_event {
51  struct perf_event_header header;
52  u32 pid, ppid;
53  u32 tid, ptid;
54  u64 time;
55 };
56 
57 struct lost_event {
58  struct perf_event_header header;
59  u64 id;
60  u64 lost;
61 };
62 
64  struct perf_event_header header;
65  u64 lost;
66 };
67 
68 /*
69  * PERF_FORMAT_ENABLED | PERF_FORMAT_RUNNING | PERF_FORMAT_ID
70  */
71 struct read_event {
72  struct perf_event_header header;
73  u32 pid, tid;
74  u64 value;
77  u64 id;
78 };
79 
81  struct perf_event_header header;
82  u64 time;
83  u64 id;
84  u64 stream_id;
85 };
86 
87 #define PERF_SAMPLE_MASK \
88  (PERF_SAMPLE_IP | PERF_SAMPLE_TID | \
89  PERF_SAMPLE_TIME | PERF_SAMPLE_ADDR | \
90  PERF_SAMPLE_ID | PERF_SAMPLE_STREAM_ID | \
91  PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD | \
92  PERF_SAMPLE_IDENTIFIER)
93 
94 /* perf sample has 16 bits size limit */
95 #define PERF_SAMPLE_MAX_SIZE (1 << 16)
96 
97 struct sample_event {
98  struct perf_event_header header;
99  u64 array[];
100 };
101 
102 struct regs_dump {
103  u64 abi;
104  u64 mask;
105  u64 *regs;
106 
107  /* Cached values/mask filled by first register access. */
108  u64 cache_regs[PERF_REGS_MAX];
110 };
111 
112 struct stack_dump {
113  u16 offset;
114  u64 size;
115  char *data;
116 };
117 
119  u64 value;
120  u64 id;
121 };
122 
123 struct sample_read {
126  union {
127  struct {
128  u64 nr;
130  } group;
131  struct sample_read_value one;
132  };
133 };
134 
135 struct ip_callchain {
136  u64 nr;
137  u64 ips[0];
138 };
139 
140 struct branch_flags {
141  u64 mispred:1;
142  u64 predicted:1;
143  u64 in_tx:1;
144  u64 abort:1;
145  u64 cycles:16;
146  u64 type:4;
147  u64 reserved:40;
148 };
149 
150 struct branch_entry {
151  u64 from;
152  u64 to;
154 };
155 
156 struct branch_stack {
157  u64 nr;
158  struct branch_entry entries[0];
159 };
160 
161 enum {
162  PERF_IP_FLAG_BRANCH = 1ULL << 0,
163  PERF_IP_FLAG_CALL = 1ULL << 1,
164  PERF_IP_FLAG_RETURN = 1ULL << 2,
167  PERF_IP_FLAG_ASYNC = 1ULL << 5,
172  PERF_IP_FLAG_IN_TX = 1ULL << 10,
173 };
174 
175 #define PERF_IP_FLAG_CHARS "bcrosyiABEx"
176 
177 #define PERF_BRANCH_MASK (\
178  PERF_IP_FLAG_BRANCH |\
179  PERF_IP_FLAG_CALL |\
180  PERF_IP_FLAG_RETURN |\
181  PERF_IP_FLAG_CONDITIONAL |\
182  PERF_IP_FLAG_SYSCALLRET |\
183  PERF_IP_FLAG_ASYNC |\
184  PERF_IP_FLAG_INTERRUPT |\
185  PERF_IP_FLAG_TX_ABORT |\
186  PERF_IP_FLAG_TRACE_BEGIN |\
187  PERF_IP_FLAG_TRACE_END)
188 
189 #define MAX_INSN 16
190 
191 struct perf_sample {
192  u64 ip;
193  u32 pid, tid;
194  u64 time;
195  u64 addr;
196  u64 id;
198  u64 period;
199  u64 weight;
201  u32 cpu;
202  u32 raw_size;
203  u64 data_src;
205  u32 flags;
206  u16 insn_len;
208  u16 misc;
209  char insn[MAX_INSN];
210  void *raw_data;
213  struct regs_dump user_regs;
214  struct regs_dump intr_regs;
215  struct stack_dump user_stack;
216  struct sample_read read;
217 };
218 
219 #define PERF_MEM_DATA_SRC_NONE \
220  (PERF_MEM_S(OP, NA) |\
221  PERF_MEM_S(LVL, NA) |\
222  PERF_MEM_S(SNOOP, NA) |\
223  PERF_MEM_S(LOCK, NA) |\
224  PERF_MEM_S(TLB, NA))
225 
227  struct perf_event_header header;
228  pid_t pid;
229  u8 build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))];
230  char filename[];
231 };
232 
233 enum perf_user_event_type { /* above any possible kernel type */
236  PERF_RECORD_HEADER_EVENT_TYPE = 65, /* deprecated */
253 };
254 
258 };
259 
260 /* Attribute type for custom synthesized events */
261 #define PERF_TYPE_SYNTH (INT_MAX + 1U)
262 
263 /* Attribute config for custom synthesized events */
271 };
272 
273 /*
274  * Raw data formats for synthesized events. Note that 4 bytes of padding are
275  * present to match the 'size' member of PERF_SAMPLE_RAW data which is always
276  * 8-byte aligned. That means we must dereference raw_data with an offset of 4.
277  * Refer perf_sample__synth_ptr() and perf_synth__raw_data(). It also means the
278  * structure sizes are 4 bytes bigger than the raw_size, refer
279  * perf_synth__raw_size().
280  */
281 
283  u32 padding;
284  union {
285  struct {
286  u32 ip : 1,
287  reserved : 31;
288  };
289  u32 flags;
290  };
291  u64 payload;
292 };
293 
295  u32 padding;
296  u32 reserved;
297  union {
298  struct {
299  u64 hints : 8,
300  reserved1 : 24,
301  extensions : 2,
302  reserved2 : 30;
303  };
304  u64 payload;
305  };
306 };
307 
309  u32 padding;
310  u32 reserved;
311  union {
312  struct {
313  u64 reserved1 : 7,
314  hw : 1,
315  subcstate : 4,
316  cstate : 4,
317  reserved2 : 48;
318  };
319  u64 payload;
320  };
321 };
322 
324  u32 padding;
325  union {
326  struct {
327  u32 ip : 1,
328  reserved : 31;
329  };
330  u32 flags;
331  };
332 };
333 
335  u32 padding;
336  u32 reserved;
337  union {
338  struct {
339  u64 deepest_cstate : 4,
340  last_cstate : 4,
341  wake_reason : 4,
342  reserved1 : 52;
343  };
344  u64 payload;
345  };
346 };
347 
349  u32 padding;
350  union {
351  struct {
352  u32 cbr : 8,
353  reserved1 : 8,
354  max_nonturbo : 8,
355  reserved2 : 8;
356  };
357  u32 flags;
358  };
359  u32 freq;
361 };
362 
363 /*
364  * raw_data is always 4 bytes from an 8-byte boundary, so subtract 4 to get
365  * 8-byte alignment.
366  */
367 static inline void *perf_sample__synth_ptr(struct perf_sample *sample)
368 {
369  return sample->raw_data - 4;
370 }
371 
372 static inline void *perf_synth__raw_data(void *p)
373 {
374  return p + 4;
375 }
376 
377 #define perf_synth__raw_size(d) (sizeof(d) - 4)
378 
379 #define perf_sample__bad_synth_size(s, d) ((s)->raw_size < sizeof(d) - 4)
380 
381 /*
382  * The kernel collects the number of events it couldn't send in a stretch and
383  * when possible sends this number in a PERF_RECORD_LOST event. The number of
384  * such "chunks" of lost events is stored in .nr_events[PERF_EVENT_LOST] while
385  * total_lost tells exactly how many events the kernel in fact lost, i.e. it is
386  * the sum of all struct lost_event.lost fields reported.
387  *
388  * The kernel discards mixed up samples and sends the number in a
389  * PERF_RECORD_LOST_SAMPLES event. The number of lost-samples events is stored
390  * in .nr_events[PERF_RECORD_LOST_SAMPLES] while total_lost_samples tells
391  * exactly how many samples the kernel in fact dropped, i.e. it is the sum of
392  * all struct lost_samples_event.lost fields reported.
393  *
394  * The total_period is needed because by default auto-freq is used, so
395  * multipling nr_events[PERF_EVENT_SAMPLE] by a frequency isn't possible to get
396  * the total number of low level events, it is necessary to to sum all struct
397  * sample_event.period and stash the result in total_period.
398  */
399 struct events_stats {
407  u32 nr_events[PERF_RECORD_HEADER_MAX];
414  u32 nr_auxtrace_errors[PERF_AUXTRACE_ERROR_MAX];
416 };
417 
418 enum {
421 };
422 
424  u16 nr;
425  u16 cpu[];
426 };
427 
428 struct cpu_map_mask {
429  u16 nr;
431  unsigned long mask[];
432 };
433 
434 struct cpu_map_data {
435  u16 type;
436  char data[];
437 };
438 
440  struct perf_event_header header;
442 };
443 
444 struct attr_event {
445  struct perf_event_header header;
446  struct perf_event_attr attr;
447  u64 id[];
448 };
449 
450 enum {
455 };
456 
459 };
460 
462  double scale;
463 };
464 
466  struct perf_event_header header;
467  u64 type;
468  u64 id;
469 
470  char data[];
471 };
472 
473 #define MAX_EVENT_NAME 64
474 
476  u64 event_id;
478 };
479 
481  struct perf_event_header header;
483 };
484 
486  struct perf_event_header header;
487  u32 size;
488 };
489 
491  u64 id;
492  u64 idx;
493  u64 cpu;
494  u64 tid;
495 };
496 
498  struct perf_event_header header;
499  u64 nr;
500  struct id_index_entry entries[0];
501 };
502 
504  struct perf_event_header header;
505  u32 type;
506  u32 reserved__; /* For alignment */
507  u64 priv[];
508 };
509 
511  struct perf_event_header header;
512  u64 size;
513  u64 offset;
515  u32 idx;
516  u32 tid;
517  u32 cpu;
518  u32 reserved__; /* For alignment */
519 };
520 
521 #define MAX_AUXTRACE_ERROR_MSG 64
522 
524  struct perf_event_header header;
525  u32 type;
526  u32 code;
527  u32 cpu;
528  u32 pid;
529  u32 tid;
530  u32 reserved__; /* For alignment */
531  u64 ip;
533 };
534 
535 struct aux_event {
536  struct perf_event_header header;
538  u64 aux_size;
539  u64 flags;
540 };
541 
543  struct perf_event_header header;
544  u32 pid, tid;
545 };
546 
548  struct perf_event_header header;
551 };
552 
554  u64 pid;
555  char comm[16];
556 };
557 
559  struct perf_event_header header;
560  u64 nr;
561  struct thread_map_event_entry entries[];
562 };
563 
564 enum {
569 };
570 
572  u64 tag;
573  u64 val;
574 };
575 
577  struct perf_event_header header;
578  u64 nr;
579  struct stat_config_event_entry data[];
580 };
581 
582 struct stat_event {
583  struct perf_event_header header;
584 
585  u64 id;
586  u32 cpu;
587  u32 thread;
588 
589  union {
590  struct {
591  u64 val;
592  u64 ena;
593  u64 run;
594  };
595  u64 values[3];
596  };
597 };
598 
599 enum {
602 };
603 
605  struct perf_event_header header;
606  u64 type;
607  u64 time;
608 };
609 
611  struct perf_event_header header;
615 };
616 
618  struct perf_event_header header;
619  u64 feat_id;
620  char data[];
621 };
622 
623 union perf_event {
624  struct perf_event_header header;
625  struct mmap_event mmap;
626  struct mmap2_event mmap2;
627  struct comm_event comm;
629  struct fork_event fork;
630  struct lost_event lost;
631  struct lost_samples_event lost_samples;
632  struct read_event read;
633  struct throttle_event throttle;
635  struct attr_event attr;
636  struct event_update_event event_update;
637  struct event_type_event event_type;
640  struct id_index_event id_index;
641  struct auxtrace_info_event auxtrace_info;
643  struct auxtrace_error_event auxtrace_error;
644  struct aux_event aux;
645  struct itrace_start_event itrace_start;
646  struct context_switch_event context_switch;
650  struct stat_event stat;
651  struct stat_round_event stat_round;
652  struct time_conv_event time_conv;
653  struct feature_event feat;
654 };
655 
656 void perf_event__print_totals(void);
657 
658 struct perf_tool;
659 struct thread_map;
660 struct cpu_map;
661 struct perf_stat_config;
662 struct perf_counts_values;
663 
664 typedef int (*perf_event__handler_t)(struct perf_tool *tool,
665  union perf_event *event,
666  struct perf_sample *sample,
667  struct machine *machine);
668 
670  struct thread_map *threads,
671  perf_event__handler_t process,
672  struct machine *machine, bool mmap_data,
673  unsigned int proc_map_timeout);
675  struct thread_map *threads,
676  perf_event__handler_t process,
677  struct machine *machine);
679  struct cpu_map *cpus,
680  perf_event__handler_t process,
681  struct machine *machine);
683  perf_event__handler_t process,
684  struct machine *machine, bool mmap_data,
685  unsigned int proc_map_timeout,
686  unsigned int nr_threads_synthesize);
688  perf_event__handler_t process,
689  struct machine *machine);
691  struct perf_stat_config *config,
692  perf_event__handler_t process,
693  struct machine *machine);
695  struct stat_config_event *event);
696 int perf_event__synthesize_stat(struct perf_tool *tool,
697  u32 cpu, u32 thread, u64 id,
698  struct perf_counts_values *count,
699  perf_event__handler_t process,
700  struct machine *machine);
702  u64 time, u64 type,
703  perf_event__handler_t process,
704  struct machine *machine);
706  perf_event__handler_t process,
707  struct machine *machine);
708 
709 int perf_event__process_comm(struct perf_tool *tool,
710  union perf_event *event,
711  struct perf_sample *sample,
712  struct machine *machine);
713 int perf_event__process_lost(struct perf_tool *tool,
714  union perf_event *event,
715  struct perf_sample *sample,
716  struct machine *machine);
718  union perf_event *event,
719  struct perf_sample *sample,
720  struct machine *machine);
721 int perf_event__process_aux(struct perf_tool *tool,
722  union perf_event *event,
723  struct perf_sample *sample,
724  struct machine *machine);
726  union perf_event *event,
727  struct perf_sample *sample,
728  struct machine *machine);
729 int perf_event__process_switch(struct perf_tool *tool,
730  union perf_event *event,
731  struct perf_sample *sample,
732  struct machine *machine);
734  union perf_event *event,
735  struct perf_sample *sample,
736  struct machine *machine);
737 int perf_event__process_mmap(struct perf_tool *tool,
738  union perf_event *event,
739  struct perf_sample *sample,
740  struct machine *machine);
741 int perf_event__process_mmap2(struct perf_tool *tool,
742  union perf_event *event,
743  struct perf_sample *sample,
744  struct machine *machine);
745 int perf_event__process_fork(struct perf_tool *tool,
746  union perf_event *event,
747  struct perf_sample *sample,
748  struct machine *machine);
749 int perf_event__process_exit(struct perf_tool *tool,
750  union perf_event *event,
751  struct perf_sample *sample,
752  struct machine *machine);
754  union perf_event *event,
755  struct machine *machine,
756  perf_event__handler_t process);
757 int perf_event__process(struct perf_tool *tool,
758  union perf_event *event,
759  struct perf_sample *sample,
760  struct machine *machine);
761 
762 struct addr_location;
763 
764 int machine__resolve(struct machine *machine, struct addr_location *al,
765  struct perf_sample *sample);
766 
767 void addr_location__put(struct addr_location *al);
768 
769 struct thread;
770 
771 bool is_bts_event(struct perf_event_attr *attr);
772 bool sample_addr_correlates_sym(struct perf_event_attr *attr);
773 void thread__resolve(struct thread *thread, struct addr_location *al,
774  struct perf_sample *sample);
775 
776 const char *perf_event__name(unsigned int id);
777 
778 size_t perf_event__sample_event_size(const struct perf_sample *sample, u64 type,
779  u64 read_format);
780 int perf_event__synthesize_sample(union perf_event *event, u64 type,
781  u64 read_format,
782  const struct perf_sample *sample);
783 
784 pid_t perf_event__synthesize_comm(struct perf_tool *tool,
785  union perf_event *event, pid_t pid,
786  perf_event__handler_t process,
787  struct machine *machine);
788 
790  union perf_event *event,
791  pid_t pid, pid_t tgid,
792  perf_event__handler_t process,
793  struct machine *machine);
794 
796  union perf_event *event,
797  pid_t pid, pid_t tgid,
798  perf_event__handler_t process,
799  struct machine *machine,
800  bool mmap_data,
801  unsigned int proc_map_timeout);
802 
804  perf_event__handler_t process,
805  struct machine *machine);
806 
807 size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp);
808 size_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp);
809 size_t perf_event__fprintf_mmap2(union perf_event *event, FILE *fp);
810 size_t perf_event__fprintf_task(union perf_event *event, FILE *fp);
811 size_t perf_event__fprintf_aux(union perf_event *event, FILE *fp);
812 size_t perf_event__fprintf_itrace_start(union perf_event *event, FILE *fp);
813 size_t perf_event__fprintf_switch(union perf_event *event, FILE *fp);
814 size_t perf_event__fprintf_thread_map(union perf_event *event, FILE *fp);
815 size_t perf_event__fprintf_cpu_map(union perf_event *event, FILE *fp);
816 size_t perf_event__fprintf_namespaces(union perf_event *event, FILE *fp);
817 size_t perf_event__fprintf(union perf_event *event, FILE *fp);
818 
819 int kallsyms__get_function_start(const char *kallsyms_filename,
820  const char *symbol_name, u64 *addr);
821 
822 void *cpu_map_data__alloc(struct cpu_map *map, size_t *size, u16 *type, int *max);
823 void cpu_map_data__synthesize(struct cpu_map_data *data, struct cpu_map *map,
824  u16 type, int max);
825 
826 void event_attr_init(struct perf_event_attr *attr);
827 
828 int perf_event_paranoid(void);
829 
830 extern int sysctl_perf_event_max_stack;
832 
833 #endif /* __PERF_RECORD_H */
u64 cpu
Definition: event.h:493
u64 ino_generation
Definition: event.h:31
u64 aux_offset
Definition: event.h:537
void event_attr_init(struct perf_event_attr *attr)
Definition: util.c:83
Definition: insn.h:36
u64 total_invalid_chains
Definition: event.h:406
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)
Definition: event.c:1171
u64 weight
Definition: event.h:199
int perf_event__process_mmap(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
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)
Definition: event.c:220
u64 aux_size
Definition: event.h:538
int perf_event__synthesize_kernel_mmap(struct perf_tool *tool, perf_event__handler_t process, struct machine *machine)
Definition: event.c:953
u64 pgoff
Definition: event.h:27
u64 pgoff
Definition: event.h:18
size_t perf_event__fprintf_thread_map(union perf_event *event, FILE *fp)
Definition: event.c:1353
int perf_event__synthesize_extra_kmaps(struct perf_tool *tool, perf_event__handler_t process, struct machine *machine)
int perf_event__synthesize_cpu_map(struct perf_tool *tool, struct cpu_map *cpus, perf_event__handler_t process, struct machine *machine)
Definition: event.c:1115
Definition: event.h:490
u32 tid
Definition: event.h:15
int perf_event__synthesize_modules(struct perf_tool *tool, perf_event__handler_t process, struct machine *machine)
Definition: event.c:461
int(* perf_event__handler_t)(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
Definition: event.h:664
u64 data_src
Definition: event.h:203
size_t size
Definition: evsel.c:60
u32 tid
Definition: event.h:53
void perf_event__print_totals(void)
auxtrace_error_type
Definition: event.h:255
u16 nr
Definition: event.h:429
u64 feat_id
Definition: event.h:619
u32 tid
Definition: event.h:39
u64 time_enabled
Definition: event.h:75
u64 addr
Definition: event.h:195
u16 insn_len
Definition: event.h:206
static void * perf_sample__synth_ptr(struct perf_sample *sample)
Definition: event.h:367
#define MAX_AUXTRACE_ERROR_MSG
Definition: event.h:521
dictionary data
Definition: stat-cpi.py:4
u32 min
Definition: event.h:29
struct ip_callchain * callchain
Definition: event.h:211
static void * perf_synth__raw_data(void *p)
Definition: event.h:372
int perf_event__process_fork(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
u64 nr
Definition: event.h:157
u16 long_size
Definition: event.h:430
Definition: event.h:553
u32 thread
Definition: event.h:587
const char * perf_event__name(unsigned int id)
Definition: event.c:75
#define config
size_t perf_event__fprintf_cpu_map(union perf_event *event, FILE *fp)
Definition: event.c:1369
u64 from
Definition: event.h:151
size_t perf_event__fprintf_namespaces(union perf_event *event, FILE *fp)
Definition: event.c:1246
u64 total_lost
Definition: event.h:402
u64 start
Definition: event.h:16
void * cpu_map_data__alloc(struct cpu_map *map, size_t *size, u16 *type, int *max)
Definition: event.c:1047
int perf_event__synthesize_thread_map2(struct perf_tool *tool, struct thread_map *threads, perf_event__handler_t process, struct machine *machine)
Definition: event.c:966
u64 cycles
Definition: event.h:145
u64 mask
Definition: event.h:104
Definition: cpumap.h:12
u32 flags
Definition: event.h:33
int perf_event__synthesize_stat_config(struct perf_tool *tool, struct perf_stat_config *config, perf_event__handler_t process, struct machine *machine)
Definition: event.c:1133
u32 reserved__
Definition: event.h:518
int perf_event__process_itrace_start(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
u64 phys_addr
Definition: event.h:204
u64 reference
Definition: event.h:514
u64 ip
Definition: event.h:192
u32 nr_lost_warned
Definition: event.h:409
struct sample_read_value * values
Definition: event.h:129
u32 nr_invalid_chains
Definition: event.h:411
u16 offset
Definition: event.h:113
Definition: comm.h:11
u32 nr_proc_map_timeout
Definition: event.h:415
perf_synth_id
Definition: event.h:264
u64 id
Definition: event.h:196
u64 nr
Definition: event.h:128
u64 reserved
Definition: event.h:147
u64 ino
Definition: event.h:30
size_t perf_event__fprintf(union perf_event *event, FILE *fp)
Definition: event.c:1461
u32 tid
Definition: event.h:24
u32 maj
Definition: event.h:28
bool sample_addr_correlates_sym(struct perf_event_attr *attr)
Definition: event.c:1673
u8 build_id[PERF_ALIGN(BUILD_ID_SIZE, sizeof(u64))]
Definition: event.h:229
int perf_event__process_aux(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
Definition: thread.h:18
const char * event_type(int type)
Definition: parse-events.c:275
const char * name
int perf_event__synthesize_sample(union perf_event *event, u64 type, u64 read_format, const struct perf_sample *sample)
Definition: evsel.c:2490
u64 val
Definition: event.h:591
u32 nr_unknown_id
Definition: event.h:412
u64 stream_id
Definition: event.h:84
Definition: tool.h:44
pid_t pid
Definition: event.h:228
int perf_event__process_mmap2(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
int machine__resolve(struct machine *machine, struct addr_location *al, struct perf_sample *sample)
Definition: event.c:1601
int perf_event__synthesize_threads(struct perf_tool *tool, perf_event__handler_t process, struct machine *machine, bool mmap_data, unsigned int proc_map_timeout, unsigned int nr_threads_synthesize)
Definition: event.c:767
#define MAX_EVENT_NAME
Definition: event.h:473
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, unsigned int proc_map_timeout)
Definition: event.c:320
u64 start
Definition: event.h:25
u64 nr
Definition: event.h:136
u64 offset
Definition: event.h:513
char * data
Definition: event.h:115
u64 time_running
Definition: event.h:125
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)
Definition: event.c:249
size_t perf_event__fprintf_mmap2(union perf_event *event, FILE *fp)
Definition: event.c:1338
u64 time_shift
Definition: event.h:612
u32 nr_non_filtered_samples
Definition: event.h:408
u64 time_running
Definition: event.h:76
u64 total_lost_samples
Definition: event.h:403
u64 value
Definition: event.h:74
u64 total_period
Definition: event.h:400
u64 run
Definition: event.h:593
u64 len
Definition: event.h:17
static struct perf_tool tool
Definition: builtin-diff.c:362
u64 period
Definition: event.h:198
u64 predicted
Definition: event.h:142
#define PATH_MAX
Definition: jevents.c:1042
u64 tid
Definition: event.h:494
u32 tid
Definition: event.h:193
list cpus
Definition: stat-cpi.py:7
u64 id
Definition: event.h:491
int perf_event__process_lost(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
u64 pid
Definition: event.h:554
u64 abi
Definition: event.h:103
#define event
perf_user_event_type
Definition: event.h:233
struct branch_stack * branch_stack
Definition: event.h:212
u64 time
Definition: event.h:54
u64 in_tx
Definition: event.h:143
u32 raw_size
Definition: event.h:202
u32 cpu
Definition: event.h:201
size_t perf_event__fprintf_comm(union perf_event *event, FILE *fp)
Definition: event.c:1234
int perf_tool__process_synth_event(struct perf_tool *tool, union perf_event *event, struct machine *machine, perf_event__handler_t process)
Definition: event.c:91
int perf_event__process_switch(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
Definition: event.h:571
static bool group
Definition: builtin-stat.c:160
u64 type
Definition: event.h:146
u64 idx
Definition: event.h:492
int perf_event_paranoid(void)
Definition: util.c:388
int perf_event__process_exit(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
int perf_event__process(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
u32 nr_unprocessable_samples
Definition: event.h:413
u32 tid
Definition: event.h:73
size_t perf_event__fprintf_itrace_start(union perf_event *event, FILE *fp)
Definition: event.c:1434
#define array
void thread__resolve(struct thread *thread, struct addr_location *al, struct perf_sample *sample)
Definition: event.c:1687
#define MAX_INSN
Definition: event.h:189
void * raw_data
Definition: event.h:210
Definition: event.h:150
u64 tag
Definition: event.h:572
u64 time
Definition: event.h:82
u32 prot
Definition: event.h:32
void addr_location__put(struct addr_location *al)
Definition: event.c:1661
u64 transaction
Definition: event.h:200
Definition: jevents.c:228
u64 time_zero
Definition: event.h:614
u64 val
Definition: event.h:573
u64 id
Definition: event.h:585
u32 flags
Definition: event.h:205
void perf_event__read_stat_config(struct perf_stat_config *config, struct stat_config_event *event)
Definition: event.c:1210
u32 cpu
Definition: event.h:586
u64 time
Definition: event.h:194
u32 flags
u64 time_mult
Definition: event.h:613
size_t perf_event__sample_event_size(const struct perf_sample *sample, u64 type, u64 read_format)
Definition: evsel.c:2382
u64 total_aux_lost
Definition: event.h:404
u64 nr_namespaces
Definition: event.h:46
u16 misc
Definition: event.h:208
u32 pid
Definition: event.h:15
#define PERF_REGS_MAX
Definition: perf_regs.h:12
size_t perf_event__fprintf_aux(union perf_event *event, FILE *fp)
Definition: event.c:1424
u64 total_aux_partial
Definition: event.h:405
u32 nr_unknown_events
Definition: event.h:410
u16 type
Definition: event.h:435
struct perf_event_header header
Definition: event.h:14
int sysctl_perf_event_max_contexts_per_stack
Definition: util.c:63
bool is_bts_event(struct perf_event_attr *attr)
Definition: event.c:1666
size_t perf_event__fprintf_mmap(union perf_event *event, FILE *fp)
Definition: event.c:1329
Definition: attr.py:1
u64 id
Definition: event.h:59
u64 * regs
Definition: event.h:105
u64 time_enabled
Definition: event.h:124
u64 total_non_filtered_period
Definition: event.h:401
static struct perf_stat_config stat_config
int perf_event__synthesize_thread_map(struct perf_tool *tool, struct thread_map *threads, perf_event__handler_t process, struct machine *machine, bool mmap_data, unsigned int proc_map_timeout)
Definition: event.c:603
u64 stream_id
Definition: event.h:197
int sysctl_perf_event_max_stack
Definition: util.c:62
int perf_event__process_comm(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
u64 lost
Definition: event.h:60
char filename[PATH_MAX]
Definition: event.h:19
u32 ppid
Definition: event.h:52
int perf_event__synthesize_stat_round(struct perf_tool *tool, u64 time, u64 type, perf_event__handler_t process, struct machine *machine)
Definition: event.c:1193
void cpu_map_data__synthesize(struct cpu_map_data *data, struct cpu_map *map, u16 type, int max)
Definition: event.c:1080
int perf_event__process_lost_samples(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
#define BUILD_ID_SIZE
Definition: build-id.h:5
u64 size
Definition: event.h:114
size_t perf_event__fprintf_switch(union perf_event *event, FILE *fp)
Definition: event.c:1440
u8 cpumode
Definition: event.h:207
u64 len
Definition: event.h:26
u64 cache_mask
Definition: event.h:109
u64 to
Definition: event.h:152
u64 flags
Definition: event.h:539
u64 abort
Definition: event.h:144
size_t perf_event__fprintf_task(union perf_event *event, FILE *fp)
Definition: event.c:1401
u64 mispred
Definition: event.h:141
int kallsyms__get_function_start(const char *kallsyms_filename, const char *symbol_name, u64 *addr)
Definition: event.c:879
u64 id
Definition: event.h:77
int perf_event__process_namespaces(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
u64 ena
Definition: event.h:592