Linux Audio

Check our new training course

Loading...
v6.13.7
 1/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
 2#ifndef __BPF_LEGACY__
 3#define __BPF_LEGACY__
 4
 5#if __GNUC__ && !__clang__
 6/* Functions to emit BPF_LD_ABS and BPF_LD_IND instructions.  We
 7 * provide the "standard" names as synonyms of the corresponding GCC
 8 * builtins. Note how the SKB argument is ignored.
 9 */
10#define load_byte(skb, off) __builtin_bpf_load_byte(off)
11#define load_half(skb, off) __builtin_bpf_load_half(off)
12#define load_word(skb, off) __builtin_bpf_load_word(off)
13#else
14/* llvm builtin functions that eBPF C program may use to
15 * emit BPF_LD_ABS and BPF_LD_IND instructions
16 */
17unsigned long long load_byte(void *skb, unsigned long long off) asm("llvm.bpf.load.byte");
18unsigned long long load_half(void *skb, unsigned long long off) asm("llvm.bpf.load.half");
19unsigned long long load_word(void *skb, unsigned long long off) asm("llvm.bpf.load.word");
20#endif
 
 
21
22#endif
23
v5.9
 1/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
 2#ifndef __BPF_LEGACY__
 3#define __BPF_LEGACY__
 4
 5#define BPF_ANNOTATE_KV_PAIR(name, type_key, type_val)		\
 6	struct ____btf_map_##name {				\
 7		type_key key;					\
 8		type_val value;					\
 9	};							\
10	struct ____btf_map_##name				\
11	__attribute__ ((section(".maps." #name), used))		\
12		____btf_map_##name = { }
13
14/* llvm builtin functions that eBPF C program may use to
15 * emit BPF_LD_ABS and BPF_LD_IND instructions
16 */
17unsigned long long load_byte(void *skb,
18			     unsigned long long off) asm("llvm.bpf.load.byte");
19unsigned long long load_half(void *skb,
20			     unsigned long long off) asm("llvm.bpf.load.half");
21unsigned long long load_word(void *skb,
22			     unsigned long long off) asm("llvm.bpf.load.word");
23
24#endif
25