linux/tools/perf/util/expr.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef PARSE_CTX_H
   3#define PARSE_CTX_H 1
   4
   5// There are fixes that need to land upstream before we can use libbpf's headers,
   6// for now use our copy uncoditionally, since the data structures at this point
   7// are exactly the same, no problem.
   8//#ifdef HAVE_LIBBPF_SUPPORT
   9//#include <bpf/hashmap.h>
  10//#else
  11#include "util/hashmap.h"
  12//#endif
  13
  14struct metric_ref;
  15
  16struct expr_id {
  17        char            *id;
  18        struct expr_id  *parent;
  19};
  20
  21struct expr_parse_ctx {
  22        struct hashmap   ids;
  23        struct expr_id  *parent;
  24};
  25
  26struct expr_id_data {
  27        union {
  28                double val;
  29                struct {
  30                        const char *metric_name;
  31                        const char *metric_expr;
  32                        bool counted;
  33                } ref;
  34                struct expr_id  *parent;
  35        };
  36
  37        bool is_ref;
  38};
  39
  40struct expr_scanner_ctx {
  41        int start_token;
  42        int runtime;
  43};
  44
  45void expr__ctx_init(struct expr_parse_ctx *ctx);
  46void expr__ctx_clear(struct expr_parse_ctx *ctx);
  47void expr__del_id(struct expr_parse_ctx *ctx, const char *id);
  48int expr__add_id(struct expr_parse_ctx *ctx, const char *id);
  49int expr__add_id_val(struct expr_parse_ctx *ctx, const char *id, double val);
  50int expr__add_ref(struct expr_parse_ctx *ctx, struct metric_ref *ref);
  51int expr__get_id(struct expr_parse_ctx *ctx, const char *id,
  52                 struct expr_id_data **data);
  53int expr__resolve_id(struct expr_parse_ctx *ctx, const char *id,
  54                     struct expr_id_data **datap);
  55int expr__parse(double *final_val, struct expr_parse_ctx *ctx,
  56                const char *expr, int runtime);
  57int expr__find_other(const char *expr, const char *one,
  58                struct expr_parse_ctx *ids, int runtime);
  59
  60#endif
  61