1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2018 Intel Corporation 3 */ 4 5 #ifndef BPF_IMPL_H 6 #define BPF_IMPL_H 7 8 #include <rte_bpf.h> 9 #include <sys/mman.h> 10 11 #define MAX_BPF_STACK_SIZE 0x200 12 13 struct rte_bpf { 14 struct rte_bpf_prm prm; 15 struct rte_bpf_jit jit; 16 size_t sz; 17 uint32_t stack_sz; 18 }; 19 20 /* 21 * Use '__rte' prefix for non-static internal functions 22 * to avoid potential name conflict with other libraries. 23 */ 24 int __rte_bpf_validate(struct rte_bpf *bpf); 25 int __rte_bpf_jit(struct rte_bpf *bpf); 26 int __rte_bpf_jit_x86(struct rte_bpf *bpf); 27 int __rte_bpf_jit_arm64(struct rte_bpf *bpf); 28 29 extern int rte_bpf_logtype; 30 #define RTE_LOGTYPE_BPF rte_bpf_logtype 31 32 #define RTE_BPF_LOG_LINE(lvl, ...) \ 33 RTE_LOG_LINE(lvl, BPF, __VA_ARGS__) 34 35 static inline size_t bpf_size(uint32_t bpf_op_sz)36bpf_size(uint32_t bpf_op_sz) 37 { 38 if (bpf_op_sz == BPF_B) 39 return sizeof(uint8_t); 40 else if (bpf_op_sz == BPF_H) 41 return sizeof(uint16_t); 42 else if (bpf_op_sz == BPF_W) 43 return sizeof(uint32_t); 44 else if (bpf_op_sz == EBPF_DW) 45 return sizeof(uint64_t); 46 return 0; 47 } 48 49 #endif /* BPF_IMPL_H */ 50