perf bpf: Convert legacy map definition to BTF-defined
The libbpf is switching off support for legacy map definitions [1], which will break the perf llvm tests. Moving the base source map definition to BTF-defined, so we need to use -g compile option for to add debug/BTF info. [1] https://lore.kernel.org/bpf/20220627211527.2245459-1-andrii@kernel.org/ Signed-off-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Andrii Nakryiko <andrii@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: bpf@vger.kernel.org Link: https://lore.kernel.org/r/20220704152721.352046-1-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
6d518ac7be
commit
8b1e1a0347
|
@ -17,20 +17,31 @@ static void *(*bpf_map_lookup_elem)(void *map, void *key) =
|
|||
static void *(*bpf_map_update_elem)(void *map, void *key, void *value, int flags) =
|
||||
(void *) BPF_FUNC_map_update_elem;
|
||||
|
||||
struct bpf_map_def {
|
||||
unsigned int type;
|
||||
unsigned int key_size;
|
||||
unsigned int value_size;
|
||||
unsigned int max_entries;
|
||||
};
|
||||
/*
|
||||
* Following macros are taken from tools/lib/bpf/bpf_helpers.h,
|
||||
* and are used to create BTF defined maps. It is easier to take
|
||||
* 2 simple macros, than being able to include above header in
|
||||
* runtime.
|
||||
*
|
||||
* __uint - defines integer attribute of BTF map definition,
|
||||
* Such attributes are represented using a pointer to an array,
|
||||
* in which dimensionality of array encodes specified integer
|
||||
* value.
|
||||
*
|
||||
* __type - defines pointer variable with typeof(val) type for
|
||||
* attributes like key or value, which will be defined by the
|
||||
* size of the type.
|
||||
*/
|
||||
#define __uint(name, val) int (*name)[val]
|
||||
#define __type(name, val) typeof(val) *name
|
||||
|
||||
#define SEC(NAME) __attribute__((section(NAME), used))
|
||||
struct bpf_map_def SEC("maps") flip_table = {
|
||||
.type = BPF_MAP_TYPE_ARRAY,
|
||||
.key_size = sizeof(int),
|
||||
.value_size = sizeof(int),
|
||||
.max_entries = 1,
|
||||
};
|
||||
struct {
|
||||
__uint(type, BPF_MAP_TYPE_ARRAY);
|
||||
__uint(max_entries, 1);
|
||||
__type(key, int);
|
||||
__type(value, int);
|
||||
} flip_table SEC(".maps");
|
||||
|
||||
SEC("func=do_epoll_wait")
|
||||
int bpf_func__SyS_epoll_pwait(void *ctx)
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
"$CLANG_OPTIONS $PERF_BPF_INC_OPTIONS $KERNEL_INC_OPTIONS " \
|
||||
"-Wno-unused-value -Wno-pointer-sign " \
|
||||
"-working-directory $WORKING_DIR " \
|
||||
"-c \"$CLANG_SOURCE\" -target bpf $CLANG_EMIT_LLVM -O2 -o - $LLVM_OPTIONS_PIPE"
|
||||
"-c \"$CLANG_SOURCE\" -target bpf $CLANG_EMIT_LLVM -g -O2 -o - $LLVM_OPTIONS_PIPE"
|
||||
|
||||
struct llvm_param llvm_param = {
|
||||
.clang_path = "clang",
|
||||
|
|
Loading…
Reference in New Issue