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
evsel.h
Go to the documentation of this file.
1
#ifndef __PERF_EVSEL_H
2
#define __PERF_EVSEL_H 1
3
4
#include <linux/list.h>
5
#include <stdbool.h>
6
#include <stddef.h>
7
#include <linux/perf_event.h>
8
#include "
types.h
"
9
#include "
xyarray.h
"
10
#include "
cgroup.h
"
11
#include "
hist.h
"
12
13
struct
perf_counts_values
{
14
union
{
15
struct
{
16
u64
val
;
17
u64
ena
;
18
u64
run
;
19
};
20
u64
values
[3];
21
};
22
};
23
24
struct
perf_counts
{
25
s8
scaled
;
26
struct
perf_counts_values
aggr
;
27
struct
perf_counts_values
cpu
[];
28
};
29
30
struct
perf_evsel
;
31
32
/*
33
* Per fd, to map back from PERF_SAMPLE_ID to evsel, only used when there are
34
* more than one entry in the evlist.
35
*/
36
struct
perf_sample_id
{
37
struct
hlist_node
node
;
38
u64
id
;
39
struct
perf_evsel
*
evsel
;
40
};
41
48
struct
perf_evsel
{
49
struct
list_head
node
;
50
struct
perf_event_attr
attr
;
51
char
*
filter
;
52
struct
xyarray
*
fd
;
53
struct
xyarray
*
sample_id
;
54
u64
*
id
;
55
struct
perf_counts
*
counts
;
56
int
idx
;
57
u32
ids
;
58
struct
hists
hists
;
59
char
*
name
;
60
struct
event_format
*
tp_format
;
61
union
{
62
void
*
priv
;
63
off_t
id_offset
;
64
};
65
struct
cgroup_sel
*
cgrp
;
66
struct
{
67
void
*
func
;
68
void
*
data
;
69
}
handler
;
70
struct
cpu_map
*
cpus
;
71
unsigned
int
sample_size
;
72
bool
supported
;
73
bool
needs_swap
;
74
/* parse modifier helper */
75
int
exclude_GH
;
76
struct
perf_evsel
*
leader
;
77
char
*
group_name
;
78
};
79
80
struct
cpu_map
;
81
struct
thread_map
;
82
struct
perf_evlist
;
83
struct
perf_record_opts
;
84
85
struct
perf_evsel
*
perf_evsel__new
(
struct
perf_event_attr
*
attr
,
int
idx
);
86
struct
perf_evsel
*
perf_evsel__newtp
(
const
char
*
sys
,
const
char
*
name
,
int
idx
);
87
88
struct
event_format
*
event_format__new
(
const
char
*
sys
,
const
char
*
name
);
89
90
void
perf_evsel__init
(
struct
perf_evsel
*evsel,
91
struct
perf_event_attr
*
attr
,
int
idx
);
92
void
perf_evsel__exit
(
struct
perf_evsel
*evsel);
93
void
perf_evsel__delete
(
struct
perf_evsel
*evsel);
94
95
void
perf_evsel__config
(
struct
perf_evsel
*evsel,
96
struct
perf_record_opts
*
opts
,
97
struct
perf_evsel
*
first
);
98
99
bool
perf_evsel__is_cache_op_valid
(
u8
type
,
u8
op
);
100
101
#define PERF_EVSEL__MAX_ALIASES 8
102
103
extern
const
char
*
perf_evsel__hw_cache
[
PERF_COUNT_HW_CACHE_MAX
]
104
[
PERF_EVSEL__MAX_ALIASES
];
105
extern
const
char
*
perf_evsel__hw_cache_op
[
PERF_COUNT_HW_CACHE_OP_MAX
]
106
[
PERF_EVSEL__MAX_ALIASES
];
107
extern
const
char
*
perf_evsel__hw_cache_result
[
PERF_COUNT_HW_CACHE_RESULT_MAX
]
108
[
PERF_EVSEL__MAX_ALIASES
];
109
extern
const
char
*
perf_evsel__hw_names
[
PERF_COUNT_HW_MAX
];
110
extern
const
char
*
perf_evsel__sw_names
[
PERF_COUNT_SW_MAX
];
111
int
__perf_evsel__hw_cache_type_op_res_name
(
u8
type
,
u8
op
,
u8
result
,
112
char
*
bf
,
size_t
size
);
113
const
char
*
perf_evsel__name
(
struct
perf_evsel
*evsel);
114
115
int
perf_evsel__alloc_fd
(
struct
perf_evsel
*evsel,
int
ncpus
,
int
nthreads);
116
int
perf_evsel__alloc_id
(
struct
perf_evsel
*evsel,
int
ncpus
,
int
nthreads);
117
int
perf_evsel__alloc_counts
(
struct
perf_evsel
*evsel,
int
ncpus
);
118
void
perf_evsel__free_fd
(
struct
perf_evsel
*evsel);
119
void
perf_evsel__free_id
(
struct
perf_evsel
*evsel);
120
void
perf_evsel__close_fd
(
struct
perf_evsel
*evsel,
int
ncpus
,
int
nthreads);
121
122
int
perf_evsel__set_filter
(
struct
perf_evsel
*evsel,
int
ncpus
,
int
nthreads,
123
const
char
*
filter
);
124
125
int
perf_evsel__open_per_cpu
(
struct
perf_evsel
*evsel,
126
struct
cpu_map
*
cpus
);
127
int
perf_evsel__open_per_thread
(
struct
perf_evsel
*evsel,
128
struct
thread_map
*
threads
);
129
int
perf_evsel__open
(
struct
perf_evsel
*evsel,
struct
cpu_map
*
cpus
,
130
struct
thread_map
*
threads
);
131
void
perf_evsel__close
(
struct
perf_evsel
*evsel,
int
ncpus
,
int
nthreads);
132
133
struct
perf_sample
;
134
135
void
*
perf_evsel__rawptr
(
struct
perf_evsel
*evsel,
struct
perf_sample
*
sample
,
136
const
char
*
name
);
137
u64
perf_evsel__intval
(
struct
perf_evsel
*evsel,
struct
perf_sample
*
sample
,
138
const
char
*
name
);
139
140
static
inline
char
*perf_evsel__strval(
struct
perf_evsel
*evsel,
141
struct
perf_sample
*
sample
,
142
const
char
*
name
)
143
{
144
return
perf_evsel__rawptr
(evsel, sample, name);
145
}
146
147
struct
format_field
;
148
149
struct
format_field
*
perf_evsel__field
(
struct
perf_evsel
*evsel,
const
char
*
name
);
150
151
#define perf_evsel__match(evsel, t, c) \
152
(evsel->attr.type == PERF_TYPE_##t && \
153
evsel->attr.config == PERF_COUNT_##c)
154
155
static
inline
bool
perf_evsel__match2(
struct
perf_evsel
*
e1
,
156
struct
perf_evsel
*
e2
)
157
{
158
return
(e1->
attr
.type == e2->
attr
.type) &&
159
(e1->
attr
.config == e2->
attr
.config);
160
}
161
162
int
__perf_evsel__read_on_cpu
(
struct
perf_evsel
*evsel,
163
int
cpu
,
int
thread
,
bool
scale);
164
172
static
inline
int
perf_evsel__read_on_cpu(
struct
perf_evsel
*evsel,
173
int
cpu
,
int
thread
)
174
{
175
return
__perf_evsel__read_on_cpu
(evsel, cpu, thread,
false
);
176
}
177
185
static
inline
int
perf_evsel__read_on_cpu_scaled(
struct
perf_evsel
*evsel,
186
int
cpu
,
int
thread
)
187
{
188
return
__perf_evsel__read_on_cpu
(evsel, cpu, thread,
true
);
189
}
190
191
int
__perf_evsel__read
(
struct
perf_evsel
*evsel,
int
ncpus
,
int
nthreads,
192
bool
scale);
193
201
static
inline
int
perf_evsel__read(
struct
perf_evsel
*evsel,
202
int
ncpus
,
int
nthreads)
203
{
204
return
__perf_evsel__read
(evsel, ncpus, nthreads,
false
);
205
}
206
214
static
inline
int
perf_evsel__read_scaled(
struct
perf_evsel
*evsel,
215
int
ncpus
,
int
nthreads)
216
{
217
return
__perf_evsel__read
(evsel, ncpus, nthreads,
true
);
218
}
219
220
void
hists__init
(
struct
hists
*
hists
);
221
222
int
perf_evsel__parse_sample
(
struct
perf_evsel
*evsel,
union
perf_event
*
event
,
223
struct
perf_sample
*
sample
);
224
225
static
inline
struct
perf_evsel
*perf_evsel__next(
struct
perf_evsel
*evsel)
226
{
227
return
list_entry
(evsel->
node
.next,
struct
perf_evsel
,
node
);
228
}
229
#endif
/* __PERF_EVSEL_H */
Generated on Thu Jan 10 2013 15:09:21 for Linux Kernel by
1.8.2