aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWang Nan <wangnan0@huawei.com>2016-06-27 06:24:03 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-06-28 09:54:53 -0400
commitcda57a8c74aa326cbb1a1e2f7d30f8c76983e70c (patch)
treea78956a34d589b5b4196225d371a0234f6f0b870
parentf6c12a004c149a7b0ea1332fa715979888dd4695 (diff)
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>
-rw-r--r--tools/perf/builtin-record.c56
1 files changed, 36 insertions, 20 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 81411b14df4c..7eb8d7d29fbc 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -342,6 +342,40 @@ int auxtrace_record__snapshot_start(struct auxtrace_record *itr __maybe_unused)
342 342
343#endif 343#endif
344 344
345static int record__mmap_evlist(struct record *rec,
346 struct perf_evlist *evlist)
347{
348 struct record_opts *opts = &rec->opts;
349 char msg[512];
350
351 if (perf_evlist__mmap_ex(evlist, opts->mmap_pages, false,
352 opts->auxtrace_mmap_pages,
353 opts->auxtrace_snapshot_mode) < 0) {
354 if (errno == EPERM) {
355 pr_err("Permission error mapping pages.\n"
356 "Consider increasing "
357 "/proc/sys/kernel/perf_event_mlock_kb,\n"
358 "or try again with a smaller value of -m/--mmap_pages.\n"
359 "(current value: %u,%u)\n",
360 opts->mmap_pages, opts->auxtrace_mmap_pages);
361 return -errno;
362 } else {
363 pr_err("failed to mmap with %d (%s)\n", errno,
364 strerror_r(errno, msg, sizeof(msg)));
365 if (errno)
366 return -errno;
367 else
368 return -EINVAL;
369 }
370 }
371 return 0;
372}
373
374static int record__mmap(struct record *rec)
375{
376 return record__mmap_evlist(rec, rec->evlist);
377}
378
345static int record__open(struct record *rec) 379static int record__open(struct record *rec)
346{ 380{
347 char msg[512]; 381 char msg[512];
@@ -378,27 +412,9 @@ try_again:
378 goto out; 412 goto out;
379 } 413 }
380 414
381 if (perf_evlist__mmap_ex(evlist, opts->mmap_pages, false, 415 rc = record__mmap(rec);
382 opts->auxtrace_mmap_pages, 416 if (rc)
383 opts->auxtrace_snapshot_mode) < 0) {
384 if (errno == EPERM) {
385 pr_err("Permission error mapping pages.\n"
386 "Consider increasing "
387 "/proc/sys/kernel/perf_event_mlock_kb,\n"
388 "or try again with a smaller value of -m/--mmap_pages.\n"
389 "(current value: %u,%u)\n",
390 opts->mmap_pages, opts->auxtrace_mmap_pages);
391 rc = -errno;
392 } else {
393 pr_err("failed to mmap with %d (%s)\n", errno,
394 strerror_r(errno, msg, sizeof(msg)));
395 if (errno)
396 rc = -errno;
397 else
398 rc = -EINVAL;
399 }
400 goto out; 417 goto out;
401 }
402 418
403 session->evlist = evlist; 419 session->evlist = evlist;
404 perf_session__set_id_hdr_size(session); 420 perf_session__set_id_hdr_size(session);