lkml.org 
[lkml]   [2021]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v2 17/21] perf expr: Add subset utility.
    From
    Add a helper that returns true if all the IDs in needles are present in
    haystack. Later this will be used in sharing events between metrics.

    Acked-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Ian Rogers <irogers@google.com>
    ---
    tools/perf/util/expr.c | 15 +++++++++++++++
    tools/perf/util/expr.h | 2 ++
    2 files changed, 17 insertions(+)

    diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c
    index 5657222aaa25..77c6ad81a923 100644
    --- a/tools/perf/util/expr.c
    +++ b/tools/perf/util/expr.c
    @@ -211,6 +211,21 @@ int expr__get_id(struct expr_parse_ctx *ctx, const char *id,
    return hashmap__find(ctx->ids, id, (void **)data) ? 0 : -1;
    }

    +bool expr__subset_of_ids(struct expr_parse_ctx *haystack,
    + struct expr_parse_ctx *needles)
    +{
    + struct hashmap_entry *cur;
    + size_t bkt;
    + struct expr_id_data *data;
    +
    + hashmap__for_each_entry(needles->ids, cur, bkt) {
    + if (expr__get_id(haystack, cur->key, &data))
    + return false;
    + }
    + return true;
    +}
    +
    +
    int expr__resolve_id(struct expr_parse_ctx *ctx, const char *id,
    struct expr_id_data **datap)
    {
    diff --git a/tools/perf/util/expr.h b/tools/perf/util/expr.h
    index c6e534f633c3..cf81f9166dbb 100644
    --- a/tools/perf/util/expr.h
    +++ b/tools/perf/util/expr.h
    @@ -43,6 +43,8 @@ int expr__add_id_val(struct expr_parse_ctx *ctx, const char *id, double val);
    int expr__add_ref(struct expr_parse_ctx *ctx, struct metric_ref *ref);
    int expr__get_id(struct expr_parse_ctx *ctx, const char *id,
    struct expr_id_data **data);
    +bool expr__subset_of_ids(struct expr_parse_ctx *haystack,
    + struct expr_parse_ctx *needles);
    int expr__resolve_id(struct expr_parse_ctx *ctx, const char *id,
    struct expr_id_data **datap);

    --
    2.33.0.1079.g6e70778dc9-goog
    \
     
     \ /
      Last update: 2021-10-15 19:37    [W:4.180 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site