Moi, On Mon, Aug 01, 2022 at 11:40:21AM +0300, Tomi Valkeinen wrote: > On 27/07/2022 13:36, Tomi Valkeinen wrote: > > > @@ -1593,6 +1593,19 @@ int v4l2_subdev_routing_validate(struct v4l2_subdev *sd, > > const struct v4l2_subdev_krouting *routing, > > enum v4l2_subdev_routing_restriction disallow); > > +struct v4l2_subdev_route * > > +__v4l2_subdev_next_active_route(const struct v4l2_subdev_krouting *routing, > > + struct v4l2_subdev_route *route); > > + > > +/** > > + * for_each_active_route - iterate on all active routes of a routing table > > + * @routing: The routing table > > + * @route: The route iterator > > + */ > > +#define for_each_active_route(routing, route) \ > > + for ((route) = NULL; \ > > + ((route) = __v4l2_subdev_next_active_route((routing), (route)));) > > + > > By the way, now that we can do it, how do people feel about changing the > above (and other similar macros) to something like: > > #define for_each_active_route(routing, route) \ > for (struct v4l2_subdev_route *route = NULL; \ > (route = __v4l2_subdev_next_active_route((routing), route));) Will this compile? :-) Every such macro works that way and I'd think this is expected by the developers in general. You also often need to break out of the loop and keep that variable intact, this also supports doing it to usual way. I.e. I'd keep it as-is. -- Sakari Ailus