[libcamera-devel] [PATCH v5 4/4] libcamera: v4l2: Standardize return value checks

Jacopo Mondi jacopo at jmondi.org
Wed Jun 19 15:03:03 CEST 2019


Hi Laurent,

On Wed, Jun 19, 2019 at 03:44:54PM +0300, Laurent Pinchart wrote:
> Hi Jacopo,
>
> On Wed, Jun 19, 2019 at 02:39:56PM +0200, Jacopo Mondi wrote:
> > On Wed, Jun 19, 2019 at 03:30:18PM +0300, Laurent Pinchart wrote:
> > > On Wed, Jun 19, 2019 at 01:05:48PM +0200, Jacopo Mondi wrote:
> > > > Standardize all return values checks on the 'if (ret)' style where
> > > > appropriate.
> > >
> > > Just curious, why did you choose (ret) over (ret < 0) ? I would have
> > > gone the other way around :-)
> > >
> >
> > I would say tastes ? And it makes clear that the only valid result is
> > 0, but that does not depend on the caller.
> >
> > Should I drop the patch?
>
> I'm not opposed to the patch, but I'm wondering if we should make this
> library-wide (in further patches possibly) and document it in our coding
> style.
>
> Note that a few ioctls return a non-negative value other than zero on
> success. According to the man page errors are always indicated by -1.
>

For the ioctl system call that's indeed true, but here we're calling
the base class V4L2Device::ioctl() operation, which returns 0 on
success.

Anyway, no need to spend too much time on this. I'll drop the patch.

Thanks
  j
> > > >
> > > > No functional changes intended.
> > > >
> > > > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > > > ---
> > > >  src/libcamera/v4l2_subdevice.cpp   |  2 +-
> > > >  src/libcamera/v4l2_videodevice.cpp | 18 +++++++++---------
> > > >  2 files changed, 10 insertions(+), 10 deletions(-)
> > > >
> > > > diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp
> > > > index d0e1d717b26c..7f887e377c97 100644
> > > > --- a/src/libcamera/v4l2_subdevice.cpp
> > > > +++ b/src/libcamera/v4l2_subdevice.cpp
> > > > @@ -340,7 +340,7 @@ int V4L2Subdevice::setSelection(unsigned int pad, unsigned int target,
> > > >  	sel.r.height = rect->h;
> > > >
> > > >  	int ret = ioctl(VIDIOC_SUBDEV_S_SELECTION, &sel);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Unable to set rectangle " << target << " on pad "
> > > >  			<< pad << ": " << strerror(-ret);
> > > > diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
> > > > index bcbac79e82e9..d1409fcafa04 100644
> > > > --- a/src/libcamera/v4l2_videodevice.cpp
> > > > +++ b/src/libcamera/v4l2_videodevice.cpp
> > > > @@ -305,11 +305,11 @@ int V4L2VideoDevice::open()
> > > >  	int ret;
> > > >
> > > >  	ret = V4L2Device::open(O_RDWR | O_NONBLOCK);
> > > > -	if (ret < 0)
> > > > +	if (ret)
> > > >  		return ret;
> > > >
> > > >  	ret = ioctl(VIDIOC_QUERYCAP, &caps_);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Failed to query device capabilities: "
> > > >  			<< strerror(-ret);
> > > > @@ -633,7 +633,7 @@ int V4L2VideoDevice::requestBuffers(unsigned int count)
> > > >  	rb.memory = memoryType_;
> > > >
> > > >  	ret = ioctl(VIDIOC_REQBUFS, &rb);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Unable to request " << count << " buffers: "
> > > >  			<< strerror(-ret);
> > > > @@ -684,7 +684,7 @@ int V4L2VideoDevice::exportBuffers(BufferPool *pool)
> > > >  		buf.m.planes = planes;
> > > >
> > > >  		ret = ioctl(VIDIOC_QUERYBUF, &buf);
> > > > -		if (ret < 0) {
> > > > +		if (ret) {
> > > >  			LOG(V4L2, Error)
> > > >  				<< "Unable to query buffer " << i << ": "
> > > >  				<< strerror(-ret);
> > > > @@ -736,7 +736,7 @@ int V4L2VideoDevice::createPlane(Buffer *buffer, unsigned int planeIndex,
> > > >  	expbuf.flags = O_RDWR;
> > > >
> > > >  	ret = ioctl(VIDIOC_EXPBUF, &expbuf);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Failed to export buffer: " << strerror(-ret);
> > > >  		return ret;
> > > > @@ -927,7 +927,7 @@ int V4L2VideoDevice::queueBuffer(Buffer *buffer)
> > > >  	LOG(V4L2, Debug) << "Queueing buffer " << buf.index;
> > > >
> > > >  	ret = ioctl(VIDIOC_QBUF, &buf);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Failed to queue buffer " << buf.index << ": "
> > > >  			<< strerror(-ret);
> > > > @@ -963,7 +963,7 @@ Buffer *V4L2VideoDevice::dequeueBuffer()
> > > >  	}
> > > >
> > > >  	ret = ioctl(VIDIOC_DQBUF, &buf);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Failed to dequeue buffer: " << strerror(-ret);
> > > >  		return nullptr;
> > > > @@ -1022,7 +1022,7 @@ int V4L2VideoDevice::streamOn()
> > > >  	int ret;
> > > >
> > > >  	ret = ioctl(VIDIOC_STREAMON, &bufferType_);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Failed to start streaming: " << strerror(-ret);
> > > >  		return ret;
> > > > @@ -1044,7 +1044,7 @@ int V4L2VideoDevice::streamOff()
> > > >  	int ret;
> > > >
> > > >  	ret = ioctl(VIDIOC_STREAMOFF, &bufferType_);
> > > > -	if (ret < 0) {
> > > > +	if (ret) {
> > > >  		LOG(V4L2, Error)
> > > >  			<< "Failed to stop streaming: " << strerror(-ret);
> > > >  		return ret;
>
> --
> Regards,
>
> Laurent Pinchart
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.libcamera.org/pipermail/libcamera-devel/attachments/20190619/19675dd1/attachment.sig>


More information about the libcamera-devel mailing list