perf record: Move mmap setup block to separate function
authorWang Nan <wangnan0@huawei.com>
Mon, 27 Jun 2016 10:24:03 +0000 (10:24 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 28 Jun 2016 13:54:53 +0000 (10:54 -0300)
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>
tools/perf/builtin-record.c

index 81411b14df4ca69164ee0204c879bf64b68a6613..7eb8d7d29fbc2d5d45a2f3b80a7d8a969966032d 100644 (file)
@@ -342,6 +342,40 @@ int auxtrace_record__snapshot_start(struct auxtrace_record *itr __maybe_unused)
 
 #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)
 {
        char msg[512];
@@ -378,27 +412,9 @@ try_again:
                goto out;
        }
 
-       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);
-                       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;
-               }
+       rc = record__mmap(rec);
+       if (rc)
                goto out;
-       }
 
        session->evlist = evlist;
        perf_session__set_id_hdr_size(session);