Merge tag 'char-misc-4.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh...
[deliverable/linux.git] / tools / perf / util / probe-event.h
CommitLineData
50656eec
MH
1#ifndef _PROBE_EVENT_H
2#define _PROBE_EVENT_H
3
fac13fd5 4#include <stdbool.h>
5a62257a 5#include "intlist.h"
4de189fe 6#include "strlist.h"
bd09d7b5 7#include "strfilter.h"
50656eec 8
ddb2f58f
MH
9/* Probe related configurations */
10struct probe_conf {
11 bool show_ext_vars;
349e8d26 12 bool show_location_range;
ddb2f58f 13 bool force_add;
6cfd1f68 14 bool no_inlines;
ddb2f58f
MH
15 int max_probes;
16};
17extern struct probe_conf probe_conf;
f4d7da49
MH
18extern bool probe_event_dry_run;
19
225466f1 20/* kprobe-tracer and uprobe-tracer tracing point */
0e60836b 21struct probe_trace_point {
4c859351 22 char *realname; /* function real name (if needed) */
4235b045 23 char *symbol; /* Base symbol */
190b57fc 24 char *module; /* Module name */
4235b045 25 unsigned long offset; /* Offset from symbol */
fb7345bb 26 unsigned long address; /* Actual address of the trace point */
4235b045
MH
27 bool retprobe; /* Return probe flag */
28};
29
0e60836b
SD
30/* probe-tracer tracing argument referencing offset */
31struct probe_trace_arg_ref {
32 struct probe_trace_arg_ref *next; /* Next reference */
4235b045
MH
33 long offset; /* Offset value */
34};
35
225466f1 36/* kprobe-tracer and uprobe-tracer tracing argument */
0e60836b 37struct probe_trace_arg {
4235b045
MH
38 char *name; /* Argument name */
39 char *value; /* Base value */
4984912e 40 char *type; /* Type name */
0e60836b 41 struct probe_trace_arg_ref *ref; /* Referencing offset */
4235b045
MH
42};
43
225466f1 44/* kprobe-tracer and uprobe-tracer tracing event (point + arg) */
0e60836b 45struct probe_trace_event {
4235b045
MH
46 char *event; /* Event name */
47 char *group; /* Group name */
0e60836b 48 struct probe_trace_point point; /* Trace point */
4235b045 49 int nargs; /* Number of args */
225466f1 50 bool uprobes; /* uprobes only */
0e60836b 51 struct probe_trace_arg *args; /* Arguments */
4235b045
MH
52};
53
54/* Perf probe probing point */
55struct perf_probe_point {
56 char *file; /* File path */
57 char *function; /* Function name */
58 int line; /* Line number */
eed05fe7 59 bool retprobe; /* Return probe flag */
4235b045
MH
60 char *lazy_line; /* Lazy matching pattern */
61 unsigned long offset; /* Offset from function entry */
4235b045
MH
62};
63
7df2f329
MH
64/* Perf probe probing argument field chain */
65struct perf_probe_arg_field {
66 struct perf_probe_arg_field *next; /* Next field */
67 char *name; /* Name of the field */
b2a3c12b 68 long index; /* Array index number */
7df2f329
MH
69 bool ref; /* Referencing flag */
70};
71
4235b045
MH
72/* Perf probe probing argument */
73struct perf_probe_arg {
7df2f329 74 char *name; /* Argument name */
48481938 75 char *var; /* Variable name */
11a1ca35 76 char *type; /* Type name */
7df2f329 77 struct perf_probe_arg_field *field; /* Structure fields */
4235b045
MH
78};
79
80/* Perf probe probing event (point + arg) */
81struct perf_probe_event {
82 char *event; /* Event name */
83 char *group; /* Group name */
84 struct perf_probe_point point; /* Probe point */
85 int nargs; /* Number of arguments */
7afb3fab
MH
86 bool uprobes; /* Uprobe event flag */
87 char *target; /* Target binary */
4235b045
MH
88 struct perf_probe_arg *args; /* Arguments */
89};
90
4235b045
MH
91/* Line range */
92struct line_range {
93 char *file; /* File name */
94 char *function; /* Function name */
d3b63d7a
MH
95 int start; /* Start line number */
96 int end; /* End line number */
4235b045
MH
97 int offset; /* Start line offset */
98 char *path; /* Real path name */
6a330a3c 99 char *comp_dir; /* Compile directory */
5a62257a 100 struct intlist *line_list; /* Visible lines */
4235b045
MH
101};
102
cf6eb489
MH
103/* List of variables */
104struct variable_list {
105 struct probe_trace_point point; /* Actual probepoint */
106 struct strlist *vars; /* Available variables */
107};
108
4235b045 109/* Command string to events */
146a1439
MH
110extern int parse_perf_probe_command(const char *cmd,
111 struct perf_probe_event *pev);
4235b045
MH
112
113/* Events to command string */
114extern char *synthesize_perf_probe_command(struct perf_probe_event *pev);
0e60836b 115extern char *synthesize_probe_trace_command(struct probe_trace_event *tev);
7df2f329
MH
116extern int synthesize_perf_probe_arg(struct perf_probe_arg *pa, char *buf,
117 size_t len);
4235b045
MH
118
119/* Check the perf_probe_event needs debuginfo */
120extern bool perf_probe_event_need_dwarf(struct perf_probe_event *pev);
121
4235b045
MH
122/* Release event contents */
123extern void clear_perf_probe_event(struct perf_probe_event *pev);
4235b045
MH
124
125/* Command string to line-range */
146a1439 126extern int parse_line_range_desc(const char *cmd, struct line_range *lr);
4235b045 127
e53b00d3
MH
128/* Release line range members */
129extern void line_range__clear(struct line_range *lr);
130
131/* Initialize line range */
5a62257a 132extern int line_range__init(struct line_range *lr);
e53b00d3 133
ddb2f58f 134extern int add_perf_probe_events(struct perf_probe_event *pevs, int npevs);
307a464b 135extern int del_perf_probe_events(struct strfilter *filter);
b6a89643 136extern int show_perf_probe_events(struct strfilter *filter);
2b394bc4
MH
137extern int show_line_range(struct line_range *lr, const char *module,
138 bool user);
cf6eb489 139extern int show_available_vars(struct perf_probe_event *pevs, int npevs,
ddb2f58f 140 struct strfilter *filter);
225466f1
SD
141extern int show_available_funcs(const char *module, struct strfilter *filter,
142 bool user);
d5c2e2c1 143bool arch__prefers_symtab(void);
7b6ff0bd
NR
144void arch__fix_tev_from_maps(struct perf_probe_event *pev,
145 struct probe_trace_event *tev, struct map *map);
4235b045 146
b498ce1f
MH
147/* Maximum index number of event-name postfix */
148#define MAX_EVENT_INDEX 1024
149
50656eec 150#endif /*_PROBE_EVENT_H */
This page took 0.231673 seconds and 5 git commands to generate.