[PATCH 04/19] perf metric: Add expr__del_id function
Adding expr__del_id function to remove ID from hashmap. It will save us few lines in following changes. Signed-off-by: Jiri Olsa Reviewed-by: Kajol Jain Acked-by: Ian Rogers Cc: Alexander Shishkin Cc: Andi Kleen Cc: John Garry Cc: Michael Petlan Cc: Namhyung Kim Cc: Paul Clarke Cc: Peter Zijlstra Cc: Stephane Eranian Link: http://lore.kernel.org/lkml/20200719181320.785305-5-jo...@kernel.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/expr.c | 21 + tools/perf/util/expr.h | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c index 4e5a6533dfce..f726211f49d4 100644 --- a/tools/perf/util/expr.c +++ b/tools/perf/util/expr.c @@ -79,6 +79,17 @@ int expr__get_id(struct expr_parse_ctx *ctx, const char *id, return hashmap__find(>ids, id, (void **)data) ? 0 : -1; } +void expr__del_id(struct expr_parse_ctx *ctx, const char *id) +{ + struct expr_id_data *old_val = NULL; + char *old_key = NULL; + + hashmap__delete(>ids, id, + (const void **)_key, (void **)_val); + free(old_key); + free(old_val); +} + void expr__ctx_init(struct expr_parse_ctx *ctx) { hashmap__init(>ids, key_hash, key_equal, NULL); @@ -136,16 +147,10 @@ int expr__parse(double *final_val, struct expr_parse_ctx *ctx, int expr__find_other(const char *expr, const char *one, struct expr_parse_ctx *ctx, int runtime) { - struct expr_id_data *old_val = NULL; - char *old_key = NULL; int ret = __expr__parse(NULL, ctx, expr, EXPR_OTHER, runtime); - if (one) { - hashmap__delete(>ids, one, - (const void **)_key, (void **)_val); - free(old_key); - free(old_val); - } + if (one) + expr__del_id(ctx, one); return ret; } diff --git a/tools/perf/util/expr.h b/tools/perf/util/expr.h index f38292fdab19..2462abd0ac65 100644 --- a/tools/perf/util/expr.h +++ b/tools/perf/util/expr.h @@ -26,6 +26,7 @@ struct expr_scanner_ctx { void expr__ctx_init(struct expr_parse_ctx *ctx); void expr__ctx_clear(struct expr_parse_ctx *ctx); +void expr__del_id(struct expr_parse_ctx *ctx, const char *id); int expr__add_id(struct expr_parse_ctx *ctx, const char *id); int expr__add_id_val(struct expr_parse_ctx *ctx, const char *id, double val); int expr__get_id(struct expr_parse_ctx *ctx, const char *id, -- 2.25.4
Re: [PATCH 04/19] perf metric: Add expr__del_id function
Em Sun, Jul 26, 2020 at 02:47:11PM +0530, kajoljain escreveu: > > > On 7/19/20 11:43 PM, Jiri Olsa wrote: > > Adding expr__del_id function to remove ID from hashmap. > > It will save us few lines in following changes. > > > > Acked-by: Ian Rogers > > Signed-off-by: Jiri Olsa > > Reviewed-By : Kajol Jain Thanks, applied. - Arnaldo > Thanks, > Kajol Jain > > > --- > > tools/perf/util/expr.c | 21 + > > tools/perf/util/expr.h | 1 + > > 2 files changed, 14 insertions(+), 8 deletions(-) > > > > diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c > > index 4e5a6533dfce..f726211f49d4 100644 > > --- a/tools/perf/util/expr.c > > +++ b/tools/perf/util/expr.c > > @@ -79,6 +79,17 @@ int expr__get_id(struct expr_parse_ctx *ctx, const char > > *id, > > return hashmap__find(>ids, id, (void **)data) ? 0 : -1; > > } > > > > +void expr__del_id(struct expr_parse_ctx *ctx, const char *id) > > +{ > > + struct expr_id_data *old_val = NULL; > > + char *old_key = NULL; > > + > > + hashmap__delete(>ids, id, > > + (const void **)_key, (void **)_val); > > + free(old_key); > > + free(old_val); > > +} > > + > > void expr__ctx_init(struct expr_parse_ctx *ctx) > > { > > hashmap__init(>ids, key_hash, key_equal, NULL); > > @@ -136,16 +147,10 @@ int expr__parse(double *final_val, struct > > expr_parse_ctx *ctx, > > int expr__find_other(const char *expr, const char *one, > > struct expr_parse_ctx *ctx, int runtime) > > { > > - struct expr_id_data *old_val = NULL; > > - char *old_key = NULL; > > int ret = __expr__parse(NULL, ctx, expr, EXPR_OTHER, runtime); > > > > - if (one) { > > - hashmap__delete(>ids, one, > > - (const void **)_key, (void **)_val); > > - free(old_key); > > - free(old_val); > > - } > > + if (one) > > + expr__del_id(ctx, one); > > > > return ret; > > } > > diff --git a/tools/perf/util/expr.h b/tools/perf/util/expr.h > > index f38292fdab19..2462abd0ac65 100644 > > --- a/tools/perf/util/expr.h > > +++ b/tools/perf/util/expr.h > > @@ -26,6 +26,7 @@ struct expr_scanner_ctx { > > > > void expr__ctx_init(struct expr_parse_ctx *ctx); > > void expr__ctx_clear(struct expr_parse_ctx *ctx); > > +void expr__del_id(struct expr_parse_ctx *ctx, const char *id); > > int expr__add_id(struct expr_parse_ctx *ctx, const char *id); > > int expr__add_id_val(struct expr_parse_ctx *ctx, const char *id, double > > val); > > int expr__get_id(struct expr_parse_ctx *ctx, const char *id, > > -- - Arnaldo
Re: [PATCH 04/19] perf metric: Add expr__del_id function
On 7/19/20 11:43 PM, Jiri Olsa wrote: > Adding expr__del_id function to remove ID from hashmap. > It will save us few lines in following changes. > > Acked-by: Ian Rogers > Signed-off-by: Jiri Olsa Reviewed-By : Kajol Jain Thanks, Kajol Jain > --- > tools/perf/util/expr.c | 21 + > tools/perf/util/expr.h | 1 + > 2 files changed, 14 insertions(+), 8 deletions(-) > > diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c > index 4e5a6533dfce..f726211f49d4 100644 > --- a/tools/perf/util/expr.c > +++ b/tools/perf/util/expr.c > @@ -79,6 +79,17 @@ int expr__get_id(struct expr_parse_ctx *ctx, const char > *id, > return hashmap__find(>ids, id, (void **)data) ? 0 : -1; > } > > +void expr__del_id(struct expr_parse_ctx *ctx, const char *id) > +{ > + struct expr_id_data *old_val = NULL; > + char *old_key = NULL; > + > + hashmap__delete(>ids, id, > + (const void **)_key, (void **)_val); > + free(old_key); > + free(old_val); > +} > + > void expr__ctx_init(struct expr_parse_ctx *ctx) > { > hashmap__init(>ids, key_hash, key_equal, NULL); > @@ -136,16 +147,10 @@ int expr__parse(double *final_val, struct > expr_parse_ctx *ctx, > int expr__find_other(const char *expr, const char *one, >struct expr_parse_ctx *ctx, int runtime) > { > - struct expr_id_data *old_val = NULL; > - char *old_key = NULL; > int ret = __expr__parse(NULL, ctx, expr, EXPR_OTHER, runtime); > > - if (one) { > - hashmap__delete(>ids, one, > - (const void **)_key, (void **)_val); > - free(old_key); > - free(old_val); > - } > + if (one) > + expr__del_id(ctx, one); > > return ret; > } > diff --git a/tools/perf/util/expr.h b/tools/perf/util/expr.h > index f38292fdab19..2462abd0ac65 100644 > --- a/tools/perf/util/expr.h > +++ b/tools/perf/util/expr.h > @@ -26,6 +26,7 @@ struct expr_scanner_ctx { > > void expr__ctx_init(struct expr_parse_ctx *ctx); > void expr__ctx_clear(struct expr_parse_ctx *ctx); > +void expr__del_id(struct expr_parse_ctx *ctx, const char *id); > int expr__add_id(struct expr_parse_ctx *ctx, const char *id); > int expr__add_id_val(struct expr_parse_ctx *ctx, const char *id, double val); > int expr__get_id(struct expr_parse_ctx *ctx, const char *id, >
[PATCH 04/19] perf metric: Add expr__del_id function
Adding expr__del_id function to remove ID from hashmap. It will save us few lines in following changes. Acked-by: Ian Rogers Signed-off-by: Jiri Olsa --- tools/perf/util/expr.c | 21 + tools/perf/util/expr.h | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c index 4e5a6533dfce..f726211f49d4 100644 --- a/tools/perf/util/expr.c +++ b/tools/perf/util/expr.c @@ -79,6 +79,17 @@ int expr__get_id(struct expr_parse_ctx *ctx, const char *id, return hashmap__find(>ids, id, (void **)data) ? 0 : -1; } +void expr__del_id(struct expr_parse_ctx *ctx, const char *id) +{ + struct expr_id_data *old_val = NULL; + char *old_key = NULL; + + hashmap__delete(>ids, id, + (const void **)_key, (void **)_val); + free(old_key); + free(old_val); +} + void expr__ctx_init(struct expr_parse_ctx *ctx) { hashmap__init(>ids, key_hash, key_equal, NULL); @@ -136,16 +147,10 @@ int expr__parse(double *final_val, struct expr_parse_ctx *ctx, int expr__find_other(const char *expr, const char *one, struct expr_parse_ctx *ctx, int runtime) { - struct expr_id_data *old_val = NULL; - char *old_key = NULL; int ret = __expr__parse(NULL, ctx, expr, EXPR_OTHER, runtime); - if (one) { - hashmap__delete(>ids, one, - (const void **)_key, (void **)_val); - free(old_key); - free(old_val); - } + if (one) + expr__del_id(ctx, one); return ret; } diff --git a/tools/perf/util/expr.h b/tools/perf/util/expr.h index f38292fdab19..2462abd0ac65 100644 --- a/tools/perf/util/expr.h +++ b/tools/perf/util/expr.h @@ -26,6 +26,7 @@ struct expr_scanner_ctx { void expr__ctx_init(struct expr_parse_ctx *ctx); void expr__ctx_clear(struct expr_parse_ctx *ctx); +void expr__del_id(struct expr_parse_ctx *ctx, const char *id); int expr__add_id(struct expr_parse_ctx *ctx, const char *id); int expr__add_id_val(struct expr_parse_ctx *ctx, const char *id, double val); int expr__get_id(struct expr_parse_ctx *ctx, const char *id, -- 2.25.4