mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 06:15:38 +07:00
8a138aed4a
If the ".BTF" elf section exists, libbpf will try to create a btf_fd (through BPF_BTF_LOAD). If that fails, it will still continue loading the bpf prog/map without the BTF. If the bpf_object has a BTF loaded, it will create a map with the btf_fd. libbpf will try to figure out the btf_key_id and btf_value_id of a map by finding the BTF type with name "<map_name>_key" and "<map_name>_value". If they cannot be found, it will continue without using the BTF. Signed-off-by: Martin KaFai Lau <kafai@fb.com> Acked-by: Alexei Starovoitov <ast@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
23 lines
561 B
C
23 lines
561 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (c) 2018 Facebook */
|
|
|
|
#ifndef __BPF_BTF_H
|
|
#define __BPF_BTF_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define BTF_ELF_SEC ".BTF"
|
|
|
|
struct btf;
|
|
|
|
typedef int (*btf_print_fn_t)(const char *, ...)
|
|
__attribute__((format(printf, 1, 2)));
|
|
|
|
void btf__free(struct btf *btf);
|
|
struct btf *btf__new(uint8_t *data, uint32_t size, btf_print_fn_t err_log);
|
|
int32_t btf__find_by_name(const struct btf *btf, const char *type_name);
|
|
int64_t btf__resolve_size(const struct btf *btf, uint32_t type_id);
|
|
int btf__fd(const struct btf *btf);
|
|
|
|
#endif
|