On Saturday 01 August 2009 21:49:04 Julia Lawall wrote: > From: Julia Lawall <julia@xxxxxxx> > > The kernel.h macro DIV_ROUND_CLOSEST performs the computation (x + d/2)/d > but is perhaps more readable. > > The semantic patch that makes this change is as follows: > (http://www.emn.fr/x-info/coccinelle/) > > // <smpl> > @haskernel@ > @@ > > #include <linux/kernel.h> > > @depends on haskernel@ > expression x,__divisor; > @@ > > - (((x) + ((__divisor) / 2)) / (__divisor)) > + DIV_ROUND_CLOSEST(x,__divisor) > // </smpl> > > Signed-off-by: Julia Lawall <julia@xxxxxxx> > > --- > drivers/media/video/uvc/uvc_v4l2.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/media/video/uvc/uvc_v4l2.c > b/drivers/media/video/uvc/uvc_v4l2.c index 87cb9cc..6edaaf6 100644 > --- a/drivers/media/video/uvc/uvc_v4l2.c > +++ b/drivers/media/video/uvc/uvc_v4l2.c > @@ -95,7 +95,7 @@ static __u32 uvc_try_frame_interval(struct uvc_frame > *frame, __u32 interval) const __u32 max = frame->dwFrameInterval[1]; > const __u32 step = frame->dwFrameInterval[2]; > > - interval = min + (interval - min + step/2) / step * step; > + interval = min + DIV_ROUND_CLOSEST(interval-min, step) * step; > if (interval > max) > interval = max; > } The purpose of the above code is to clamp the interval value to the [min, max] range at round it to the closest multiple of step. Other drivers might need similar code. Do you think it might be useful to introduce a clamp_step macro for this ? If not, Acked-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxx> Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html