c72e35d51240f28c77012613b8a9299bbb72112b
[platform/kernel/linux-starfive.git] / tools / perf / util / bpf-filter.c
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <stdlib.h>
3
4 #include "util/bpf-filter.h"
5 #include "util/bpf-filter-flex.h"
6 #include "util/bpf-filter-bison.h"
7
8 struct perf_bpf_filter_expr *perf_bpf_filter_expr__new(unsigned long sample_flags,
9                                                        enum perf_bpf_filter_op op,
10                                                        unsigned long val)
11 {
12         struct perf_bpf_filter_expr *expr;
13
14         expr = malloc(sizeof(*expr));
15         if (expr != NULL) {
16                 expr->sample_flags = sample_flags;
17                 expr->op = op;
18                 expr->val = val;
19         }
20         return expr;
21 }
22
23 int perf_bpf_filter__parse(struct list_head *expr_head, const char *str)
24 {
25         YY_BUFFER_STATE buffer;
26         int ret;
27
28         buffer = perf_bpf_filter__scan_string(str);
29
30         ret = perf_bpf_filter_parse(expr_head);
31
32         perf_bpf_filter__flush_buffer(buffer);
33         perf_bpf_filter__delete_buffer(buffer);
34         perf_bpf_filter_lex_destroy();
35
36         return ret;
37 }