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
builtin-evlist.c
Go to the documentation of this file.
1
/*
2
* Builtin evlist command: Show the list of event selectors present
3
* in a perf.data file.
4
*/
5
#include "
builtin.h
"
6
7
#include "
util/util.h
"
8
9
#include <linux/list.h>
10
11
#include "
perf.h
"
12
#include "
util/evlist.h
"
13
#include "
util/evsel.h
"
14
#include "
util/parse-events.h
"
15
#include "
util/parse-options.h
"
16
#include "
util/session.h
"
17
18
struct
perf_attr_details
{
19
bool
freq
;
20
bool
verbose
;
21
};
22
23
static
int
comma_printf(
bool
*
first
,
const
char
*
fmt
, ...)
24
{
25
va_list
args
;
26
int
ret
= 0;
27
28
if
(!*first) {
29
ret +=
printf
(
","
);
30
}
else
{
31
ret +=
printf
(
":"
);
32
*first =
false
;
33
}
34
35
va_start
(args, fmt);
36
ret += vprintf(fmt, args);
37
va_end
(args);
38
return
ret
;
39
}
40
41
static
int
__if_print(
bool
*
first
,
const
char
*
field
,
u64
value
)
42
{
43
if
(value == 0)
44
return
0;
45
46
return
comma_printf(first,
" %s: %"
PRIu64
, field, value);
47
}
48
49
#define if_print(field) __if_print(&first, #field, pos->attr.field)
50
51
static
int
__cmd_evlist(
const
char
*input_name,
struct
perf_attr_details
*details)
52
{
53
struct
perf_session
*session;
54
struct
perf_evsel
*
pos
;
55
56
session =
perf_session__new
(input_name,
O_RDONLY
, 0,
false
,
NULL
);
57
if
(session ==
NULL
)
58
return
-
ENOMEM
;
59
60
list_for_each_entry
(pos, &session->
evlist
->entries,
node
) {
61
bool
first =
true
;
62
63
printf
(
"%s"
,
perf_evsel__name
(pos));
64
65
if
(details->
verbose
|| details->
freq
) {
66
comma_printf(&first,
" sample_freq=%"
PRIu64
,
67
(
u64
)pos->
attr
.sample_freq);
68
}
69
70
if
(details->
verbose
) {
71
if_print
(
type
);
72
if_print
(
config
);
73
if_print
(config1);
74
if_print
(config2);
75
if_print
(
size
);
76
if_print
(
sample_type
);
77
if_print
(read_format);
78
if_print
(disabled);
79
if_print
(inherit);
80
if_print
(pinned);
81
if_print
(exclusive);
82
if_print
(exclude_user);
83
if_print
(exclude_kernel);
84
if_print
(exclude_hv);
85
if_print
(exclude_idle);
86
if_print
(mmap);
87
if_print
(comm);
88
if_print
(
freq
);
89
if_print
(inherit_stat);
90
if_print
(enable_on_exec);
91
if_print
(
task
);
92
if_print
(watermark);
93
if_print
(precise_ip);
94
if_print
(mmap_data);
95
if_print
(sample_id_all);
96
if_print
(exclude_host);
97
if_print
(exclude_guest);
98
if_print
(
__reserved_1
);
99
if_print
(wakeup_events);
100
if_print
(bp_type);
101
if_print
(branch_sample_type);
102
}
103
104
putchar
(
'\n'
);
105
}
106
107
perf_session__delete
(session);
108
return
0;
109
}
110
111
int
cmd_evlist
(
int
argc
,
const
char
**argv,
const
char
*
prefix
__maybe_unused
)
112
{
113
struct
perf_attr_details
details = { .
verbose
=
false
, };
114
const
char
*input_name =
NULL
;
115
const
struct
option
options[] = {
116
OPT_STRING
(
'i'
,
"input"
, &input_name,
"file"
,
"Input file name"
),
117
OPT_BOOLEAN
(
'F'
,
"freq"
, &details.
freq
,
"Show the sample frequency"
),
118
OPT_BOOLEAN
(
'v'
,
"verbose"
, &details.
verbose
,
119
"Show all event attr details"
),
120
OPT_END
()
121
};
122
const
char
*
const
evlist_usage[] = {
123
"perf evlist [<options>]"
,
124
NULL
125
};
126
127
argc =
parse_options
(argc, argv, options, evlist_usage, 0);
128
if
(argc)
129
usage_with_options
(evlist_usage, options);
130
131
return
__cmd_evlist(input_name, &details);
132
}
Generated on Thu Jan 10 2013 15:09:09 for Linux Kernel by
1.8.2