aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-05-01 15:43:49 -0400
committerDavid S. Miller <davem@davemloft.net>2017-05-01 15:43:49 -0400
commitbc1bafbbe9b3558d7789ff151ef4f185b6ad21f3 (patch)
tree33a8d0dd917e4f46705bc024b4f72500238b87d8
parent5b8481fa42ac58484d633b558579e302aead64c1 (diff)
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>
-rw-r--r--tools/testing/selftests/bpf/bpf_endian.h23
-rw-r--r--tools/testing/selftests/bpf/bpf_util.h19
-rw-r--r--tools/testing/selftests/bpf/test_l4lb.c2
-rw-r--r--tools/testing/selftests/bpf/test_pkt_access.c2
4 files changed, 25 insertions, 21 deletions
diff --git a/tools/testing/selftests/bpf/bpf_endian.h b/tools/testing/selftests/bpf/bpf_endian.h
new file mode 100644
index 000000000000..19d0604f8694
--- /dev/null
+++ b/tools/testing/selftests/bpf/bpf_endian.h
@@ -0,0 +1,23 @@
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
diff --git a/tools/testing/selftests/bpf/bpf_util.h b/tools/testing/selftests/bpf/bpf_util.h
index 369e7d7bba80..20ecbaa0d85d 100644
--- a/tools/testing/selftests/bpf/bpf_util.h
+++ b/tools/testing/selftests/bpf/bpf_util.h
@@ -6,25 +6,6 @@
6#include <string.h> 6#include <string.h>
7#include <errno.h> 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
28static inline unsigned int bpf_num_possible_cpus(void) 9static inline unsigned int bpf_num_possible_cpus(void)
29{ 10{
30 static const char *fcpu = "/sys/devices/system/cpu/possible"; 11 static const char *fcpu = "/sys/devices/system/cpu/possible";
diff --git a/tools/testing/selftests/bpf/test_l4lb.c b/tools/testing/selftests/bpf/test_l4lb.c
index b68b21274bac..1e10c9590991 100644
--- a/tools/testing/selftests/bpf/test_l4lb.c
+++ b/tools/testing/selftests/bpf/test_l4lb.c
@@ -19,7 +19,7 @@
19#include <linux/udp.h> 19#include <linux/udp.h>
20#include "bpf_helpers.h" 20#include "bpf_helpers.h"
21#include "test_iptunnel_common.h" 21#include "test_iptunnel_common.h"
22#include "bpf_util.h" 22#include "bpf_endian.h"
23 23
24int _version SEC("version") = 1; 24int _version SEC("version") = 1;
25 25
diff --git a/tools/testing/selftests/bpf/test_pkt_access.c b/tools/testing/selftests/bpf/test_pkt_access.c
index 711300508ee0..39387bb7e08c 100644
--- a/tools/testing/selftests/bpf/test_pkt_access.c
+++ b/tools/testing/selftests/bpf/test_pkt_access.c
@@ -14,7 +14,7 @@
14#include <linux/tcp.h> 14#include <linux/tcp.h>
15#include <linux/pkt_cls.h> 15#include <linux/pkt_cls.h>
16#include "bpf_helpers.h" 16#include "bpf_helpers.h"
17#include "bpf_util.h" 17#include "bpf_endian.h"
18 18
19#define barrier() __asm__ __volatile__("": : :"memory") 19#define barrier() __asm__ __volatile__("": : :"memory")
20int _version SEC("version") = 1; 20int _version SEC("version") = 1;