lkml.org 
[lkml]   [2023]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v4 33/35] perf pmus: Add function to return count of core PMUs
    From
    Add perf_pmus__num_core_pmus that will count core PMUs holding the
    result in a static. Reuse for perf_pmus__num_mem_pmus.

    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    ---
    tools/perf/util/pmus.c | 21 ++++++++++++++-------
    tools/perf/util/pmus.h | 1 +
    2 files changed, 15 insertions(+), 7 deletions(-)

    diff --git a/tools/perf/util/pmus.c b/tools/perf/util/pmus.c
    index 6ecccb5ad03e..bf927aed162e 100644
    --- a/tools/perf/util/pmus.c
    +++ b/tools/perf/util/pmus.c
    @@ -229,14 +229,8 @@ const struct perf_pmu *perf_pmus__pmu_for_pmu_filter(const char *str)

    int perf_pmus__num_mem_pmus(void)
    {
    - struct perf_pmu *pmu = NULL;
    - int count = 0;
    -
    /* All core PMUs are for mem events. */
    - while ((pmu = perf_pmus__scan_core(pmu)) != NULL)
    - count++;
    -
    - return count;
    + return perf_pmus__num_core_pmus();
    }

    /** Struct for ordering events as output in perf list. */
    @@ -488,6 +482,19 @@ bool perf_pmus__has_hybrid(void)
    return has_hybrid;
    }

    +int perf_pmus__num_core_pmus(void)
    +{
    + static int count;
    +
    + if (!count) {
    + struct perf_pmu *pmu = NULL;
    +
    + while ((pmu = perf_pmus__scan_core(pmu)) != NULL)
    + count++;
    + }
    + return count;
    +}
    +
    struct perf_pmu *evsel__find_pmu(const struct evsel *evsel)
    {
    struct perf_pmu *pmu = evsel->pmu;
    diff --git a/tools/perf/util/pmus.h b/tools/perf/util/pmus.h
    index 9de0222ed52b..27400a027d41 100644
    --- a/tools/perf/util/pmus.h
    +++ b/tools/perf/util/pmus.h
    @@ -19,5 +19,6 @@ int perf_pmus__num_mem_pmus(void);
    void perf_pmus__print_pmu_events(const struct print_callbacks *print_cb, void *print_state);
    bool perf_pmus__have_event(const char *pname, const char *name);
    bool perf_pmus__has_hybrid(void);
    +int perf_pmus__num_core_pmus(void);

    #endif /* __PMUS_H */
    --
    2.41.0.rc0.172.g3f132b7071-goog
    \
     
     \ /
      Last update: 2023-05-26 23:57    [W:4.490 / U:0.712 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site