perf metric: Add referenced metrics to hash data
Adding referenced metrics to the parsing context so they can be resolved during the metric processing. Adding expr__add_ref function to store referenced metrics into parse context. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Reviewed-by: Kajol Jain <kjain@linux.ibm.com> Acked-by: Ian Rogers <irogers@google.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: John Garry <john.garry@huawei.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Clarke <pc@us.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lore.kernel.org/lkml/20200719181320.785305-11-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:

committed by
Arnaldo Carvalho de Melo

parent
4ea2896715
commit
fc393839c1
@@ -11,12 +11,22 @@
|
||||
#include "util/hashmap.h"
|
||||
//#endif
|
||||
|
||||
struct metric_ref;
|
||||
|
||||
struct expr_parse_ctx {
|
||||
struct hashmap ids;
|
||||
};
|
||||
|
||||
struct expr_id_data {
|
||||
double val;
|
||||
union {
|
||||
double val;
|
||||
struct {
|
||||
const char *metric_name;
|
||||
const char *metric_expr;
|
||||
} ref;
|
||||
};
|
||||
|
||||
bool is_ref;
|
||||
};
|
||||
|
||||
struct expr_scanner_ctx {
|
||||
@@ -29,6 +39,7 @@ 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__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);
|
||||
int expr__parse(double *final_val, struct expr_parse_ctx *ctx,
|
||||
|
Reference in New Issue
Block a user