mirror of
https://github.com/netdata/libbpf.git
synced 2026-04-04 23:59:07 +08:00
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: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/r/20230719140858.13224-6-daniel@iogearbox.net Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Andrii Nakryiko
parent
0fadd4ba39
commit
488031955d
@@ -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 */
|
#endif /* __LIBBPF_LIBBPF_COMMON_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user