Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
tools
perf
util
probe-event.h
Go to the documentation of this file.
1
#ifndef _PROBE_EVENT_H
2
#define _PROBE_EVENT_H
3
4
#include <stdbool.h>
5
#include "
strlist.h
"
6
#include "
strfilter.h
"
7
8
extern
bool
probe_event_dry_run
;
9
10
/* kprobe-tracer and uprobe-tracer tracing point */
11
struct
probe_trace_point
{
12
char
*
symbol
;
/* Base symbol */
13
char
*
module
;
/* Module name */
14
unsigned
long
offset
;
/* Offset from symbol */
15
bool
retprobe
;
/* Return probe flag */
16
};
17
18
/* probe-tracer tracing argument referencing offset */
19
struct
probe_trace_arg_ref
{
20
struct
probe_trace_arg_ref
*
next
;
/* Next reference */
21
long
offset
;
/* Offset value */
22
};
23
24
/* kprobe-tracer and uprobe-tracer tracing argument */
25
struct
probe_trace_arg
{
26
char
*
name
;
/* Argument name */
27
char
*
value
;
/* Base value */
28
char
*
type
;
/* Type name */
29
struct
probe_trace_arg_ref
*
ref
;
/* Referencing offset */
30
};
31
32
/* kprobe-tracer and uprobe-tracer tracing event (point + arg) */
33
struct
probe_trace_event
{
34
char
*
event
;
/* Event name */
35
char
*
group
;
/* Group name */
36
struct
probe_trace_point
point
;
/* Trace point */
37
int
nargs
;
/* Number of args */
38
bool
uprobes
;
/* uprobes only */
39
struct
probe_trace_arg
*
args
;
/* Arguments */
40
};
41
42
/* Perf probe probing point */
43
struct
perf_probe_point
{
44
char
*
file
;
/* File path */
45
char
*
function
;
/* Function name */
46
int
line
;
/* Line number */
47
bool
retprobe
;
/* Return probe flag */
48
char
*
lazy_line
;
/* Lazy matching pattern */
49
unsigned
long
offset
;
/* Offset from function entry */
50
};
51
52
/* Perf probe probing argument field chain */
53
struct
perf_probe_arg_field
{
54
struct
perf_probe_arg_field
*
next
;
/* Next field */
55
char
*
name
;
/* Name of the field */
56
long
index
;
/* Array index number */
57
bool
ref
;
/* Referencing flag */
58
};
59
60
/* Perf probe probing argument */
61
struct
perf_probe_arg
{
62
char
*
name
;
/* Argument name */
63
char
*
var
;
/* Variable name */
64
char
*
type
;
/* Type name */
65
struct
perf_probe_arg_field
*
field
;
/* Structure fields */
66
};
67
68
/* Perf probe probing event (point + arg) */
69
struct
perf_probe_event
{
70
char
*
event
;
/* Event name */
71
char
*
group
;
/* Group name */
72
struct
perf_probe_point
point
;
/* Probe point */
73
int
nargs
;
/* Number of arguments */
74
bool
uprobes
;
75
struct
perf_probe_arg
*
args
;
/* Arguments */
76
};
77
78
79
/* Line number container */
80
struct
line_node
{
81
struct
list_head
list
;
82
int
line
;
83
};
84
85
/* Line range */
86
struct
line_range
{
87
char
*
file
;
/* File name */
88
char
*
function
;
/* Function name */
89
int
start
;
/* Start line number */
90
int
end
;
/* End line number */
91
int
offset
;
/* Start line offset */
92
char
*
path
;
/* Real path name */
93
char
*
comp_dir
;
/* Compile directory */
94
struct
list_head
line_list
;
/* Visible lines */
95
};
96
97
/* List of variables */
98
struct
variable_list
{
99
struct
probe_trace_point
point
;
/* Actual probepoint */
100
struct
strlist
*
vars
;
/* Available variables */
101
};
102
103
/* Command string to events */
104
extern
int
parse_perf_probe_command
(
const
char
*
cmd
,
105
struct
perf_probe_event
*pev);
106
107
/* Events to command string */
108
extern
char
*
synthesize_perf_probe_command
(
struct
perf_probe_event
*pev);
109
extern
char
*
synthesize_probe_trace_command
(
struct
probe_trace_event
*tev);
110
extern
int
synthesize_perf_probe_arg
(
struct
perf_probe_arg
*pa,
char
*
buf
,
111
size_t
len);
112
113
/* Check the perf_probe_event needs debuginfo */
114
extern
bool
perf_probe_event_need_dwarf
(
struct
perf_probe_event
*pev);
115
116
/* Release event contents */
117
extern
void
clear_perf_probe_event
(
struct
perf_probe_event
*pev);
118
119
/* Command string to line-range */
120
extern
int
parse_line_range_desc
(
const
char
*
cmd
,
struct
line_range
*
lr
);
121
122
/* Internal use: Return kernel/module path */
123
extern
const
char
*
kernel_get_module_path
(
const
char
*
module
);
124
125
extern
int
add_perf_probe_events
(
struct
perf_probe_event
*pevs,
int
npevs,
126
int
max_probe_points
,
const
char
*
module
,
127
bool
force_add
);
128
extern
int
del_perf_probe_events
(
struct
strlist
*
dellist
);
129
extern
int
show_perf_probe_events
(
void
);
130
extern
int
show_line_range
(
struct
line_range
*
lr
,
const
char
*
module
);
131
extern
int
show_available_vars
(
struct
perf_probe_event
*pevs,
int
npevs,
132
int
max_probe_points
,
const
char
*
module
,
133
struct
strfilter
*
filter
,
bool
externs);
134
extern
int
show_available_funcs
(
const
char
*
module
,
struct
strfilter
*
filter
,
135
bool
user
);
136
137
/* Maximum index number of event-name postfix */
138
#define MAX_EVENT_INDEX 1024
139
140
#endif
/*_PROBE_EVENT_H */
Generated on Thu Jan 10 2013 15:09:23 for Linux Kernel by
1.8.2