Re: [RFC PATCH v1 5/7] media: v4l2: introduce two IOCTLs for face detection

From: Ming Lei
Date: Tue Dec 06 2011 - 08:11:15 EST


On Tue, Dec 6, 2011 at 8:55 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> On Tuesday 06 December 2011, Ming Lei wrote:
>> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
>> index 073eb4d..8aeaa1e 100644
>> --- a/include/linux/videodev2.h
>> +++ b/include/linux/videodev2.h
>> @@ -2214,7 +2214,12 @@ struct v4l2_fd_result {
>>         __u32   buf_index;
>>         __u32   face_cnt;
>>         __u32   reserved[6];
>> -       struct v4l2_fd_detection *fd;
>> +
>> +       /*make 64/32 compatible*/
>> +       union {
>> +               struct v4l2_fd_detection *fd;
>> +               __u64   dummy;
>> +       };
>>  };
>>
>
> That's not compatible, at least not on any big-endian architecture.
> If you want to have an indirect pointer, you have to cast it to the
> __u64 member in user space and back in kernel space.

Looks like it is a bit ugly.

>
> Using an array added to the end of the v4l2_fd_result structure
> rather than a pointer would really make this easier IMHO.

I have tried to do this, but video_usercopy needs a few changes
to handle array args if no indirect pointer is passed to kernel.

I am not sure if media guys are happy to accept the changes, :-)

thanks,
--
Ming Lei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/