lkml.org 
[lkml]   [2022]   [May]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v5 4/6] perf cpumap: Handle dummy maps as empty in subset
    From
    perf_cpu_map__empty is true for empty and dummy maps. Make is_subset
    respect that.

    Signed-off-by: Ian Rogers <irogers@google.com>
    ---
    tools/lib/perf/cpumap.c | 4 ++--
    tools/perf/tests/cpumap.c | 10 +++++++++-
    2 files changed, 11 insertions(+), 3 deletions(-)

    diff --git a/tools/lib/perf/cpumap.c b/tools/lib/perf/cpumap.c
    index 384d5e076ee4..9c83675788c2 100644
    --- a/tools/lib/perf/cpumap.c
    +++ b/tools/lib/perf/cpumap.c
    @@ -322,9 +322,9 @@ struct perf_cpu perf_cpu_map__max(struct perf_cpu_map *map)
    /** Is 'b' a subset of 'a'. */
    bool perf_cpu_map__is_subset(const struct perf_cpu_map *a, const struct perf_cpu_map *b)
    {
    - if (a == b || !b)
    + if (a == b || perf_cpu_map__empty(b))
    return true;
    - if (!a || b->nr > a->nr)
    + if (perf_cpu_map__empty(a) || b->nr > a->nr)
    return false;

    for (int i = 0, j = 0; i < a->nr; i++) {
    diff --git a/tools/perf/tests/cpumap.c b/tools/perf/tests/cpumap.c
    index f94929ebb54b..d52b58395385 100644
    --- a/tools/perf/tests/cpumap.c
    +++ b/tools/perf/tests/cpumap.c
    @@ -128,13 +128,21 @@ static int test__cpu_map_merge(struct test_suite *test __maybe_unused, int subte
    struct perf_cpu_map *a = perf_cpu_map__new("4,2,1");
    struct perf_cpu_map *b = perf_cpu_map__new("4,5,7");
    struct perf_cpu_map *c = perf_cpu_map__merge(a, b);
    + struct perf_cpu_map *d = perf_cpu_map__dummy_new();
    + struct perf_cpu_map *e = perf_cpu_map__merge(b, d);
    char buf[100];

    TEST_ASSERT_VAL("failed to merge map: bad nr", perf_cpu_map__nr(c) == 5);
    cpu_map__snprint(c, buf, sizeof(buf));
    TEST_ASSERT_VAL("failed to merge map: bad result", !strcmp(buf, "1-2,4-5,7"));
    - perf_cpu_map__put(b);
    +
    + TEST_ASSERT_VAL("failed to merge map: bad nr", perf_cpu_map__nr(e) == 3);
    + cpu_map__snprint(e, buf, sizeof(buf));
    + TEST_ASSERT_VAL("failed to merge map: bad result", !strcmp(buf, "4-5,7"));
    +
    perf_cpu_map__put(c);
    + perf_cpu_map__put(d);
    + perf_cpu_map__put(e);
    return 0;
    }

    --
    2.36.0.464.gb9c8b46e94-goog
    \
     
     \ /
      Last update: 2022-05-03 06:22    [W:3.468 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site