lkml.org 
[lkml]   [2018]   [May]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH V2 07/20] perf tools: Add machine__nr_cpus_avail()
    Date
    Add a function to return the number of the machine's available CPUs.

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    ---
    tools/perf/util/env.c | 13 +++++++++++++
    tools/perf/util/env.h | 1 +
    tools/perf/util/machine.c | 5 +++++
    tools/perf/util/machine.h | 1 +
    4 files changed, 20 insertions(+)

    diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c
    index 319fb0a0d05e..59f38c7693f8 100644
    --- a/tools/perf/util/env.c
    +++ b/tools/perf/util/env.c
    @@ -106,11 +106,24 @@ static int perf_env__read_arch(struct perf_env *env)
    return env->arch ? 0 : -ENOMEM;
    }

    +static int perf_env__read_nr_cpus_avail(struct perf_env *env)
    +{
    + if (env->nr_cpus_avail == 0)
    + env->nr_cpus_avail = cpu__max_present_cpu();
    +
    + return env->nr_cpus_avail ? 0 : -ENOENT;
    +}
    +
    const char *perf_env__raw_arch(struct perf_env *env)
    {
    return env && !perf_env__read_arch(env) ? env->arch : "unknown";
    }

    +int perf_env__nr_cpus_avail(struct perf_env *env)
    +{
    + return env && !perf_env__read_nr_cpus_avail(env) ? env->nr_cpus_avail : 0;
    +}
    +
    void cpu_cache_level__free(struct cpu_cache_level *cache)
    {
    free(cache->type);
    diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h
    index 62e193948608..1f3ccc368530 100644
    --- a/tools/perf/util/env.h
    +++ b/tools/perf/util/env.h
    @@ -77,5 +77,6 @@ struct perf_env {

    const char *perf_env__arch(struct perf_env *env);
    const char *perf_env__raw_arch(struct perf_env *env);
    +int perf_env__nr_cpus_avail(struct perf_env *env);

    #endif /* __PERF_ENV_H */
    diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
    index 4281a9b65aba..10a440025174 100644
    --- a/tools/perf/util/machine.c
    +++ b/tools/perf/util/machine.c
    @@ -2305,6 +2305,11 @@ bool machine__is(struct machine *machine, const char *arch)
    return machine && !strcmp(perf_env__raw_arch(machine->env), arch);
    }

    +int machine__nr_cpus_avail(struct machine *machine)
    +{
    + return machine ? perf_env__nr_cpus_avail(machine->env) : 0;
    +}
    +
    int machine__get_kernel_start(struct machine *machine)
    {
    struct map *map = machine__kernel_map(machine);
    diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
    index b31d33b5aa2a..2d2b092ba753 100644
    --- a/tools/perf/util/machine.h
    +++ b/tools/perf/util/machine.h
    @@ -189,6 +189,7 @@ static inline bool machine__is_host(struct machine *machine)
    }

    bool machine__is(struct machine *machine, const char *arch);
    +int machine__nr_cpus_avail(struct machine *machine);

    struct thread *__machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
    struct thread *machine__findnew_thread(struct machine *machine, pid_t pid, pid_t tid);
    --
    1.9.1
    \
     
     \ /
      Last update: 2018-05-17 11:28    [W:4.154 / U:0.596 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site