perf record: Remove old evsel_list usage
To be consistent with other places, use just 'evlist' for the evsel list variable, and since we have it in 'struct record', use it directly from there. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-396bnfvmlxrsj3o2tk47b8t1@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
735f7e0bbe
commit
3e2be2da8f
1 changed files with 19 additions and 24 deletions
|
@ -324,7 +324,6 @@ out:
|
||||||
|
|
||||||
static void record__init_features(struct record *rec)
|
static void record__init_features(struct record *rec)
|
||||||
{
|
{
|
||||||
struct perf_evlist *evsel_list = rec->evlist;
|
|
||||||
struct perf_session *session = rec->session;
|
struct perf_session *session = rec->session;
|
||||||
int feat;
|
int feat;
|
||||||
|
|
||||||
|
@ -334,7 +333,7 @@ static void record__init_features(struct record *rec)
|
||||||
if (rec->no_buildid)
|
if (rec->no_buildid)
|
||||||
perf_header__clear_feat(&session->header, HEADER_BUILD_ID);
|
perf_header__clear_feat(&session->header, HEADER_BUILD_ID);
|
||||||
|
|
||||||
if (!have_tracepoints(&evsel_list->entries))
|
if (!have_tracepoints(&rec->evlist->entries))
|
||||||
perf_header__clear_feat(&session->header, HEADER_TRACING_DATA);
|
perf_header__clear_feat(&session->header, HEADER_TRACING_DATA);
|
||||||
|
|
||||||
if (!rec->opts.branch_stack)
|
if (!rec->opts.branch_stack)
|
||||||
|
@ -365,7 +364,6 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
struct machine *machine;
|
struct machine *machine;
|
||||||
struct perf_tool *tool = &rec->tool;
|
struct perf_tool *tool = &rec->tool;
|
||||||
struct record_opts *opts = &rec->opts;
|
struct record_opts *opts = &rec->opts;
|
||||||
struct perf_evlist *evsel_list = rec->evlist;
|
|
||||||
struct perf_data_file *file = &rec->file;
|
struct perf_data_file *file = &rec->file;
|
||||||
struct perf_session *session;
|
struct perf_session *session;
|
||||||
bool disabled = false;
|
bool disabled = false;
|
||||||
|
@ -388,7 +386,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
record__init_features(rec);
|
record__init_features(rec);
|
||||||
|
|
||||||
if (forks) {
|
if (forks) {
|
||||||
err = perf_evlist__prepare_workload(evsel_list, &opts->target,
|
err = perf_evlist__prepare_workload(rec->evlist, &opts->target,
|
||||||
argv, file->is_pipe,
|
argv, file->is_pipe,
|
||||||
workload_exec_failed_signal);
|
workload_exec_failed_signal);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
|
@ -402,7 +400,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
goto out_delete_session;
|
goto out_delete_session;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!evsel_list->nr_groups)
|
if (!rec->evlist->nr_groups)
|
||||||
perf_header__clear_feat(&session->header, HEADER_GROUP_DESC);
|
perf_header__clear_feat(&session->header, HEADER_GROUP_DESC);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -415,7 +413,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto out_delete_session;
|
goto out_delete_session;
|
||||||
} else {
|
} else {
|
||||||
err = perf_session__write_header(session, evsel_list,
|
err = perf_session__write_header(session, rec->evlist,
|
||||||
file->fd, false);
|
file->fd, false);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto out_delete_session;
|
goto out_delete_session;
|
||||||
|
@ -439,7 +437,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
goto out_delete_session;
|
goto out_delete_session;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (have_tracepoints(&evsel_list->entries)) {
|
if (have_tracepoints(&rec->evlist->entries)) {
|
||||||
/*
|
/*
|
||||||
* FIXME err <= 0 here actually means that
|
* FIXME err <= 0 here actually means that
|
||||||
* there were no tracepoints so its not really
|
* there were no tracepoints so its not really
|
||||||
|
@ -448,7 +446,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
* return this more properly and also
|
* return this more properly and also
|
||||||
* propagate errors that now are calling die()
|
* propagate errors that now are calling die()
|
||||||
*/
|
*/
|
||||||
err = perf_event__synthesize_tracing_data(tool, file->fd, evsel_list,
|
err = perf_event__synthesize_tracing_data(tool, file->fd, rec->evlist,
|
||||||
process_synthesized_event);
|
process_synthesized_event);
|
||||||
if (err <= 0) {
|
if (err <= 0) {
|
||||||
pr_err("Couldn't record tracing data.\n");
|
pr_err("Couldn't record tracing data.\n");
|
||||||
|
@ -480,7 +478,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
perf_event__synthesize_guest_os, tool);
|
perf_event__synthesize_guest_os, tool);
|
||||||
}
|
}
|
||||||
|
|
||||||
err = __machine__synthesize_threads(machine, tool, &opts->target, evsel_list->threads,
|
err = __machine__synthesize_threads(machine, tool, &opts->target, rec->evlist->threads,
|
||||||
process_synthesized_event, opts->sample_address);
|
process_synthesized_event, opts->sample_address);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
goto out_delete_session;
|
goto out_delete_session;
|
||||||
|
@ -502,13 +500,13 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
* so don't spoil it by prematurely enabling them.
|
* so don't spoil it by prematurely enabling them.
|
||||||
*/
|
*/
|
||||||
if (!target__none(&opts->target))
|
if (!target__none(&opts->target))
|
||||||
perf_evlist__enable(evsel_list);
|
perf_evlist__enable(rec->evlist);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let the child rip
|
* Let the child rip
|
||||||
*/
|
*/
|
||||||
if (forks)
|
if (forks)
|
||||||
perf_evlist__start_workload(evsel_list);
|
perf_evlist__start_workload(rec->evlist);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int hits = rec->samples;
|
int hits = rec->samples;
|
||||||
|
@ -521,7 +519,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
if (hits == rec->samples) {
|
if (hits == rec->samples) {
|
||||||
if (done)
|
if (done)
|
||||||
break;
|
break;
|
||||||
err = poll(evsel_list->pollfd, evsel_list->nr_fds, -1);
|
err = poll(rec->evlist->pollfd, rec->evlist->nr_fds, -1);
|
||||||
waking++;
|
waking++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -531,7 +529,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
|
||||||
* disable events in this case.
|
* disable events in this case.
|
||||||
*/
|
*/
|
||||||
if (done && !disabled && !target__none(&opts->target)) {
|
if (done && !disabled && !target__none(&opts->target)) {
|
||||||
perf_evlist__disable(evsel_list);
|
perf_evlist__disable(rec->evlist);
|
||||||
disabled = true;
|
disabled = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -901,16 +899,13 @@ const struct option record_options[] = {
|
||||||
int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
|
int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
{
|
{
|
||||||
int err = -ENOMEM;
|
int err = -ENOMEM;
|
||||||
struct perf_evlist *evsel_list;
|
|
||||||
struct record *rec = &record;
|
struct record *rec = &record;
|
||||||
char errbuf[BUFSIZ];
|
char errbuf[BUFSIZ];
|
||||||
|
|
||||||
evsel_list = perf_evlist__new();
|
rec->evlist = perf_evlist__new();
|
||||||
if (evsel_list == NULL)
|
if (rec->evlist == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
rec->evlist = evsel_list;
|
|
||||||
|
|
||||||
argc = parse_options(argc, argv, record_options, record_usage,
|
argc = parse_options(argc, argv, record_options, record_usage,
|
||||||
PARSE_OPT_STOP_AT_NON_OPTION);
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
||||||
if (!argc && target__none(&rec->opts.target))
|
if (!argc && target__none(&rec->opts.target))
|
||||||
|
@ -937,8 +932,8 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
if (rec->no_buildid_cache || rec->no_buildid)
|
if (rec->no_buildid_cache || rec->no_buildid)
|
||||||
disable_buildid_cache();
|
disable_buildid_cache();
|
||||||
|
|
||||||
if (evsel_list->nr_entries == 0 &&
|
if (rec->evlist->nr_entries == 0 &&
|
||||||
perf_evlist__add_default(evsel_list) < 0) {
|
perf_evlist__add_default(rec->evlist) < 0) {
|
||||||
pr_err("Not enough memory for event selector list\n");
|
pr_err("Not enough memory for event selector list\n");
|
||||||
goto out_symbol_exit;
|
goto out_symbol_exit;
|
||||||
}
|
}
|
||||||
|
@ -964,7 +959,7 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
if (perf_evlist__create_maps(evsel_list, &rec->opts.target) < 0)
|
if (perf_evlist__create_maps(rec->evlist, &rec->opts.target) < 0)
|
||||||
usage_with_options(record_usage, record_options);
|
usage_with_options(record_usage, record_options);
|
||||||
|
|
||||||
if (record_opts__config(&rec->opts)) {
|
if (record_opts__config(&rec->opts)) {
|
||||||
|
@ -974,10 +969,10 @@ int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
|
||||||
|
|
||||||
err = __cmd_record(&record, argc, argv);
|
err = __cmd_record(&record, argc, argv);
|
||||||
|
|
||||||
perf_evlist__munmap(evsel_list);
|
perf_evlist__munmap(rec->evlist);
|
||||||
perf_evlist__close(evsel_list);
|
perf_evlist__close(rec->evlist);
|
||||||
out_free_fd:
|
out_free_fd:
|
||||||
perf_evlist__delete_maps(evsel_list);
|
perf_evlist__delete_maps(rec->evlist);
|
||||||
out_symbol_exit:
|
out_symbol_exit:
|
||||||
symbol__exit();
|
symbol__exit();
|
||||||
return err;
|
return err;
|
||||||
|
|
Loading…
Add table
Reference in a new issue