lkml.org 
[lkml]   [2012]   [Jul]   [6]   [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: Fix generation of pmu list
    Commit-ID:  9bc8f9fe2c6e3778202c76ef85ef291567c00cb8
    Gitweb: http://git.kernel.org/tip/9bc8f9fe2c6e3778202c76ef85ef291567c00cb8
    Author: Robert Richter <robert.richter@amd.com>
    AuthorDate: Thu, 14 Jun 2012 22:38:37 +0200
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 29 Jun 2012 13:31:27 -0300

    perf tools: Fix generation of pmu list

    The internal pmu list was never used. With each perf_pmu__find() call
    the pmu structure was created new by parsing sysfs. Beside this it
    caused memory leaks. We now keep all pmus by adding them to the list.

    Also, pmu_lookup() should return pmus that do not expose the format
    specifier in sysfs.

    We need a valid internal pmu list in a later patch to iterate over all
    pmus that exist in the system.

    Signed-off-by: Robert Richter <robert.richter@amd.com>
    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>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/1339706321-8802-3-git-send-email-jolsa@redhat.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/util/pmu.c | 3 ++-
    1 files changed, 2 insertions(+), 1 deletions(-)

    diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
    index 74d0948e..67715a4 100644
    --- a/tools/perf/util/pmu.c
    +++ b/tools/perf/util/pmu.c
    @@ -72,7 +72,7 @@ static int pmu_format(char *name, struct list_head *format)
    "%s/bus/event_source/devices/%s/format", sysfs, name);

    if (stat(path, &st) < 0)
    - return -1;
    + return 0; /* no error if format does not exist */

    if (pmu_format_parse(path, format))
    return -1;
    @@ -252,6 +252,7 @@ static struct perf_pmu *pmu_lookup(char *name)
    list_splice(&aliases, &pmu->aliases);
    pmu->name = strdup(name);
    pmu->type = type;
    + list_add_tail(&pmu->list, &pmus);
    return pmu;
    }


    \
     
     \ /
      Last update: 2012-07-06 13:41    [W:2.994 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site