perf expr: Add expr.c object
Add generic expr code into new expr.c object. The expr.c object will be mainly used in following change that will get rid of the manual flex code, Signed-off-by: Jiri Olsa <jolsa@kernel.org> Reviewed-by: Andi Kleen <ak@linux.intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: John Garry <john.garry@huawei.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Link: http://lore.kernel.org/lkml/20200228093616.67125-2-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
277ce1efa7
commit
576a65b697
|
@ -122,6 +122,7 @@ perf-y += vsprintf.o
|
||||||
perf-y += units.o
|
perf-y += units.o
|
||||||
perf-y += time-utils.o
|
perf-y += time-utils.o
|
||||||
perf-y += expr-bison.o
|
perf-y += expr-bison.o
|
||||||
|
perf-y += expr.o
|
||||||
perf-y += branch.o
|
perf-y += branch.o
|
||||||
perf-y += mem2node.o
|
perf-y += mem2node.o
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
#include <assert.h>
|
||||||
|
#include "expr.h"
|
||||||
|
|
||||||
|
/* Caller must make sure id is allocated */
|
||||||
|
void expr__add_id(struct parse_ctx *ctx, const char *name, double val)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
assert(ctx->num_ids < MAX_PARSE_ID);
|
||||||
|
idx = ctx->num_ids++;
|
||||||
|
ctx->ids[idx].name = name;
|
||||||
|
ctx->ids[idx].val = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
void expr__ctx_init(struct parse_ctx *ctx)
|
||||||
|
{
|
||||||
|
ctx->num_ids = 0;
|
||||||
|
}
|
|
@ -6,7 +6,6 @@
|
||||||
#define IN_EXPR_Y 1
|
#define IN_EXPR_Y 1
|
||||||
#include "expr.h"
|
#include "expr.h"
|
||||||
#include "smt.h"
|
#include "smt.h"
|
||||||
#include <assert.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define MAXIDLEN 256
|
#define MAXIDLEN 256
|
||||||
|
@ -169,21 +168,6 @@ static int expr__lex(YYSTYPE *res, const char **pp)
|
||||||
return tok;
|
return tok;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Caller must make sure id is allocated */
|
|
||||||
void expr__add_id(struct parse_ctx *ctx, const char *name, double val)
|
|
||||||
{
|
|
||||||
int idx;
|
|
||||||
assert(ctx->num_ids < MAX_PARSE_ID);
|
|
||||||
idx = ctx->num_ids++;
|
|
||||||
ctx->ids[idx].name = name;
|
|
||||||
ctx->ids[idx].val = val;
|
|
||||||
}
|
|
||||||
|
|
||||||
void expr__ctx_init(struct parse_ctx *ctx)
|
|
||||||
{
|
|
||||||
ctx->num_ids = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool already_seen(const char *val, const char *one, const char **other,
|
static bool already_seen(const char *val, const char *one, const char **other,
|
||||||
int num_other)
|
int num_other)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue