Commit 4e9c2d9a authored by Daniel Borkmann's avatar Daniel Borkmann Committed by Alexei Starovoitov
Browse files

libbpf: Add helper macro to clear opts structs



Add a small and generic LIBBPF_OPTS_RESET() helper macros which clears an
opts structure and reinitializes its .sz member to place the structure
size. Additionally, the user can pass option-specific data to reinitialize
via varargs.

I found this very useful when developing selftests, but it is also generic
enough as a macro next to the existing LIBBPF_OPTS() which hides the .sz
initialization, too.

Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/r/20230719140858.13224-6-daniel@iogearbox.net


Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 55cc3768
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -70,4 +70,20 @@
		};							    \
	})

/* Helper macro to clear and optionally reinitialize libbpf options struct
 *
 * Small helper macro to reset all fields and to reinitialize the common
 * structure size member. Values provided by users in struct initializer-
 * syntax as varargs can be provided as well to reinitialize options struct
 * specific members.
 */
#define LIBBPF_OPTS_RESET(NAME, ...)					    \
	do {								    \
		memset(&NAME, 0, sizeof(NAME));				    \
		NAME = (typeof(NAME)) {					    \
			.sz = sizeof(NAME),				    \
			__VA_ARGS__					    \
		};							    \
	} while (0)

#endif /* __LIBBPF_LIBBPF_COMMON_H */