diff options
Diffstat (limited to 'libnetdata/ebpf/ebpf.h')
-rw-r--r-- | libnetdata/ebpf/ebpf.h | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/libnetdata/ebpf/ebpf.h b/libnetdata/ebpf/ebpf.h index 6e01786c85..1003f9eda3 100644 --- a/libnetdata/ebpf/ebpf.h +++ b/libnetdata/ebpf/ebpf.h @@ -1,7 +1,12 @@ -#ifndef _NETDATA_EBPF_H_ -# define _NETDATA_EBPF_H_ 1 +// SPDX-License-Identifier: GPL-3.0-or-later -# define NETDATA_DEBUGFS "/sys/kernel/debug/tracing/" +#ifndef NETDATA_EBPF_H +#define NETDATA_EBPF_H 1 + +#include <bpf/bpf.h> +#include <bpf/libbpf.h> + +#define NETDATA_DEBUGFS "/sys/kernel/debug/tracing/" /** * The next magic number is got doing the following math: @@ -9,7 +14,7 @@ * * For more details, please, read /usr/include/linux/version.h */ -# define NETDATA_MINIMUM_EBPF_KERNEL 264960 +#define NETDATA_MINIMUM_EBPF_KERNEL 264960 /** * The RedHat magic number was got doing: @@ -19,65 +24,57 @@ * For more details, please, read /usr/include/linux/version.h * in any Red Hat installation. */ -# define NETDATA_MINIMUM_RH_VERSION 1797 +#define NETDATA_MINIMUM_RH_VERSION 1797 /** * 2048 = 8*256 + 0 */ -# define NETDATA_RH_8 2048 +#define NETDATA_RH_8 2048 /** * Kernel 4.17 * * 266496 = 4*65536 + 17*256 */ -# define NETDATA_EBPF_KERNEL_4_17 266496 +#define NETDATA_EBPF_KERNEL_4_17 266496 /** * Kernel 4.15 * * 265984 = 4*65536 + 15*256 */ -# define NETDATA_EBPF_KERNEL_4_15 265984 +#define NETDATA_EBPF_KERNEL_4_15 265984 /** * Kernel 4.11 * * 264960 = 4*65536 + 15*256 */ -# define NETDATA_EBPF_KERNEL_4_11 264960 +#define NETDATA_EBPF_KERNEL_4_11 264960 typedef struct netdata_ebpf_events { char type; char *name; } netdata_ebpf_events_t; -typedef struct ebpf_functions { - void *libnetdata; - int (*load_bpf_file)(int *, char *, int); - //Libbpf (It is necessary to have at least kernel 4.10) - int (*bpf_map_lookup_elem)(int, const void *, void *); - int (*bpf_map_delete_elem)(int fd, const void *key); - int (*bpf_map_get_next_key)(int fd, const void *key, void *next_key); - +typedef struct ebpf_data { int *map_fd; char *kernel_string; uint32_t running_on_kernel; int isrh; -} ebpf_functions_t; +} ebpf_data_t; extern int clean_kprobe_events(FILE *out, int pid, netdata_ebpf_events_t *ptr); extern int get_kernel_version(char *out, int size); extern int get_redhat_release(); extern int has_condition_to_run(int version); -extern char *ebpf_library_suffix(int version, int isrh); -extern int ebpf_load_libraries(ebpf_functions_t *ef, char *libbase, char *pluginsdir); +extern char *ebpf_kernel_suffix(int version, int isrh); +extern int ebpf_update_kernel(ebpf_data_t *ef); extern int ebpf_load_program(char *plugins_dir, int event_id, int mode, char *kernel_string, const char *name, - int *map_fd, - int (*load_bpf_file)(int *,char *, int)); + int *map_fd); -#endif +#endif /* NETDATA_EBPF_H */ |