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
session.h
Go to the documentation of this file.
1
#ifndef __PERF_SESSION_H
2
#define __PERF_SESSION_H
3
4
#include "
hist.h
"
5
#include "
event.h
"
6
#include "
header.h
"
7
#include "
symbol.h
"
8
#include "
thread.h
"
9
#include <linux/rbtree.h>
10
#include <linux/perf_event.h>
11
12
struct
sample_queue
;
13
struct
ip_callchain
;
14
struct
thread
;
15
16
struct
ordered_samples
{
17
u64
last_flush
;
18
u64
next_flush
;
19
u64
max_timestamp
;
20
struct
list_head
samples
;
21
struct
list_head
sample_cache
;
22
struct
list_head
to_free
;
23
struct
sample_queue
*
sample_buffer
;
24
struct
sample_queue
*
last_sample
;
25
int
sample_buffer_idx
;
26
unsigned
int
nr_samples
;
27
};
28
29
struct
perf_session
{
30
struct
perf_header
header
;
31
unsigned
long
size
;
32
unsigned
long
mmap_window
;
33
struct
machine
host_machine
;
34
struct
rb_root
machines
;
35
struct
perf_evlist
*
evlist
;
36
struct
pevent
*
pevent
;
37
/*
38
* FIXME: Need to split this up further, we need global
39
* stats + per event stats.
40
*/
41
struct
hists
hists
;
42
int
fd
;
43
bool
fd_pipe
;
44
bool
repipe
;
45
int
cwdlen
;
46
char
*
cwd
;
47
struct
ordered_samples
ordered_samples
;
48
char
filename
[1];
49
};
50
51
struct
perf_tool
;
52
53
struct
perf_session
*
perf_session__new
(
const
char
*
filename
,
int
mode
,
54
bool
force
,
bool
repipe
,
55
struct
perf_tool
*tool);
56
void
perf_session__delete
(
struct
perf_session
*
self
);
57
58
void
perf_event_header__bswap
(
struct
perf_event_header
*
self
);
59
60
int
__perf_session__process_events
(
struct
perf_session
*
self
,
61
u64
data_offset
,
u64
data_size
,
u64
size
,
62
struct
perf_tool
*tool);
63
int
perf_session__process_events
(
struct
perf_session
*
self
,
64
struct
perf_tool
*tool);
65
66
int
perf_session__resolve_callchain
(
struct
perf_session
*
self
,
struct
perf_evsel
*evsel,
67
struct
thread
*
thread
,
68
struct
ip_callchain
*
chain
,
69
struct
symbol
**parent);
70
71
struct
branch_info
*
machine__resolve_bstack
(
struct
machine
*
self
,
72
struct
thread
*
thread
,
73
struct
branch_stack
*bs);
74
75
bool
perf_session__has_traces
(
struct
perf_session
*
self
,
const
char
*
msg
);
76
77
void
mem_bswap_64
(
void
*
src
,
int
byte_size);
78
void
mem_bswap_32
(
void
*
src
,
int
byte_size);
79
void
perf_event__attr_swap
(
struct
perf_event_attr
*
attr
);
80
81
int
perf_session__create_kernel_maps
(
struct
perf_session
*
self
);
82
83
void
perf_session__set_id_hdr_size
(
struct
perf_session
*session);
84
void
perf_session__remove_thread
(
struct
perf_session
*
self
,
struct
thread
*
th
);
85
86
static
inline
87
struct
machine
*perf_session__find_host_machine(
struct
perf_session
*
self
)
88
{
89
return
&
self
->host_machine;
90
}
91
92
static
inline
93
struct
machine
*perf_session__find_machine(
struct
perf_session
*
self
,
pid_t
pid
)
94
{
95
if
(pid ==
HOST_KERNEL_ID
)
96
return
&
self
->host_machine;
97
return
machines__find
(&self->machines, pid);
98
}
99
100
static
inline
101
struct
machine
*perf_session__findnew_machine(
struct
perf_session
*
self
,
pid_t
pid)
102
{
103
if
(pid ==
HOST_KERNEL_ID
)
104
return
&
self
->host_machine;
105
return
machines__findnew
(&self->machines, pid);
106
}
107
108
static
inline
109
void
perf_session__process_machines(
struct
perf_session
*
self
,
110
struct
perf_tool
*tool,
111
machine__process_t
process)
112
{
113
process(&self->host_machine, tool);
114
return
machines__process
(&self->machines, process, tool);
115
}
116
117
struct
thread
*
perf_session__findnew
(
struct
perf_session
*
self
,
pid_t
pid);
118
size_t
perf_session__fprintf
(
struct
perf_session
*
self
, FILE *
fp
);
119
120
size_t
perf_session__fprintf_dsos
(
struct
perf_session
*
self
, FILE *
fp
);
121
122
size_t
perf_session__fprintf_dsos_buildid
(
struct
perf_session
*
self
,
123
FILE *
fp
,
bool
with_hits);
124
125
size_t
perf_session__fprintf_nr_events
(
struct
perf_session
*session, FILE *
fp
);
126
127
struct
perf_evsel
*
perf_session__find_first_evtype
(
struct
perf_session
*session,
128
unsigned
int
type
);
129
130
void
perf_evsel__print_ip
(
struct
perf_evsel
*evsel,
union
perf_event
*
event
,
131
struct
perf_sample
*
sample
,
struct
machine
*
machine
,
132
int
print_sym,
int
print_dso,
int
print_symoffset);
133
134
int
perf_session__cpu_bitmap
(
struct
perf_session
*session,
135
const
char
*cpu_list,
unsigned
long
*cpu_bitmap);
136
137
void
perf_session__fprintf_info
(
struct
perf_session
*
s
, FILE *
fp
,
bool
full
);
138
139
struct
perf_evsel_str_handler
;
140
141
int
__perf_session__set_tracepoints_handlers
(
struct
perf_session
*session,
142
const
struct
perf_evsel_str_handler
*assocs,
143
size_t
nr_assocs);
144
145
#define perf_session__set_tracepoints_handlers(session, array) \
146
__perf_session__set_tracepoints_handlers(session, array, ARRAY_SIZE(array))
147
#endif
/* __PERF_SESSION_H */
Generated on Thu Jan 10 2013 15:09:25 for Linux Kernel by
1.8.2