lkml.org 
[lkml]   [2019]   [Jul]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] libperf: Add perf_cpu_map__for_each_cpu() macro
    Commit-ID:  09145d26b608e886415396e9277ae08f0617d21b
    Gitweb: https://git.kernel.org/tip/09145d26b608e886415396e9277ae08f0617d21b
    Author: Jiri Olsa <jolsa@kernel.org>
    AuthorDate: Sun, 21 Jul 2019 13:24:53 +0200
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Mon, 29 Jul 2019 18:34:46 -0300

    libperf: Add perf_cpu_map__for_each_cpu() macro

    Add the following macro to libperf:

    perf_cpu_map__for_each_cpu()

    And its related functions:

    perf_cpu_map__cpu()
    perf_cpu_map__nr()

    That will allow hiding how it is implemented.

    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Michael Petlan <mpetlan@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20190721112506.12306-67-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/lib/cpumap.c | 13 +++++++++++++
    tools/perf/lib/include/perf/cpumap.h | 7 +++++++
    tools/perf/lib/libperf.map | 2 ++
    3 files changed, 22 insertions(+)

    diff --git a/tools/perf/lib/cpumap.c b/tools/perf/lib/cpumap.c
    index a5d4f7ff7174..1ddb69e796e5 100644
    --- a/tools/perf/lib/cpumap.c
    +++ b/tools/perf/lib/cpumap.c
    @@ -224,3 +224,16 @@ invalid:
    out:
    return cpus;
    }
    +
    +int perf_cpu_map__cpu(const struct perf_cpu_map *cpus, int idx)
    +{
    + if (idx < cpus->nr)
    + return cpus->map[idx];
    +
    + return -1;
    +}
    +
    +int perf_cpu_map__nr(const struct perf_cpu_map *cpus)
    +{
    + return cpus ? cpus->nr : 1;
    +}
    diff --git a/tools/perf/lib/include/perf/cpumap.h b/tools/perf/lib/include/perf/cpumap.h
    index b4a9283a5dfa..1b6e7db3fa2b 100644
    --- a/tools/perf/lib/include/perf/cpumap.h
    +++ b/tools/perf/lib/include/perf/cpumap.h
    @@ -12,5 +12,12 @@ LIBPERF_API struct perf_cpu_map *perf_cpu_map__new(const char *cpu_list);
    LIBPERF_API struct perf_cpu_map *perf_cpu_map__read(FILE *file);
    LIBPERF_API struct perf_cpu_map *perf_cpu_map__get(struct perf_cpu_map *map);
    LIBPERF_API void perf_cpu_map__put(struct perf_cpu_map *map);
    +LIBPERF_API int perf_cpu_map__cpu(const struct perf_cpu_map *cpus, int idx);
    +LIBPERF_API int perf_cpu_map__nr(const struct perf_cpu_map *cpus);
    +
    +#define perf_cpu_map__for_each_cpu(cpu, idx, cpus) \
    + for ((idx) = 0, (cpu) = perf_cpu_map__cpu(cpus, idx); \
    + (idx) < perf_cpu_map__nr(cpus); \
    + (idx)++, (cpu) = perf_cpu_map__cpu(cpus, idx))

    #endif /* __LIBPERF_CPUMAP_H */
    diff --git a/tools/perf/lib/libperf.map b/tools/perf/lib/libperf.map
    index 5bd491ac1762..d4d34bea0b40 100644
    --- a/tools/perf/lib/libperf.map
    +++ b/tools/perf/lib/libperf.map
    @@ -6,6 +6,8 @@ LIBPERF_0.0.1 {
    perf_cpu_map__put;
    perf_cpu_map__new;
    perf_cpu_map__read;
    + perf_cpu_map__nr;
    + perf_cpu_map__cpu;
    perf_thread_map__new_dummy;
    perf_thread_map__set_pid;
    perf_thread_map__comm;
    \
     
     \ /
      Last update: 2019-07-30 20:57    [W:4.128 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site