lkml.org 
[lkml]   [2012]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/5] trace-cmd: Use tracing directory to count CPUs
    Date
    From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>

    Count debugfs/tracing/per_cpu/cpu* to determine the
    number of CPUs.

    Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@hitachi.com>
    ---

    trace-record.c | 41 +++++++++++++++++++++++++++++++++++++++++
    1 files changed, 41 insertions(+), 0 deletions(-)

    diff --git a/trace-record.c b/trace-record.c
    index 9dc18a9..ed18951 100644
    --- a/trace-record.c
    +++ b/trace-record.c
    @@ -1179,6 +1179,41 @@ static void expand_event_list(void)
    }
    }

    +static int count_tracingdir_cpus(void)
    +{
    + char *tracing_dir = NULL;
    + char *percpu_dir = NULL;
    + struct dirent **namelist;
    + int count = 0, n;
    +
    + /* Count cpus in per_cpu directory */
    + tracing_dir = tracecmd_find_tracing_dir();
    + if (!tracing_dir)
    + return 0;
    + percpu_dir = malloc_or_die(strlen(tracing_dir) + 9);
    + if (!percpu_dir)
    + goto err;
    +
    + sprintf(percpu_dir, "%s/per_cpu", tracing_dir);
    +
    + n = scandir(percpu_dir, &namelist, NULL, alphasort);
    + if (n > 0) {
    + while (n--) {
    + if (strncmp("cpu", namelist[n]->d_name, 3) == 0)
    + count++;
    + free(namelist[n]);
    + }
    + free(namelist);
    + }
    +
    + if (percpu_dir)
    + free(percpu_dir);
    +err:
    + if (tracing_dir)
    + free(tracing_dir);
    + return count;
    +}
    +
    static int count_cpus(void)
    {
    FILE *fp;
    @@ -1189,6 +1224,12 @@ static int count_cpus(void)
    size_t n;
    int r;

    + cpus = count_tracingdir_cpus();
    + if (cpus > 0)
    + return cpus;
    +
    + warning("failed to use tracing_dir to determine number of CPUS");
    +
    cpus = sysconf(_SC_NPROCESSORS_CONF);
    if (cpus > 0)
    return cpus;



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