lkml.org 
[lkml]   [2012]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] perf tools: Ensure single disable call per event in record comand
    Commit-ID:  2711926a416733b853977a0e014c713955ad0d8a
    Gitweb: http://git.kernel.org/tip/2711926a416733b853977a0e014c713955ad0d8a
    Author: Jiri Olsa <jolsa@redhat.com>
    AuthorDate: Mon, 12 Nov 2012 18:34:02 +0100
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Wed, 14 Nov 2012 16:52:09 -0300

    perf tools: Ensure single disable call per event in record comand

    It's possible we issue the event disable ioctl multiple times until we
    read the final portion of the mmap buffer.

    Ensuring just single disable ioctl call for event, because there's no
    need to do that more than once.

    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1352741644-16809-4-git-send-email-jolsa@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/builtin-record.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    index 268b356..f3151d3 100644
    --- a/tools/perf/builtin-record.c
    +++ b/tools/perf/builtin-record.c
    @@ -502,6 +502,7 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
    struct perf_evlist *evsel_list = rec->evlist;
    const char *output_name = rec->output_name;
    struct perf_session *session;
    + bool disabled = false;

    rec->progname = argv[0];

    @@ -735,8 +736,10 @@ static int __cmd_record(struct perf_record *rec, int argc, const char **argv)
    * die with the process and we wait for that. Thus no need to
    * disable events in this case.
    */
    - if (done && !perf_target__none(&opts->target))
    + if (done && !disabled && !perf_target__none(&opts->target)) {
    perf_evlist__disable(evsel_list);
    + disabled = true;
    + }
    }

    if (quiet || signr == SIGUSR1)

    \
     
     \ /
      Last update: 2012-12-08 16:21    [W:5.074 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site