On Thu, 13 Feb 2025, Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > Other subsystem(s) may want to reuse the for_each_if() macro. > Move it to util_macros.h to make it globally available. > > Suggested-by: Bartosz Golaszewski <brgl@xxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Yay! Acked-by: Jani Nikula <jani.nikula@xxxxxxxxx> If you want to go down the memory lane, see [1]. ;) [1] https://lore.kernel.org/r/20180709083650.23549-1-daniel.vetter@xxxxxxxx > --- > include/drm/drm_util.h | 16 +--------------- > include/linux/util_macros.h | 15 +++++++++++++++ > 2 files changed, 16 insertions(+), 15 deletions(-) > > diff --git a/include/drm/drm_util.h b/include/drm/drm_util.h > index 79952d8c4bba..440199618620 100644 > --- a/include/drm/drm_util.h > +++ b/include/drm/drm_util.h > @@ -36,6 +36,7 @@ > #include <linux/kgdb.h> > #include <linux/preempt.h> > #include <linux/smp.h> > +#include <linux/util_macros.h> > > /* > * Use EXPORT_SYMBOL_FOR_TESTS_ONLY() for functions that shall > @@ -47,21 +48,6 @@ > #define EXPORT_SYMBOL_FOR_TESTS_ONLY(x) > #endif > > -/** > - * for_each_if - helper for handling conditionals in various for_each macros > - * @condition: The condition to check > - * > - * Typical use:: > - * > - * #define for_each_foo_bar(x, y) \' > - * list_for_each_entry(x, y->list, head) \' > - * for_each_if(x->something == SOMETHING) > - * > - * The for_each_if() macro makes the use of for_each_foo_bar() less error > - * prone. > - */ > -#define for_each_if(condition) if (!(condition)) {} else > - > /** > * drm_can_sleep - returns true if currently okay to sleep > * > diff --git a/include/linux/util_macros.h b/include/linux/util_macros.h > index 825487fb66fa..3b570b765b75 100644 > --- a/include/linux/util_macros.h > +++ b/include/linux/util_macros.h > @@ -4,6 +4,21 @@ > > #include <linux/math.h> > > +/** > + * for_each_if - helper for handling conditionals in various for_each macros > + * @condition: The condition to check > + * > + * Typical use:: > + * > + * #define for_each_foo_bar(x, y) \' > + * list_for_each_entry(x, y->list, head) \' > + * for_each_if(x->something == SOMETHING) > + * > + * The for_each_if() macro makes the use of for_each_foo_bar() less error > + * prone. > + */ > +#define for_each_if(condition) if (!(condition)) {} else > + > /** > * find_closest - locate the closest element in a sorted array > * @x: The reference value. -- Jani Nikula, Intel