On 25/06/2024 06:27, Jiri Olsa wrote: > ARRAY_SIZE is used on multiple places, move its definition in > bpf_misc.h header. > > Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> good idea ; one very optional nit/suggestion below but Reviewed-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > --- > tools/testing/selftests/bpf/progs/bpf_misc.h | 2 ++ > tools/testing/selftests/bpf/progs/iters.c | 2 -- > tools/testing/selftests/bpf/progs/kprobe_multi_session.c | 3 +-- > tools/testing/selftests/bpf/progs/linked_list.c | 5 +---- > tools/testing/selftests/bpf/progs/netif_receive_skb.c | 5 +---- > tools/testing/selftests/bpf/progs/profiler.inc.h | 5 +---- > tools/testing/selftests/bpf/progs/setget_sockopt.c | 5 +---- > tools/testing/selftests/bpf/progs/test_bpf_ma.c | 4 ---- > tools/testing/selftests/bpf/progs/test_sysctl_loop1.c | 5 +---- > tools/testing/selftests/bpf/progs/test_sysctl_loop2.c | 5 +---- > tools/testing/selftests/bpf/progs/test_sysctl_prog.c | 5 +---- > .../testing/selftests/bpf/progs/test_tcp_custom_syncookie.c | 1 + > .../testing/selftests/bpf/progs/test_tcp_custom_syncookie.h | 2 -- > .../testing/selftests/bpf/progs/verifier_subprog_precision.c | 2 -- > 14 files changed, 11 insertions(+), 40 deletions(-) > > diff --git a/tools/testing/selftests/bpf/progs/bpf_misc.h b/tools/testing/selftests/bpf/progs/bpf_misc.h > index c0280bd2f340..ac6ab1b977a1 100644 > --- a/tools/testing/selftests/bpf/progs/bpf_misc.h > +++ b/tools/testing/selftests/bpf/progs/bpf_misc.h > @@ -140,4 +140,6 @@ > /* make it look to compiler like value is read and written */ > #define __sink(expr) asm volatile("" : "+g"(expr)) > > +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) nit: would it be worth bracketing the #define in an #ifndef ARRAY_SIZE/#endif? A few cases you're replacing (like progs/linked_list.c) have the #ifndef/#endif protection. > + > #endif > diff --git a/tools/testing/selftests/bpf/progs/iters.c b/tools/testing/selftests/bpf/progs/iters.c > index fe65e0952a1e..16bdc3e25591 100644 > --- a/tools/testing/selftests/bpf/progs/iters.c > +++ b/tools/testing/selftests/bpf/progs/iters.c > @@ -7,8 +7,6 @@ > #include "bpf_misc.h" > #include "bpf_compiler.h" > > -#define ARRAY_SIZE(x) (int)(sizeof(x) / sizeof((x)[0])) > - > static volatile int zero = 0; > > int my_pid; > diff --git a/tools/testing/selftests/bpf/progs/kprobe_multi_session.c b/tools/testing/selftests/bpf/progs/kprobe_multi_session.c > index bbba9eb46551..bd8b7fb7061e 100644 > --- a/tools/testing/selftests/bpf/progs/kprobe_multi_session.c > +++ b/tools/testing/selftests/bpf/progs/kprobe_multi_session.c > @@ -4,8 +4,7 @@ > #include <bpf/bpf_tracing.h> > #include <stdbool.h> > #include "bpf_kfuncs.h" > - > -#define ARRAY_SIZE(x) (int)(sizeof(x) / sizeof((x)[0])) > +#include "bpf_misc.h" > > char _license[] SEC("license") = "GPL"; > > diff --git a/tools/testing/selftests/bpf/progs/linked_list.c b/tools/testing/selftests/bpf/progs/linked_list.c > index f69bf3e30321..421f40835acd 100644 > --- a/tools/testing/selftests/bpf/progs/linked_list.c > +++ b/tools/testing/selftests/bpf/progs/linked_list.c > @@ -4,10 +4,7 @@ > #include <bpf/bpf_helpers.h> > #include <bpf/bpf_core_read.h> > #include "bpf_experimental.h" > - > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (int)(sizeof(x) / sizeof((x)[0])) > -#endif > +#include "bpf_misc.h" > > #include "linked_list.h" > > diff --git a/tools/testing/selftests/bpf/progs/netif_receive_skb.c b/tools/testing/selftests/bpf/progs/netif_receive_skb.c > index c0062645fc68..9e067dcbf607 100644 > --- a/tools/testing/selftests/bpf/progs/netif_receive_skb.c > +++ b/tools/testing/selftests/bpf/progs/netif_receive_skb.c > @@ -5,6 +5,7 @@ > #include <bpf/bpf_helpers.h> > #include <bpf/bpf_tracing.h> > #include <bpf/bpf_core_read.h> > +#include "bpf_misc.h" > > #include <errno.h> > > @@ -23,10 +24,6 @@ bool skip = false; > #define BADPTR 0 > #endif > > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) > -#endif > - > struct { > __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY); > __uint(max_entries, 1); > diff --git a/tools/testing/selftests/bpf/progs/profiler.inc.h b/tools/testing/selftests/bpf/progs/profiler.inc.h > index 6957d9f2805e..8bd1ebd7d6af 100644 > --- a/tools/testing/selftests/bpf/progs/profiler.inc.h > +++ b/tools/testing/selftests/bpf/progs/profiler.inc.h > @@ -9,6 +9,7 @@ > #include "err.h" > #include "bpf_experimental.h" > #include "bpf_compiler.h" > +#include "bpf_misc.h" > > #ifndef NULL > #define NULL 0 > @@ -133,10 +134,6 @@ struct { > __uint(max_entries, 16); > } disallowed_exec_inodes SEC(".maps"); > > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(arr) (int)(sizeof(arr) / sizeof(arr[0])) > -#endif > - > static INLINE bool IS_ERR(const void* ptr) > { > return IS_ERR_VALUE((unsigned long)ptr); > diff --git a/tools/testing/selftests/bpf/progs/setget_sockopt.c b/tools/testing/selftests/bpf/progs/setget_sockopt.c > index 7a438600ae98..60518aed1ffc 100644 > --- a/tools/testing/selftests/bpf/progs/setget_sockopt.c > +++ b/tools/testing/selftests/bpf/progs/setget_sockopt.c > @@ -6,10 +6,7 @@ > #include <bpf/bpf_core_read.h> > #include <bpf/bpf_helpers.h> > #include <bpf/bpf_tracing.h> > - > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) > -#endif > +#include "bpf_misc.h" > > extern unsigned long CONFIG_HZ __kconfig; > > diff --git a/tools/testing/selftests/bpf/progs/test_bpf_ma.c b/tools/testing/selftests/bpf/progs/test_bpf_ma.c > index 3494ca30fa7f..4a4e0b8d9b72 100644 > --- a/tools/testing/selftests/bpf/progs/test_bpf_ma.c > +++ b/tools/testing/selftests/bpf/progs/test_bpf_ma.c > @@ -7,10 +7,6 @@ > #include "bpf_experimental.h" > #include "bpf_misc.h" > > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) > -#endif > - > struct generic_map_value { > void *data; > }; > diff --git a/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c b/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c > index 7f74077d6622..548660e299a5 100644 > --- a/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c > +++ b/tools/testing/selftests/bpf/progs/test_sysctl_loop1.c > @@ -10,10 +10,7 @@ > #include <bpf/bpf_helpers.h> > > #include "bpf_compiler.h" > - > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) > -#endif > +#include "bpf_misc.h" > > /* tcp_mem sysctl has only 3 ints, but this test is doing TCP_MEM_LOOPS */ > #define TCP_MEM_LOOPS 28 /* because 30 doesn't fit into 512 bytes of stack */ > diff --git a/tools/testing/selftests/bpf/progs/test_sysctl_loop2.c b/tools/testing/selftests/bpf/progs/test_sysctl_loop2.c > index 68a75436e8af..81249d119a8b 100644 > --- a/tools/testing/selftests/bpf/progs/test_sysctl_loop2.c > +++ b/tools/testing/selftests/bpf/progs/test_sysctl_loop2.c > @@ -10,10 +10,7 @@ > #include <bpf/bpf_helpers.h> > > #include "bpf_compiler.h" > - > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) > -#endif > +#include "bpf_misc.h" > > /* tcp_mem sysctl has only 3 ints, but this test is doing TCP_MEM_LOOPS */ > #define TCP_MEM_LOOPS 20 /* because 30 doesn't fit into 512 bytes of stack */ > diff --git a/tools/testing/selftests/bpf/progs/test_sysctl_prog.c b/tools/testing/selftests/bpf/progs/test_sysctl_prog.c > index efc3c61f7852..bbdd08764789 100644 > --- a/tools/testing/selftests/bpf/progs/test_sysctl_prog.c > +++ b/tools/testing/selftests/bpf/progs/test_sysctl_prog.c > @@ -10,6 +10,7 @@ > #include <bpf/bpf_helpers.h> > > #include "bpf_compiler.h" > +#include "bpf_misc.h" > > /* Max supported length of a string with unsigned long in base 10 (pow2 - 1). */ > #define MAX_ULONG_STR_LEN 0xF > @@ -17,10 +18,6 @@ > /* Max supported length of sysctl value string (pow2). */ > #define MAX_VALUE_STR_LEN 0x40 > > -#ifndef ARRAY_SIZE > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) > -#endif > - > const char tcp_mem_name[] = "net/ipv4/tcp_mem"; > static __always_inline int is_tcp_mem(struct bpf_sysctl *ctx) > { > diff --git a/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.c b/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.c > index c8e4553648bf..44ee0d037f95 100644 > --- a/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.c > +++ b/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.c > @@ -9,6 +9,7 @@ > #include "bpf_kfuncs.h" > #include "test_siphash.h" > #include "test_tcp_custom_syncookie.h" > +#include "bpf_misc.h" > > #define MAX_PACKET_OFF 0xffff > > diff --git a/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.h b/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.h > index 29a6a53cf229..f8b1b7e68d2e 100644 > --- a/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.h > +++ b/tools/testing/selftests/bpf/progs/test_tcp_custom_syncookie.h > @@ -7,8 +7,6 @@ > #define __packed __attribute__((__packed__)) > #define __force > > -#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) > - > #define swap(a, b) \ > do { \ > typeof(a) __tmp = (a); \ > diff --git a/tools/testing/selftests/bpf/progs/verifier_subprog_precision.c b/tools/testing/selftests/bpf/progs/verifier_subprog_precision.c > index 4a58e0398e72..6a6fad625f7e 100644 > --- a/tools/testing/selftests/bpf/progs/verifier_subprog_precision.c > +++ b/tools/testing/selftests/bpf/progs/verifier_subprog_precision.c > @@ -8,8 +8,6 @@ > #include "bpf_misc.h" > #include <../../../tools/include/linux/filter.h> > > -#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) > - > int vals[] SEC(".data.vals") = {1, 2, 3, 4}; > > __naked __noinline __used