Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bpf: Move endianness BPF helpers out of bpf_util.h

We do not want to include things like stdio.h and friends into
eBPF program builds. bpf_util.h is for host compiled programs,
so eBPF C-code helpers don't really belong there.

Add a new bpf_endian.h as a quick fix for this for now.

Signed-off-by: David S. Miller <davem@davemloft.net>

+25 -21
+23
tools/testing/selftests/bpf/bpf_endian.h
··· 1 + #ifndef __BPF_ENDIAN__ 2 + #define __BPF_ENDIAN__ 3 + 4 + #include <asm/byteorder.h> 5 + 6 + #if __BYTE_ORDER == __LITTLE_ENDIAN 7 + # define __bpf_ntohs(x) __builtin_bswap16(x) 8 + # define __bpf_htons(x) __builtin_bswap16(x) 9 + #elif __BYTE_ORDER == __BIG_ENDIAN 10 + # define __bpf_ntohs(x) (x) 11 + # define __bpf_htons(x) (x) 12 + #else 13 + # error "Fix your __BYTE_ORDER?!" 14 + #endif 15 + 16 + #define bpf_htons(x) \ 17 + (__builtin_constant_p(x) ? \ 18 + __constant_htons(x) : __bpf_htons(x)) 19 + #define bpf_ntohs(x) \ 20 + (__builtin_constant_p(x) ? \ 21 + __constant_ntohs(x) : __bpf_ntohs(x)) 22 + 23 + #endif
-19
tools/testing/selftests/bpf/bpf_util.h
··· 6 6 #include <string.h> 7 7 #include <errno.h> 8 8 9 - #include <asm/byteorder.h> 10 - 11 - #if __BYTE_ORDER == __LITTLE_ENDIAN 12 - # define __bpf_ntohs(x) __builtin_bswap16(x) 13 - # define __bpf_htons(x) __builtin_bswap16(x) 14 - #elif __BYTE_ORDER == __BIG_ENDIAN 15 - # define __bpf_ntohs(x) (x) 16 - # define __bpf_htons(x) (x) 17 - #else 18 - # error "Fix your __BYTE_ORDER?!" 19 - #endif 20 - 21 - #define bpf_htons(x) \ 22 - (__builtin_constant_p(x) ? \ 23 - __constant_htons(x) : __bpf_htons(x)) 24 - #define bpf_ntohs(x) \ 25 - (__builtin_constant_p(x) ? \ 26 - __constant_ntohs(x) : __bpf_ntohs(x)) 27 - 28 9 static inline unsigned int bpf_num_possible_cpus(void) 29 10 { 30 11 static const char *fcpu = "/sys/devices/system/cpu/possible";
+1 -1
tools/testing/selftests/bpf/test_l4lb.c
··· 19 19 #include <linux/udp.h> 20 20 #include "bpf_helpers.h" 21 21 #include "test_iptunnel_common.h" 22 - #include "bpf_util.h" 22 + #include "bpf_endian.h" 23 23 24 24 int _version SEC("version") = 1; 25 25
+1 -1
tools/testing/selftests/bpf/test_pkt_access.c
··· 14 14 #include <linux/tcp.h> 15 15 #include <linux/pkt_cls.h> 16 16 #include "bpf_helpers.h" 17 - #include "bpf_util.h" 17 + #include "bpf_endian.h" 18 18 19 19 #define barrier() __asm__ __volatile__("": : :"memory") 20 20 int _version SEC("version") = 1;