1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
- #ifndef __BPF_HELPERS__
- #define __BPF_HELPERS__
- /*
- * Note that bpf programs need to include either
- * vmlinux.h (auto-generated from BTF) or linux/types.h
- * in advance since bpf_helper_defs.h uses such types
- * as __u64.
- */
- #include "bpf_helper_defs.h"
- #define __uint(name, val) int (*name)[val]
- #define __type(name, val) typeof(val) *name
- #define __array(name, val) typeof(val) *name[]
- /* Helper macro to print out debug messages */
- #define bpf_printk(fmt, ...) \
- ({ \
- char ____fmt[] = fmt; \
- bpf_trace_printk(____fmt, sizeof(____fmt), \
- ##__VA_ARGS__); \
- })
- /*
- * Helper macro to place programs, maps, license in
- * different sections in elf_bpf file. Section names
- * are interpreted by elf_bpf loader
- */
- #define SEC(NAME) __attribute__((section(NAME), used))
- #ifndef __always_inline
- #define __always_inline __attribute__((always_inline))
- #endif
- #ifndef __weak
- #define __weak __attribute__((weak))
- #endif
- /*
- * Helper macro to manipulate data structures
- */
- #ifndef offsetof
- #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER)
- #endif
- #ifndef container_of
- #define container_of(ptr, type, member) \
- ({ \
- void *__mptr = (void *)(ptr); \
- ((type *)(__mptr - offsetof(type, member))); \
- })
- #endif
- /*
- * Helper structure used by eBPF C program
- * to describe BPF map attributes to libbpf loader
- */
- struct bpf_map_def {
- unsigned int type;
- unsigned int key_size;
- unsigned int value_size;
- unsigned int max_entries;
- unsigned int map_flags;
- };
- enum libbpf_pin_type {
- LIBBPF_PIN_NONE,
- /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */
- LIBBPF_PIN_BY_NAME,
- };
- enum libbpf_tristate {
- TRI_NO = 0,
- TRI_YES = 1,
- TRI_MODULE = 2,
- };
- #define __kconfig __attribute__((section(".kconfig")))
- #define __ksym __attribute__((section(".ksyms")))
- #endif
|