Linux Perf
auxtrace.h
Go to the documentation of this file.
1 /*
2  * auxtrace.h: AUX area trace support
3  * Copyright (c) 2013-2015, Intel Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU General Public License,
7  * version 2, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12  * more details.
13  *
14  */
15 
16 #ifndef __PERF_AUXTRACE_H
17 #define __PERF_AUXTRACE_H
18 
19 #include <sys/types.h>
20 #include <errno.h>
21 #include <stdbool.h>
22 #include <stddef.h>
23 #include <linux/list.h>
24 #include <linux/perf_event.h>
25 #include <linux/types.h>
26 
27 #include "../perf.h"
28 #include "event.h"
29 #include "session.h"
30 #include "debug.h"
31 
32 union perf_event;
33 struct perf_session;
34 struct perf_evlist;
35 struct perf_tool;
36 struct option;
37 struct record_opts;
38 struct auxtrace_info_event;
39 struct events_stats;
40 
47 };
48 
53 };
54 
81  bool set;
82  bool inject;
84  bool branches;
86  bool ptwrites;
87  bool pwr_events;
88  bool errors;
90  bool log;
91  bool calls;
92  bool returns;
93  bool callchain;
96  unsigned int callchain_sz;
97  unsigned int last_branch_sz;
98  unsigned long long period;
100  unsigned long initial_skip;
101  unsigned long *cpu_bitmap;
102 };
103 
112  u64 sz;
113 };
114 
115 #define PERF_AUXTRACE_INDEX_ENTRY_COUNT 256
116 
125  struct list_head list;
126  size_t nr;
128 };
129 
138 struct auxtrace {
140  union perf_event *event,
141  struct perf_sample *sample,
142  struct perf_tool *tool);
143  int (*process_auxtrace_event)(struct perf_session *session,
144  union perf_event *event,
145  struct perf_tool *tool);
146  int (*flush_events)(struct perf_session *session,
147  struct perf_tool *tool);
148  void (*free_events)(struct perf_session *session);
149  void (*free)(struct perf_session *session);
150 };
151 
176  struct list_head list;
177  size_t size;
178  pid_t pid;
179  pid_t tid;
180  int cpu;
181  void *data;
182  off_t data_offset;
183  void *mmap_addr;
184  size_t mmap_size;
187  u64 offset;
190  size_t use_size;
191  void *use_data;
192 };
193 
203  struct list_head head;
204  pid_t tid;
205  int cpu;
206  bool set;
207  void *priv;
208 };
209 
220  unsigned int nr_queues;
221  bool new_data;
222  bool populated;
224 };
225 
233  unsigned int queue_nr;
234  u64 ordinal;
235 };
236 
245  unsigned int heap_cnt;
246  unsigned int heap_sz;
247 };
248 
262  void *base;
263  void *userpg;
264  size_t mask;
265  size_t len;
266  u64 prev;
267  int idx;
268  pid_t tid;
269  int cpu;
270 };
271 
284  size_t mask;
285  off_t offset;
286  size_t len;
287  int prot;
288  int idx;
289  pid_t tid;
290  int cpu;
291 };
292 
308  int (*recording_options)(struct auxtrace_record *itr,
309  struct perf_evlist *evlist,
310  struct record_opts *opts);
311  size_t (*info_priv_size)(struct auxtrace_record *itr,
312  struct perf_evlist *evlist);
313  int (*info_fill)(struct auxtrace_record *itr,
314  struct perf_session *session,
315  struct auxtrace_info_event *auxtrace_info,
316  size_t priv_size);
317  void (*free)(struct auxtrace_record *itr);
318  int (*snapshot_start)(struct auxtrace_record *itr);
319  int (*snapshot_finish)(struct auxtrace_record *itr);
320  int (*find_snapshot)(struct auxtrace_record *itr, int idx,
321  struct auxtrace_mmap *mm, unsigned char *data,
322  u64 *head, u64 *old);
323  int (*parse_snapshot_options)(struct auxtrace_record *itr,
324  struct record_opts *opts,
325  const char *str);
326  u64 (*reference)(struct auxtrace_record *itr);
327  int (*read_finish)(struct auxtrace_record *itr, int idx);
328  unsigned int alignment;
329 };
330 
348 struct addr_filter {
349  struct list_head list;
350  bool range;
351  bool start;
352  const char *action;
353  const char *sym_from;
354  const char *sym_to;
357  u64 addr;
358  u64 size;
359  const char *filename;
360  char *str;
361 };
362 
368 struct addr_filters {
369  struct list_head head;
370  int cnt;
371 };
372 
373 #ifdef HAVE_AUXTRACE_SUPPORT
374 
375 /*
376  * In snapshot mode the mmapped page is read-only which makes using
377  * __sync_val_compare_and_swap() problematic. However, snapshot mode expects
378  * the buffer is not updated while the snapshot is made (e.g. Intel PT disables
379  * the event) so there is not a race anyway.
380  */
381 static inline u64 auxtrace_mmap__read_snapshot_head(struct auxtrace_mmap *mm)
382 {
383  struct perf_event_mmap_page *pc = mm->userpg;
384  u64 head = READ_ONCE(pc->aux_head);
385 
386  /* Ensure all reads are done after we read the head */
387  rmb();
388  return head;
389 }
390 
391 static inline u64 auxtrace_mmap__read_head(struct auxtrace_mmap *mm)
392 {
393  struct perf_event_mmap_page *pc = mm->userpg;
394 #if BITS_PER_LONG == 64 || !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT)
395  u64 head = READ_ONCE(pc->aux_head);
396 #else
397  u64 head = __sync_val_compare_and_swap(&pc->aux_head, 0, 0);
398 #endif
399 
400  /* Ensure all reads are done after we read the head */
401  rmb();
402  return head;
403 }
404 
405 static inline void auxtrace_mmap__write_tail(struct auxtrace_mmap *mm, u64 tail)
406 {
407  struct perf_event_mmap_page *pc = mm->userpg;
408 #if BITS_PER_LONG != 64 && defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT)
409  u64 old_tail;
410 #endif
411 
412  /* Ensure all reads are done before we write the tail out */
413  mb();
414 #if BITS_PER_LONG == 64 || !defined(HAVE_SYNC_COMPARE_AND_SWAP_SUPPORT)
415  pc->aux_tail = tail;
416 #else
417  do {
418  old_tail = __sync_val_compare_and_swap(&pc->aux_tail, 0, 0);
419  } while (!__sync_bool_compare_and_swap(&pc->aux_tail, old_tail, tail));
420 #endif
421 }
422 
423 int auxtrace_mmap__mmap(struct auxtrace_mmap *mm,
424  struct auxtrace_mmap_params *mp,
425  void *userpg, int fd);
426 void auxtrace_mmap__munmap(struct auxtrace_mmap *mm);
428  off_t auxtrace_offset,
429  unsigned int auxtrace_pages,
430  bool auxtrace_overwrite);
432  struct perf_evlist *evlist, int idx,
433  bool per_cpu);
434 
435 typedef int (*process_auxtrace_t)(struct perf_tool *tool,
436  union perf_event *event, void *data1,
437  size_t len1, void *data2, size_t len2);
438 
439 int auxtrace_mmap__read(struct auxtrace_mmap *mm, struct auxtrace_record *itr,
440  struct perf_tool *tool, process_auxtrace_t fn);
441 
443  struct auxtrace_record *itr,
444  struct perf_tool *tool, process_auxtrace_t fn,
445  size_t snapshot_size);
446 
447 int auxtrace_queues__init(struct auxtrace_queues *queues);
449  struct perf_session *session,
450  union perf_event *event, off_t data_offset,
451  struct auxtrace_buffer **buffer_ptr);
452 void auxtrace_queues__free(struct auxtrace_queues *queues);
454  struct perf_session *session);
456  struct auxtrace_buffer *buffer);
457 void *auxtrace_buffer__get_data(struct auxtrace_buffer *buffer, int fd);
458 void auxtrace_buffer__put_data(struct auxtrace_buffer *buffer);
459 void auxtrace_buffer__drop_data(struct auxtrace_buffer *buffer);
460 void auxtrace_buffer__free(struct auxtrace_buffer *buffer);
461 
462 int auxtrace_heap__add(struct auxtrace_heap *heap, unsigned int queue_nr,
463  u64 ordinal);
464 void auxtrace_heap__pop(struct auxtrace_heap *heap);
465 void auxtrace_heap__free(struct auxtrace_heap *heap);
466 
467 struct auxtrace_cache_entry {
468  struct hlist_node hash;
469  u32 key;
470 };
471 
472 struct auxtrace_cache *auxtrace_cache__new(unsigned int bits, size_t entry_size,
473  unsigned int limit_percent);
475 void *auxtrace_cache__alloc_entry(struct auxtrace_cache *c);
476 void auxtrace_cache__free_entry(struct auxtrace_cache *c, void *entry);
477 int auxtrace_cache__add(struct auxtrace_cache *c, u32 key,
478  struct auxtrace_cache_entry *entry);
479 void *auxtrace_cache__lookup(struct auxtrace_cache *c, u32 key);
480 
481 struct auxtrace_record *auxtrace_record__init(struct perf_evlist *evlist,
482  int *err);
483 
485  struct record_opts *opts,
486  const char *str);
488  struct perf_evlist *evlist,
489  struct record_opts *opts);
491  struct perf_evlist *evlist);
493  struct perf_session *session,
494  struct auxtrace_info_event *auxtrace_info,
495  size_t priv_size);
496 void auxtrace_record__free(struct auxtrace_record *itr);
499 int auxtrace_record__find_snapshot(struct auxtrace_record *itr, int idx,
500  struct auxtrace_mmap *mm,
501  unsigned char *data, u64 *head, u64 *old);
503 
504 int auxtrace_index__auxtrace_event(struct list_head *head, union perf_event *event,
505  off_t file_offset);
506 int auxtrace_index__write(int fd, struct list_head *head);
507 int auxtrace_index__process(int fd, u64 size, struct perf_session *session,
508  bool needs_swap);
509 void auxtrace_index__free(struct list_head *head);
510 
511 void auxtrace_synth_error(struct auxtrace_error_event *auxtrace_error, int type,
512  int code, int cpu, pid_t pid, pid_t tid, u64 ip,
513  const char *msg);
514 
516  struct perf_tool *tool,
517  struct perf_session *session,
518  perf_event__handler_t process);
520  union perf_event *event,
521  struct perf_session *session);
522 s64 perf_event__process_auxtrace(struct perf_tool *tool,
523  union perf_event *event,
524  struct perf_session *session);
526  union perf_event *event,
527  struct perf_session *session);
528 int itrace_parse_synth_opts(const struct option *opt, const char *str,
529  int unset);
530 void itrace_synth_opts__set_default(struct itrace_synth_opts *synth_opts);
531 
532 size_t perf_event__fprintf_auxtrace_error(union perf_event *event, FILE *fp);
534  union perf_event *event);
536 
537 void addr_filters__init(struct addr_filters *filts);
538 void addr_filters__exit(struct addr_filters *filts);
540  const char *filter);
541 int auxtrace_parse_filters(struct perf_evlist *evlist);
542 
543 static inline int auxtrace__process_event(struct perf_session *session,
544  union perf_event *event,
545  struct perf_sample *sample,
546  struct perf_tool *tool)
547 {
548  if (!session->auxtrace)
549  return 0;
550 
551  return session->auxtrace->process_event(session, event, sample, tool);
552 }
553 
554 static inline int auxtrace__flush_events(struct perf_session *session,
555  struct perf_tool *tool)
556 {
557  if (!session->auxtrace)
558  return 0;
559 
560  return session->auxtrace->flush_events(session, tool);
561 }
562 
563 static inline void auxtrace__free_events(struct perf_session *session)
564 {
565  if (!session->auxtrace)
566  return;
567 
568  return session->auxtrace->free_events(session);
569 }
570 
571 static inline void auxtrace__free(struct perf_session *session)
572 {
573  if (!session->auxtrace)
574  return;
575 
576  return session->auxtrace->free(session);
577 }
578 
579 #else
580 
581 static inline struct auxtrace_record *
582 auxtrace_record__init(struct perf_evlist *evlist __maybe_unused,
583  int *err)
584 {
585  *err = 0;
586  return NULL;
587 }
588 
589 static inline
590 void auxtrace_record__free(struct auxtrace_record *itr __maybe_unused)
591 {
592 }
593 
594 static inline int
596  struct perf_tool *tool __maybe_unused,
597  struct perf_session *session __maybe_unused,
598  perf_event__handler_t process __maybe_unused)
599 {
600  return -EINVAL;
601 }
602 
603 static inline
604 int auxtrace_record__options(struct auxtrace_record *itr __maybe_unused,
605  struct perf_evlist *evlist __maybe_unused,
606  struct record_opts *opts __maybe_unused)
607 {
608  return 0;
609 }
610 
611 #define perf_event__process_auxtrace_info 0
612 #define perf_event__process_auxtrace 0
613 #define perf_event__process_auxtrace_error 0
614 
615 static inline
617  __maybe_unused,
618  union perf_event *event
619  __maybe_unused)
620 {
621 }
622 
623 static inline
625  __maybe_unused)
626 {
627 }
628 
629 static inline
630 int itrace_parse_synth_opts(const struct option *opt __maybe_unused,
631  const char *str __maybe_unused,
632  int unset __maybe_unused)
633 {
634  pr_err("AUX area tracing not supported\n");
635  return -EINVAL;
636 }
637 
638 static inline
639 int auxtrace_parse_snapshot_options(struct auxtrace_record *itr __maybe_unused,
640  struct record_opts *opts __maybe_unused,
641  const char *str)
642 {
643  if (!str)
644  return 0;
645  pr_err("AUX area tracing not supported\n");
646  return -EINVAL;
647 }
648 
649 static inline
650 int auxtrace__process_event(struct perf_session *session __maybe_unused,
651  union perf_event *event __maybe_unused,
652  struct perf_sample *sample __maybe_unused,
653  struct perf_tool *tool __maybe_unused)
654 {
655  return 0;
656 }
657 
658 static inline
659 int auxtrace__flush_events(struct perf_session *session __maybe_unused,
660  struct perf_tool *tool __maybe_unused)
661 {
662  return 0;
663 }
664 
665 static inline
666 void auxtrace__free_events(struct perf_session *session __maybe_unused)
667 {
668 }
669 
670 static inline
671 void auxtrace_cache__free(struct auxtrace_cache *auxtrace_cache __maybe_unused)
672 {
673 }
674 
675 static inline
676 void auxtrace__free(struct perf_session *session __maybe_unused)
677 {
678 }
679 
680 static inline
681 int auxtrace_index__write(int fd __maybe_unused,
682  struct list_head *head __maybe_unused)
683 {
684  return -EINVAL;
685 }
686 
687 static inline
688 int auxtrace_index__process(int fd __maybe_unused,
689  u64 size __maybe_unused,
690  struct perf_session *session __maybe_unused,
691  bool needs_swap __maybe_unused)
692 {
693  return -EINVAL;
694 }
695 
696 static inline
697 void auxtrace_index__free(struct list_head *head __maybe_unused)
698 {
699 }
700 
701 static inline
702 int auxtrace_parse_filters(struct perf_evlist *evlist __maybe_unused)
703 {
704  return 0;
705 }
706 
707 int auxtrace_mmap__mmap(struct auxtrace_mmap *mm,
708  struct auxtrace_mmap_params *mp,
709  void *userpg, int fd);
710 void auxtrace_mmap__munmap(struct auxtrace_mmap *mm);
712  off_t auxtrace_offset,
713  unsigned int auxtrace_pages,
714  bool auxtrace_overwrite);
716  struct perf_evlist *evlist, int idx,
717  bool per_cpu);
718 
719 #endif
720 
721 #endif
void * mmap_addr
Definition: auxtrace.h:183
static int auxtrace_record__options(struct auxtrace_record *itr __maybe_unused, struct perf_evlist *evlist __maybe_unused, struct record_opts *opts __maybe_unused)
Definition: auxtrace.h:604
void auxtrace_cache__free_entry(struct auxtrace_cache *c __maybe_unused, void *entry)
Definition: auxtrace.c:1403
int(* snapshot_start)(struct auxtrace_record *itr)
Definition: auxtrace.h:318
int(* process_event)(struct perf_session *session, union perf_event *event, struct perf_sample *sample, struct perf_tool *tool)
Definition: auxtrace.h:139
const char * sym_to
Definition: auxtrace.h:354
int(* perf_event__handler_t)(struct perf_tool *tool, union perf_event *event, struct perf_sample *sample, struct machine *machine)
Definition: event.h:664
int auxtrace_queues__process_index(struct auxtrace_queues *queues, struct perf_session *session)
Definition: auxtrace.c:764
static void auxtrace__free(struct perf_session *session __maybe_unused)
Definition: auxtrace.h:676
size_t len
Definition: auxtrace.h:265
size_t size
Definition: evsel.c:60
void auxtrace_buffer__free(struct auxtrace_buffer *buffer)
Definition: auxtrace.c:848
bool range
Definition: auxtrace.h:350
void * auxtrace_buffer__get_data(struct auxtrace_buffer *buffer, int fd)
Definition: auxtrace.c:804
struct auxtrace_queue * queue_array
Definition: auxtrace.h:219
static void auxtrace_index__free(struct list_head *head __maybe_unused)
Definition: auxtrace.h:697
struct auxtrace * auxtrace
Definition: session.h:26
static void auxtrace__free_events(struct perf_session *session __maybe_unused)
Definition: auxtrace.h:666
size_t mmap_size
Definition: auxtrace.h:184
void addr_filters__exit(struct addr_filters *filts)
Definition: auxtrace.c:1485
struct auxtrace_heap_item * heap_array
Definition: auxtrace.h:244
unsigned int callchain_sz
Definition: auxtrace.h:96
dictionary data
Definition: stat-cpi.py:4
static void auxtrace_record__free(struct auxtrace_record *itr __maybe_unused)
Definition: auxtrace.h:590
int int err
Definition: 5sec.c:44
struct auxtrace_buffer * auxtrace_buffer__next(struct auxtrace_queue *queue, struct auxtrace_buffer *buffer)
Definition: auxtrace.c:788
int(* snapshot_finish)(struct auxtrace_record *itr)
Definition: auxtrace.h:319
void * priv
Definition: auxtrace.h:207
static void process_event(struct perf_script *script, struct perf_sample *sample, struct perf_evsel *evsel, struct addr_location *al, struct machine *machine)
unsigned int bits
Definition: auxtrace.c:1333
void auxtrace_synth_error(struct auxtrace_error_event *auxtrace_error, int type, int code, int cpu, pid_t pid, pid_t tid, u64 ip, const char *msg)
Definition: auxtrace.c:854
size_t perf_event__fprintf_auxtrace_error(union perf_event *event, FILE *fp)
Definition: auxtrace.c:1148
int auxtrace_queues__add_event(struct auxtrace_queues *queues, struct perf_session *session, union perf_event *event, off_t data_offset, struct auxtrace_buffer **buffer_ptr)
Definition: auxtrace.c:357
static struct auxtrace_record * auxtrace_record__init(struct perf_evlist *evlist __maybe_unused, int *err)
Definition: auxtrace.h:582
int auxtrace_mmap__read(struct auxtrace_mmap *mm, struct auxtrace_record *itr, struct perf_tool *tool, process_auxtrace_t fn)
Definition: auxtrace.c:1303
Definition: auxtrace.h:110
static int auxtrace__process_event(struct perf_session *session __maybe_unused, union perf_event *event __maybe_unused, struct perf_sample *sample __maybe_unused, struct perf_tool *tool __maybe_unused)
Definition: auxtrace.h:650
void * userpg
Definition: auxtrace.h:263
int auxtrace_cache__add(struct auxtrace_cache *c, u32 key, struct auxtrace_cache_entry *entry)
Definition: auxtrace.c:1409
int auxtrace_record__find_snapshot(struct auxtrace_record *itr, int idx, struct auxtrace_mmap *mm, unsigned char *data, u64 *head, u64 *old)
Definition: auxtrace.c:552
int auxtrace_record__snapshot_finish(struct auxtrace_record *itr)
Definition: auxtrace.c:545
#define perf_event__process_auxtrace_error
Definition: auxtrace.h:613
#define pr_err(fmt,...)
Definition: json.h:21
void addr_filters__init(struct addr_filters *filts)
Definition: auxtrace.c:1479
void auxtrace_mmap__munmap(struct auxtrace_mmap *mm)
Definition: auxtrace.c:108
unsigned int nr_queues
Definition: auxtrace.h:220
int auxtrace_record__info_fill(struct auxtrace_record *itr, struct perf_session *session, struct auxtrace_info_event *auxtrace_info, size_t priv_size)
Definition: auxtrace.c:522
const char * key
Definition: bpf-loader.c:196
unsigned int heap_sz
Definition: auxtrace.h:246
int(* read_finish)(struct auxtrace_record *itr, int idx)
Definition: auxtrace.h:327
unsigned int alignment
Definition: auxtrace.h:328
int auxtrace_record__snapshot_start(struct auxtrace_record *itr)
Definition: auxtrace.c:538
Definition: tool.h:44
static struct perf_session * session
Definition: builtin-lock.c:34
void auxtrace_buffer__put_data(struct auxtrace_buffer *buffer)
Definition: auxtrace.c:826
static int entry(u64 ip, struct unwind_info *ui)
Definition: unwind-libdw.c:71
unsigned int heap_cnt
Definition: auxtrace.h:245
int sym_from_idx
Definition: auxtrace.h:355
void auxtrace_mmap_params__set_idx(struct auxtrace_mmap_params *mp, struct perf_evlist *evlist, int idx, bool per_cpu)
Definition: auxtrace.c:132
size_t use_size
Definition: auxtrace.h:190
char * str
Definition: auxtrace.h:360
void itrace_synth_opts__set_default(struct itrace_synth_opts *synth_opts)
Definition: auxtrace.c:961
static struct perf_tool tool
Definition: builtin-diff.c:362
static int str(yyscan_t scanner, int token)
static int perf_event__synthesize_auxtrace_info(struct auxtrace_record *itr __maybe_unused, struct perf_tool *tool __maybe_unused, struct perf_session *session __maybe_unused, perf_event__handler_t process __maybe_unused)
Definition: auxtrace.h:595
void auxtrace_heap__free(struct auxtrace_heap *heap)
Definition: auxtrace.c:463
unsigned long long period
Definition: auxtrace.h:98
struct auxtrace_cache * auxtrace_cache__new(unsigned int bits, size_t entry_size, unsigned int limit_percent)
Definition: auxtrace.c:1336
#define PERF_AUXTRACE_INDEX_ENTRY_COUNT
Definition: auxtrace.h:115
void * base
Definition: auxtrace.h:262
void auxtrace_buffer__drop_data(struct auxtrace_buffer *buffer)
Definition: auxtrace.c:837
#define event
bool data_needs_freeing
Definition: auxtrace.h:185
static int auxtrace_index__write(int fd __maybe_unused, struct list_head *head __maybe_unused)
Definition: auxtrace.h:681
int auxtrace_mmap__read_snapshot(struct auxtrace_mmap *mm, struct auxtrace_record *itr, struct perf_tool *tool, process_auxtrace_t fn, size_t snapshot_size)
Definition: auxtrace.c:1309
size_t mask
Definition: auxtrace.h:264
static int auxtrace_parse_snapshot_options(struct auxtrace_record *itr __maybe_unused, struct record_opts *opts __maybe_unused, const char *str)
Definition: auxtrace.h:639
off_t data_offset
Definition: auxtrace.h:182
#define perf_event__process_auxtrace_info
Definition: auxtrace.h:611
int(* find_snapshot)(struct auxtrace_record *itr, int idx, struct auxtrace_mmap *mm, unsigned char *data, u64 *head, u64 *old)
Definition: auxtrace.h:320
int auxtrace_mmap__mmap(struct auxtrace_mmap *mm, struct auxtrace_mmap_params *mp, void *userpg, int fd)
Definition: auxtrace.c:69
void auxtrace_mmap_params__init(struct auxtrace_mmap_params *mp, off_t auxtrace_offset, unsigned int auxtrace_pages, bool auxtrace_overwrite)
Definition: auxtrace.c:116
unsigned int last_branch_sz
Definition: auxtrace.h:97
const char * sym_from
Definition: auxtrace.h:353
#define perf_event__process_auxtrace
Definition: auxtrace.h:612
size_t entry_size
Definition: auxtrace.c:1330
static int auxtrace__flush_events(struct perf_session *session __maybe_unused, struct perf_tool *tool __maybe_unused)
Definition: auxtrace.h:659
unsigned long initial_skip
Definition: auxtrace.h:100
u32 pid
Definition: hists_common.c:15
void * auxtrace_cache__lookup(struct auxtrace_cache *c, u32 key)
Definition: auxtrace.c:1421
struct strfilter * filter
Definition: builtin-probe.c:60
void(* free_events)(struct perf_session *session)
Definition: auxtrace.h:148
int(* flush_events)(struct perf_session *session, struct perf_tool *tool)
Definition: auxtrace.h:146
static int auxtrace_parse_filters(struct perf_evlist *evlist __maybe_unused)
Definition: auxtrace.h:702
unsigned long * cpu_bitmap
Definition: auxtrace.h:101
static void auxtrace_cache__free(struct auxtrace_cache *auxtrace_cache __maybe_unused)
Definition: auxtrace.h:671
Definition: stat.h:10
const char * filename
Definition: auxtrace.h:359
unsigned int queue_nr
Definition: auxtrace.h:233
itrace_period_type
Definition: auxtrace.h:49
static void events_stats__auxtrace_error_warn(const struct events_stats *stats __maybe_unused)
Definition: auxtrace.h:624
u64 auxtrace_record__reference(struct auxtrace_record *itr)
Definition: auxtrace.c:570
void auxtrace_heap__pop(struct auxtrace_heap *heap)
Definition: auxtrace.c:470
int auxtrace_index__auxtrace_event(struct list_head *head, union perf_event *event, off_t file_offset)
Definition: auxtrace.c:647
void auxtrace_queues__free(struct auxtrace_queues *queues)
Definition: auxtrace.c:404
void free(void *)
int auxtrace_heap__add(struct auxtrace_heap *heap, unsigned int queue_nr, u64 ordinal)
Definition: auxtrace.c:440
void * use_data
Definition: auxtrace.h:191
void(* free)(struct perf_session *session)
Definition: auxtrace.h:149
int auxtrace_queues__init(struct auxtrace_queues *queues)
Definition: auxtrace.c:173
bool start
Definition: auxtrace.h:351
u64 sz
Definition: auxtrace.h:112
static int auxtrace_index__process(int fd __maybe_unused, u64 size __maybe_unused, struct perf_session *session __maybe_unused, bool needs_swap __maybe_unused)
Definition: auxtrace.h:688
auxtrace_type
Definition: auxtrace.h:41
void * auxtrace_cache__alloc_entry(struct auxtrace_cache *c)
Definition: auxtrace.c:1398
static void perf_session__auxtrace_error_inc(struct perf_session *session __maybe_unused, union perf_event *event __maybe_unused)
Definition: auxtrace.h:616
u64 file_offset
Definition: auxtrace.h:111
static int itrace_parse_synth_opts(const struct option *opt __maybe_unused, const char *str __maybe_unused, int unset __maybe_unused)
Definition: auxtrace.h:630
const char * action
Definition: auxtrace.h:352
size_t auxtrace_record__info_priv_size(struct auxtrace_record *itr, struct perf_evlist *evlist)
Definition: auxtrace.c:508
int sym_to_idx
Definition: auxtrace.h:356
u64 next_buffer_nr
Definition: auxtrace.h:223
int addr_filters__parse_bare_filter(struct addr_filters *filts, const char *filter)
Definition: auxtrace.c:1645
bool consecutive
Definition: auxtrace.h:186
enum itrace_period_type period_type
Definition: auxtrace.h:99