ARRAY_SIZE almost works here, since array decl is complete. But define it locally, named __DDEBUG_ARRAY_SIZE, to avoid include conflicts with boot/<something> on some arch.
no functional change Signed-off-by: Jim Cromie <[email protected]> Reviewed-by: Louis Chauvet <[email protected]> --- v5: drop include, it causes redefined probs in /boot/* for some arch. v2: include linux/array_size.h, correct commit subject, review after sob --- include/linux/dynamic_debug.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h index 9607121c3072..9ae1accb9bf6 100644 --- a/include/linux/dynamic_debug.h +++ b/include/linux/dynamic_debug.h @@ -8,6 +8,8 @@ #include <linux/build_bug.h> +#define __DDEBUG_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + /* * An instance of this structure is created in a special * ELF section at every dynamic debug callsite. At runtime, @@ -122,11 +124,9 @@ struct ddebug_class_param { .mod_name = KBUILD_MODNAME, \ .base = _base, \ .map_type = _maptype, \ - .length = NUM_TYPE_ARGS(char*, __VA_ARGS__), \ + .length = (sizeof(_var##_classnames) / sizeof(_var##_classnames[0])), \ .class_names = _var##_classnames, \ } -#define NUM_TYPE_ARGS(eltype, ...) \ - (sizeof((eltype[]) {__VA_ARGS__}) / sizeof(eltype)) extern __printf(2, 3) void __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); -- 2.54.0

