lkml.org 
[lkml]   [2013]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 018/222] perf test: fix a build error on builtin-test
    Date
    3.5.7.3 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Zheng Liu <gnehzuil.liu@gmail.com>

    commit 12f8f74b2a4d26c4facfa7ef99487cf0930f6ef7 upstream.

    Recently I build perf and get a build error on builtin-test.c. The error is as
    following:

    $ make
    CC perf.o
    CC builtin-test.o
    cc1: warnings being treated as errors
    builtin-test.c: In function ‘sched__get_first_possible_cpu’:
    builtin-test.c:977: warning: implicit declaration of function ‘CPU_ALLOC’
    builtin-test.c:977: warning: nested extern declaration of ‘CPU_ALLOC’
    builtin-test.c:977: warning: assignment makes pointer from integer without a cast
    builtin-test.c:978: warning: implicit declaration of function ‘CPU_ALLOC_SIZE’
    builtin-test.c:978: warning: nested extern declaration of ‘CPU_ALLOC_SIZE’
    builtin-test.c:979: warning: implicit declaration of function ‘CPU_ZERO_S’
    builtin-test.c:979: warning: nested extern declaration of ‘CPU_ZERO_S’
    builtin-test.c:982: warning: implicit declaration of function ‘CPU_FREE’
    builtin-test.c:982: warning: nested extern declaration of ‘CPU_FREE’
    builtin-test.c:992: warning: implicit declaration of function ‘CPU_ISSET_S’
    builtin-test.c:992: warning: nested extern declaration of ‘CPU_ISSET_S’
    builtin-test.c:998: warning: implicit declaration of function ‘CPU_CLR_S’
    builtin-test.c:998: warning: nested extern declaration of ‘CPU_CLR_S’
    make: *** [builtin-test.o] Error 1

    This problem is introduced in 3e7c439a. CPU_ALLOC and related macros are
    missing in sched__get_first_possible_cpu function. In 54489c18, commiter
    mentioned that CPU_ALLOC has been removed. So CPU_ALLOC calls in this
    function are removed to let perf to be built.

    Signed-off-by: Vinson Lee <vlee@twitter.com>
    Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Vinson Lee <vlee@twitter.com>
    Cc: Zheng Liu <wenqing.lz@taobao.com>
    Link: http://lkml.kernel.org/r/1352422726-31114-1-git-send-email-vlee@twitter.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [ herton: builtin-test.c wasn't under tests subdirectory in 3.5 ]
    Signed-off-by: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
    ---
    tools/perf/builtin-test.c | 38 ++++++++++++--------------------------
    1 file changed, 12 insertions(+), 26 deletions(-)

    diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c
    index 5a8727c..a3595f0 100644
    --- a/tools/perf/builtin-test.c
    +++ b/tools/perf/builtin-test.c
    @@ -604,19 +604,13 @@ out_free_threads:
    #undef nsyscalls
    }

    -static int sched__get_first_possible_cpu(pid_t pid, cpu_set_t **maskp,
    - size_t *sizep)
    +static int sched__get_first_possible_cpu(pid_t pid, cpu_set_t *maskp)
    {
    - cpu_set_t *mask;
    - size_t size;
    int i, cpu = -1, nrcpus = 1024;
    realloc:
    - mask = CPU_ALLOC(nrcpus);
    - size = CPU_ALLOC_SIZE(nrcpus);
    - CPU_ZERO_S(size, mask);
    + CPU_ZERO(maskp);

    - if (sched_getaffinity(pid, size, mask) == -1) {
    - CPU_FREE(mask);
    + if (sched_getaffinity(pid, sizeof(*maskp), maskp) == -1) {
    if (errno == EINVAL && nrcpus < (1024 << 8)) {
    nrcpus = nrcpus << 2;
    goto realloc;
    @@ -626,19 +620,14 @@ realloc:
    }

    for (i = 0; i < nrcpus; i++) {
    - if (CPU_ISSET_S(i, size, mask)) {
    - if (cpu == -1) {
    + if (CPU_ISSET(i, maskp)) {
    + if (cpu == -1)
    cpu = i;
    - *maskp = mask;
    - *sizep = size;
    - } else
    - CPU_CLR_S(i, size, mask);
    + else
    + CPU_CLR(i, maskp);
    }
    }

    - if (cpu == -1)
    - CPU_FREE(mask);
    -
    return cpu;
    }

    @@ -653,8 +642,8 @@ static int test__PERF_RECORD(void)
    .freq = 10,
    .mmap_pages = 256,
    };
    - cpu_set_t *cpu_mask = NULL;
    - size_t cpu_mask_size = 0;
    + cpu_set_t cpu_mask;
    + size_t cpu_mask_size = sizeof(cpu_mask);
    struct perf_evlist *evlist = perf_evlist__new(NULL, NULL);
    struct perf_evsel *evsel;
    struct perf_sample sample;
    @@ -718,8 +707,7 @@ static int test__PERF_RECORD(void)
    evsel->attr.sample_type |= PERF_SAMPLE_TIME;
    perf_evlist__config_attrs(evlist, &opts);

    - err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask,
    - &cpu_mask_size);
    + err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask);
    if (err < 0) {
    pr_debug("sched__get_first_possible_cpu: %s\n", strerror(errno));
    goto out_delete_evlist;
    @@ -730,9 +718,9 @@ static int test__PERF_RECORD(void)
    /*
    * So that we can check perf_sample.cpu on all the samples.
    */
    - if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, cpu_mask) < 0) {
    + if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, &cpu_mask) < 0) {
    pr_debug("sched_setaffinity: %s\n", strerror(errno));
    - goto out_free_cpu_mask;
    + goto out_delete_evlist;
    }

    /*
    @@ -925,8 +913,6 @@ found_exit:
    }
    out_err:
    perf_evlist__munmap(evlist);
    -out_free_cpu_mask:
    - CPU_FREE(cpu_mask);
    out_delete_evlist:
    perf_evlist__delete(evlist);
    out:
    --
    1.7.9.5
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2013-01-16 17:45    [W:4.247 / U:2.828 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site