linux/tools/perf/util/trace-event.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _PERF_UTIL_TRACE_EVENT_H
   3#define _PERF_UTIL_TRACE_EVENT_H
   4
   5#include <traceevent/event-parse.h>
   6#include <traceevent/trace-seq.h>
   7#include "parse-events.h"
   8
   9struct machine;
  10struct perf_sample;
  11union perf_event;
  12struct perf_tool;
  13struct thread;
  14struct tep_plugin_list;
  15
  16struct trace_event {
  17        struct tep_handle       *pevent;
  18        struct tep_plugin_list  *plugin_list;
  19};
  20
  21int trace_event__init(struct trace_event *t);
  22void trace_event__cleanup(struct trace_event *t);
  23int trace_event__register_resolver(struct machine *machine,
  24                                   tep_func_resolver_t *func);
  25struct tep_event*
  26trace_event__tp_format(const char *sys, const char *name);
  27
  28struct tep_event *trace_event__tp_format_id(int id);
  29
  30int bigendian(void);
  31
  32void event_format__fprintf(struct tep_event *event,
  33                           int cpu, void *data, int size, FILE *fp);
  34
  35void event_format__print(struct tep_event *event,
  36                         int cpu, void *data, int size);
  37
  38int parse_ftrace_file(struct tep_handle *pevent, char *buf, unsigned long size);
  39int parse_event_file(struct tep_handle *pevent,
  40                     char *buf, unsigned long size, char *sys);
  41
  42unsigned long long
  43raw_field_value(struct tep_event *event, const char *name, void *data);
  44
  45void parse_proc_kallsyms(struct tep_handle *pevent, char *file, unsigned int size);
  46void parse_ftrace_printk(struct tep_handle *pevent, char *file, unsigned int size);
  47void parse_saved_cmdline(struct tep_handle *pevent, char *file, unsigned int size);
  48
  49ssize_t trace_report(int fd, struct trace_event *tevent, bool repipe);
  50
  51struct tep_event *trace_find_next_event(struct tep_handle *pevent,
  52                                        struct tep_event *event);
  53unsigned long long read_size(struct tep_event *event, void *ptr, int size);
  54unsigned long long eval_flag(const char *flag);
  55
  56int read_tracing_data(int fd, struct list_head *pattrs);
  57
  58struct tracing_data {
  59        /* size is only valid if temp is 'true' */
  60        ssize_t size;
  61        bool temp;
  62        char temp_file[50];
  63};
  64
  65struct tracing_data *tracing_data_get(struct list_head *pattrs,
  66                                      int fd, bool temp);
  67int tracing_data_put(struct tracing_data *tdata);
  68
  69
  70struct addr_location;
  71
  72struct perf_session;
  73struct perf_stat_config;
  74
  75struct scripting_ops {
  76        const char *name;
  77        int (*start_script) (const char *script, int argc, const char **argv);
  78        int (*flush_script) (void);
  79        int (*stop_script) (void);
  80        void (*process_event) (union perf_event *event,
  81                               struct perf_sample *sample,
  82                               struct perf_evsel *evsel,
  83                               struct addr_location *al);
  84        void (*process_switch)(union perf_event *event,
  85                               struct perf_sample *sample,
  86                               struct machine *machine);
  87        void (*process_stat)(struct perf_stat_config *config,
  88                             struct perf_evsel *evsel, u64 tstamp);
  89        void (*process_stat_interval)(u64 tstamp);
  90        int (*generate_script) (struct tep_handle *pevent, const char *outfile);
  91};
  92
  93extern unsigned int scripting_max_stack;
  94
  95int script_spec_register(const char *spec, struct scripting_ops *ops);
  96
  97void setup_perl_scripting(void);
  98void setup_python_scripting(void);
  99
 100struct scripting_context {
 101        struct tep_handle *pevent;
 102        void *event_data;
 103};
 104
 105int common_pc(struct scripting_context *context);
 106int common_flags(struct scripting_context *context);
 107int common_lock_depth(struct scripting_context *context);
 108
 109#endif /* _PERF_UTIL_TRACE_EVENT_H */
 110