diff options
author | David S. Miller <davem@davemloft.net> | 2017-05-01 15:43:49 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-05-01 15:43:49 -0400 |
commit | bc1bafbbe9b3558d7789ff151ef4f185b6ad21f3 (patch) | |
tree | 33a8d0dd917e4f46705bc024b4f72500238b87d8 | |
parent | 5b8481fa42ac58484d633b558579e302aead64c1 (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.h | 23 | ||||
-rw-r--r-- | tools/testing/selftests/bpf/bpf_util.h | 19 | ||||
-rw-r--r-- | tools/testing/selftests/bpf/test_l4lb.c | 2 | ||||
-rw-r--r-- | tools/testing/selftests/bpf/test_pkt_access.c | 2 |
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 | |||
28 | static inline unsigned int bpf_num_possible_cpus(void) | 9 | static 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 | ||
24 | int _version SEC("version") = 1; | 24 | int _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") |
20 | int _version SEC("version") = 1; | 20 | int _version SEC("version") = 1; |