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
annotate.h
Go to the documentation of this file.
1
#ifndef __PERF_ANNOTATE_H
2
#define __PERF_ANNOTATE_H
3
4
#include <stdbool.h>
5
#include <stdint.h>
6
#include "
types.h
"
7
#include "
symbol.h
"
8
#include <linux/list.h>
9
#include <linux/rbtree.h>
10
#include <pthread.h>
11
12
struct
ins
;
13
14
struct
ins_operands
{
15
char
*
raw
;
16
struct
{
17
char
*
raw
;
18
char
*
name
;
19
u64
addr
;
20
u64
offset
;
21
}
target
;
22
union
{
23
struct
{
24
char
*
raw
;
25
char
*
name
;
26
u64
addr
;
27
}
source
;
28
struct
{
29
struct
ins
*
ins
;
30
struct
ins_operands
*
ops
;
31
}
locked
;
32
};
33
};
34
35
struct
ins_ops
{
36
void
(*
free
)(
struct
ins_operands
*
ops
);
37
int
(*
parse
)(
struct
ins_operands
*
ops
);
38
int
(*
scnprintf
)(
struct
ins
*
ins
,
char
*
bf
,
size_t
size
,
39
struct
ins_operands
*
ops
);
40
};
41
42
struct
ins
{
43
const
char
*
name
;
44
struct
ins_ops
*
ops
;
45
};
46
47
bool
ins__is_jump
(
const
struct
ins
*
ins
);
48
bool
ins__is_call
(
const
struct
ins
*
ins
);
49
int
ins__scnprintf
(
struct
ins
*
ins
,
char
*
bf
,
size_t
size
,
struct
ins_operands
*ops);
50
51
struct
disasm_line
{
52
struct
list_head
node
;
53
s64
offset
;
54
char
*
line
;
55
char
*
name
;
56
struct
ins
*
ins
;
57
struct
ins_operands
ops
;
58
};
59
60
static
inline
bool
disasm_line__has_offset(
const
struct
disasm_line
*
dl
)
61
{
62
return
dl->
ops
.target.offset != UINT64_MAX;
63
}
64
65
void
disasm_line__free
(
struct
disasm_line
*
dl
);
66
struct
disasm_line
*
disasm__get_next_ip_line
(
struct
list_head
*
head
,
struct
disasm_line
*
pos
);
67
int
disasm_line__scnprintf
(
struct
disasm_line
*
dl
,
char
*
bf
,
size_t
size
,
bool
raw
);
68
size_t
disasm__fprintf
(
struct
list_head
*
head
, FILE *
fp
);
69
70
struct
sym_hist
{
71
u64
sum
;
72
u64
addr
[0];
73
};
74
75
struct
source_line
{
76
struct
rb_node
node
;
77
double
percent
;
78
char
*
path
;
79
};
80
93
struct
annotated_source
{
94
struct
list_head
source
;
95
struct
source_line
*
lines
;
96
int
nr_histograms
;
97
int
sizeof_sym_hist
;
98
struct
sym_hist
histograms
[0];
99
};
100
101
struct
annotation
{
102
pthread_mutex_t
lock
;
103
struct
annotated_source
*
src
;
104
};
105
106
struct
sannotation
{
107
struct
annotation
annotation
;
108
struct
symbol
symbol
;
109
};
110
111
static
inline
struct
sym_hist
*annotation__histogram(
struct
annotation
*notes,
int
idx
)
112
{
113
return
(((
void
*)¬es->
src
->histograms) +
114
(notes->
src
->sizeof_sym_hist * idx));
115
}
116
117
static
inline
struct
annotation
*symbol__annotation(
struct
symbol
*sym)
118
{
119
struct
sannotation
*
a
=
container_of
(sym,
struct
sannotation
,
symbol
);
120
return
&a->
annotation
;
121
}
122
123
int
symbol__inc_addr_samples
(
struct
symbol
*sym,
struct
map
*
map
,
124
int
evidx,
u64
addr
);
125
int
symbol__alloc_hist
(
struct
symbol
*sym);
126
void
symbol__annotate_zero_histograms
(
struct
symbol
*sym);
127
128
int
symbol__annotate
(
struct
symbol
*sym,
struct
map
*
map
,
size_t
privsize);
129
int
symbol__annotate_init
(
struct
map
*
map
__maybe_unused
,
struct
symbol
*sym);
130
int
symbol__annotate_printf
(
struct
symbol
*sym,
struct
map
*
map
,
int
evidx,
131
bool
full_paths,
int
min_pcnt,
int
max_lines,
132
int
context
);
133
void
symbol__annotate_zero_histogram
(
struct
symbol
*sym,
int
evidx);
134
void
symbol__annotate_decay_histogram
(
struct
symbol
*sym,
int
evidx);
135
void
disasm__purge
(
struct
list_head
*
head
);
136
137
int
symbol__tty_annotate
(
struct
symbol
*sym,
struct
map
*
map
,
int
evidx,
138
bool
print_lines,
bool
full_paths,
int
min_pcnt,
139
int
max_lines);
140
141
#ifdef NEWT_SUPPORT
142
int
symbol__tui_annotate
(
struct
symbol
*sym,
struct
map
*
map
,
int
evidx,
143
void
(*
timer
)(
void
*
arg
),
void
*arg,
int
delay_secs);
144
#else
145
static
inline
int
symbol__tui_annotate
(
struct
symbol
*sym
__maybe_unused
,
146
struct
map *map __maybe_unused,
147
int
evidx __maybe_unused,
148
void
(*
timer
)(
void
*
arg
) __maybe_unused,
149
void
*arg __maybe_unused,
150
int
delay_secs __maybe_unused)
151
{
152
return
0;
153
}
154
#endif
155
156
extern
const
char
*
disassembler_style
;
157
extern
const
char
*
objdump_path
;
158
159
#endif
/* __PERF_ANNOTATE_H */
Generated on Thu Jan 10 2013 15:09:19 for Linux Kernel by
1.8.2