mirror of
https://github.com/torvalds/linux.git
synced 2024-09-24 08:53:09 +00:00
perf record: Move mmap setup block to separate function
Following commits introduce multiple evlists to record. This patch extracts perf_evlist__mmap_ex() processing to a new function, creates record__mmap() and record__mmap_evlist() to wrap perf_evlist__mmap_ex() and its error processing. They will be improvemented to create mmap for all evlists. Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: He Kuang <hekuang@huawei.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Nilay Vaish <nilayvaish@gmail.com> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1467023052-146749-2-git-send-email-wangnan0@huawei.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
f6c12a004c
commit
cda57a8c74
|
@ -342,6 +342,40 @@ int auxtrace_record__snapshot_start(struct auxtrace_record *itr __maybe_unused)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int record__mmap_evlist(struct record *rec,
|
||||||
|
struct perf_evlist *evlist)
|
||||||
|
{
|
||||||
|
struct record_opts *opts = &rec->opts;
|
||||||
|
char msg[512];
|
||||||
|
|
||||||
|
if (perf_evlist__mmap_ex(evlist, opts->mmap_pages, false,
|
||||||
|
opts->auxtrace_mmap_pages,
|
||||||
|
opts->auxtrace_snapshot_mode) < 0) {
|
||||||
|
if (errno == EPERM) {
|
||||||
|
pr_err("Permission error mapping pages.\n"
|
||||||
|
"Consider increasing "
|
||||||
|
"/proc/sys/kernel/perf_event_mlock_kb,\n"
|
||||||
|
"or try again with a smaller value of -m/--mmap_pages.\n"
|
||||||
|
"(current value: %u,%u)\n",
|
||||||
|
opts->mmap_pages, opts->auxtrace_mmap_pages);
|
||||||
|
return -errno;
|
||||||
|
} else {
|
||||||
|
pr_err("failed to mmap with %d (%s)\n", errno,
|
||||||
|
strerror_r(errno, msg, sizeof(msg)));
|
||||||
|
if (errno)
|
||||||
|
return -errno;
|
||||||
|
else
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int record__mmap(struct record *rec)
|
||||||
|
{
|
||||||
|
return record__mmap_evlist(rec, rec->evlist);
|
||||||
|
}
|
||||||
|
|
||||||
static int record__open(struct record *rec)
|
static int record__open(struct record *rec)
|
||||||
{
|
{
|
||||||
char msg[512];
|
char msg[512];
|
||||||
|
@ -378,27 +412,9 @@ try_again:
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (perf_evlist__mmap_ex(evlist, opts->mmap_pages, false,
|
rc = record__mmap(rec);
|
||||||
opts->auxtrace_mmap_pages,
|
if (rc)
|
||||||
opts->auxtrace_snapshot_mode) < 0) {
|
|
||||||
if (errno == EPERM) {
|
|
||||||
pr_err("Permission error mapping pages.\n"
|
|
||||||
"Consider increasing "
|
|
||||||
"/proc/sys/kernel/perf_event_mlock_kb,\n"
|
|
||||||
"or try again with a smaller value of -m/--mmap_pages.\n"
|
|
||||||
"(current value: %u,%u)\n",
|
|
||||||
opts->mmap_pages, opts->auxtrace_mmap_pages);
|
|
||||||
rc = -errno;
|
|
||||||
} else {
|
|
||||||
pr_err("failed to mmap with %d (%s)\n", errno,
|
|
||||||
strerror_r(errno, msg, sizeof(msg)));
|
|
||||||
if (errno)
|
|
||||||
rc = -errno;
|
|
||||||
else
|
|
||||||
rc = -EINVAL;
|
|
||||||
}
|
|
||||||
goto out;
|
goto out;
|
||||||
}
|
|
||||||
|
|
||||||
session->evlist = evlist;
|
session->evlist = evlist;
|
||||||
perf_session__set_id_hdr_size(session);
|
perf_session__set_id_hdr_size(session);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user