lkml.org 
[lkml]   [2016]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf record: Move mmap setup block to separate function
    Commit-ID:  cda57a8c74aa326cbb1a1e2f7d30f8c76983e70c
    Gitweb: http://git.kernel.org/tip/cda57a8c74aa326cbb1a1e2f7d30f8c76983e70c
    Author: Wang Nan <wangnan0@huawei.com>
    AuthorDate: Mon, 27 Jun 2016 10:24:03 +0000
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Tue, 28 Jun 2016 10:54:53 -0300

    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>
    ---
    tools/perf/builtin-record.c | 56 +++++++++++++++++++++++++++++----------------
    1 file changed, 36 insertions(+), 20 deletions(-)

    diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    index 81411b1..7eb8d7d 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)

    #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);
    \
     
     \ /
      Last update: 2016-06-29 12:21    [W:3.165 / U:0.608 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site