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