Re: [PATCH v8 7/8] media: v4l2-ctrl: Add new helper v4l2_ctrl_ptr_from_void

From: Hans Verkuil
Date: Mon Sep 30 2019 - 09:05:17 EST


On 9/30/19 12:18 PM, Ricardo Ribalda Delgado wrote:
> This helper function simplifies the code by not needing a union
> v4l2_ctrl_ptr and an assignment every time we need to use
> a ctrl_ptr.
>
> Suggested-by: Hans Verkuil <hverkuil@xxxxxxxxx>
> Signed-off-by: Ricardo Ribalda Delgado <ribalda@xxxxxxxxxx>
> ---
> include/media/v4l2-ctrls.h | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
> index c42f164e2c9e..d69cfdffd41d 100644
> --- a/include/media/v4l2-ctrls.h
> +++ b/include/media/v4l2-ctrls.h
> @@ -73,6 +73,17 @@ union v4l2_ctrl_ptr {
> void *p;
> };
>
> +/**
> + * v4l2_ctrl_ptr() - Helper function to return a v4l2_ctrl_ptr from a
> + * void pointer
> + * @ptr: The void pointer
> + */
> +static inline union v4l2_ctrl_ptr v4l2_ctrl_ptr_from_void(void *ptr)
> +{
> + BUILD_BUG_ON(sizeof(union v4l2_ctrl_ptr) != sizeof(void *));
> + return (union v4l2_ctrl_ptr) ptr;

Huh? Why not just do:

union v4l2_ctrl_ptr p = { .p = ptr; };

return p;

Or even shorter (not tested): return (union v4l2_ctrl_ptr) { .p = ptr; };

No need for BUILD_BUG_ON that way, which is rather ugly.

Regards,

Hans

> +}
> +
> /**
> * struct v4l2_ctrl_ops - The control operations that the driver has to provide.
> *
>