From c8ca837395028751f79a6b6a690c37acc58f2f8c Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Wed, 4 Jul 2012 16:43:41 +0200 Subject: v4l2: Print the device name in error messages Signed-off-by: Laurent Pinchart --- isp/v4l2.c | 68 ++++++++++++++++++++++++++++++++++---------------------------- isp/v4l2.h | 1 + 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/isp/v4l2.c b/isp/v4l2.c index bd35ae9..be5c604 100644 --- a/isp/v4l2.c +++ b/isp/v4l2.c @@ -266,6 +266,7 @@ struct v4l2_device *v4l2_open(const char *devname) memset(dev, 0, sizeof *dev); dev->fd = -1; + dev->name = strdup(devname); list_init(&dev->formats); dev->fd = open(devname, O_RDWR | O_NONBLOCK); @@ -327,6 +328,7 @@ void v4l2_close(struct v4l2_device *dev) free(format); } + free(dev->name); close(dev->fd); } @@ -343,8 +345,7 @@ int v4l2_get_control(struct v4l2_device *dev, unsigned int id, int32_t *value) ret = ioctl(dev->fd, VIDIOC_G_CTRL, &ctrl); if (ret < 0) { - printf("unable to get control: %s (%d).\n", - strerror(errno), errno); + printf("%s: unable to get control (%d).\n", dev->name, errno); return -errno; } @@ -362,8 +363,7 @@ int v4l2_set_control(struct v4l2_device *dev, unsigned int id, int32_t *value) ret = ioctl(dev->fd, VIDIOC_S_CTRL, &ctrl); if (ret < 0) { - printf("unable to set control: %s (%d).\n", - strerror(errno), errno); + printf("%s: unable to set control (%d).\n", dev->name, errno); return -errno; } @@ -383,8 +383,8 @@ int v4l2_get_controls(struct v4l2_device *dev, unsigned int count, ret = ioctl(dev->fd, VIDIOC_G_EXT_CTRLS, &controls); if (ret < 0) - printf("unable to get multiple controls: %s (%d).\n", - strerror(errno), errno); + printf("%s: unable to get multiple controls (%d).\n", dev->name, + errno); return ret; } @@ -401,8 +401,8 @@ int v4l2_set_controls(struct v4l2_device *dev, unsigned int count, ret = ioctl(dev->fd, VIDIOC_S_EXT_CTRLS, &controls); if (ret < 0) - printf("unable to set multiple controls: %s (%d).\n", - strerror(errno), errno); + printf("%s: unable to set multiple controls (%d).\n", dev->name, + errno); return ret; } @@ -421,8 +421,8 @@ int v4l2_get_crop(struct v4l2_device *dev, struct v4l2_rect *rect) ret = ioctl(dev->fd, VIDIOC_G_CROP, &crop); if (ret < 0) { - printf("Unable to get crop rectangle: %s (%d).\n", - strerror(errno), errno); + printf("%s: unable to get crop rectangle (%d).\n", dev->name, + errno); return -errno; } @@ -443,8 +443,8 @@ int v4l2_set_crop(struct v4l2_device *dev, struct v4l2_rect *rect) ret = ioctl(dev->fd, VIDIOC_S_CROP, &crop); if (ret < 0) { - printf("Unable to set crop rectangle: %s (%d).\n", - strerror(errno), errno); + printf("%s: unable to set crop rectangle (%d).\n", dev->name, + errno); return -errno; } @@ -464,8 +464,7 @@ int v4l2_get_format(struct v4l2_device *dev, struct v4l2_pix_format *format) ret = ioctl(dev->fd, VIDIOC_G_FMT, &fmt); if (ret < 0) { - printf("Unable to get format: %s (%d).\n", strerror(errno), - errno); + printf("%s: unable to get format (%d).\n", dev->name, errno); return -errno; } @@ -489,8 +488,7 @@ int v4l2_set_format(struct v4l2_device *dev, struct v4l2_pix_format *format) ret = ioctl(dev->fd, VIDIOC_S_FMT, &fmt); if (ret < 0) { - printf("Unable to set format: %s (%d).\n", strerror(errno), - errno); + printf("%s: unable to set format (%d).\n", dev->name, errno); return -errno; } @@ -522,21 +520,22 @@ int v4l2_alloc_buffers(struct v4l2_device *dev, struct v4l2_buffers_pool *pool, ret = ioctl(dev->fd, VIDIOC_REQBUFS, &rb); if (ret < 0) { - printf("Unable to request buffers: %d.\n", errno); + printf("%s: unable to request buffers (%d).\n", dev->name, + errno); ret = -errno; goto done; } if (rb.count > pool->nbufs) { - printf("Driver needs more buffers (%u) than available (%u).\n", - rb.count, pool->nbufs); + printf("%s: driver needs more buffers (%u) than available (%u).\n", + dev->name, rb.count, pool->nbufs); ret = -E2BIG; goto done; } dev->nbufs = rb.count; - printf("%u buffers requested.\n", rb.count); + printf("%s: %u buffers requested.\n", dev->name, rb.count); /* Map the buffers. */ for (i = 0; i < rb.count; ++i) { @@ -546,7 +545,8 @@ int v4l2_alloc_buffers(struct v4l2_device *dev, struct v4l2_buffers_pool *pool, buf.memory = memtype; ret = ioctl(dev->fd, VIDIOC_QUERYBUF, &buf); if (ret < 0) { - printf("Unable to query buffer %u (%d).\n", i, errno); + printf("%s: unable to query buffer %u (%d).\n", + dev->name, i, errno); ret = -errno; goto done; } @@ -556,24 +556,26 @@ int v4l2_alloc_buffers(struct v4l2_device *dev, struct v4l2_buffers_pool *pool, pool->buffers[i].mem = mmap(0, buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, dev->fd, buf.m.offset); if (pool->buffers[i].mem == MAP_FAILED) { - printf("Unable to map buffer %u (%d)\n", i, errno); + printf("%s: unable to map buffer %u (%d)\n", + dev->name, i, errno); ret = -errno; goto done; } pool->buffers[i].size = buf.length; - printf("Buffer %u mapped at address %p.\n", i, pool->buffers[i].mem); + printf("%s: buffer %u mapped at address %p.\n", + dev->name, i, pool->buffers[i].mem); break; case V4L2_MEMORY_USERPTR: if (pool->buffers[i].size < buf.length) { - printf("Buffer %u too small (%u bytes required, " - "%u bytes available.\n", i, buf.length, - pool->buffers[i].size); + printf("%s: buffer %u too small (%u bytes required, " + "%u bytes available.\n", dev->name, i, + buf.length, pool->buffers[i].size); ret = -EINVAL; goto done; } - printf("Buffer %u valid.\n", i); + printf("%s: buffer %u valid.\n", dev->name, i); break; default: @@ -608,7 +610,8 @@ int v4l2_free_buffers(struct v4l2_device *dev) ret = munmap(buffer->mem, buffer->size); if (ret < 0) { - printf("Unable to unmap buffer %u (%d)\n", i, errno); + printf("%s: unable to unmap buffer %u (%d)\n", + dev->name, i, errno); return -errno; } @@ -624,7 +627,8 @@ int v4l2_free_buffers(struct v4l2_device *dev) ret = ioctl(dev->fd, VIDIOC_REQBUFS, &rb); if (ret < 0) { - printf("Unable to release buffers: %d.\n", errno); + printf("%s: unable to release buffers (%d)\n", dev->name, + errno); return -errno; } @@ -645,7 +649,8 @@ int v4l2_dequeue_buffer(struct v4l2_device *dev, struct v4l2_video_buffer *buffe ret = ioctl(dev->fd, VIDIOC_DQBUF, &buf); if (ret < 0) { - printf("Unable to dequeue buffer (%d).\n", errno); + printf("%s: unable to dequeue buffer index %u/%u (%d)\n", + dev->name, buf.index, dev->nbufs, errno); return -errno; } @@ -680,7 +685,8 @@ int v4l2_queue_buffer(struct v4l2_device *dev, struct v4l2_video_buffer *buffer) ret = ioctl(dev->fd, VIDIOC_QBUF, &buf); if (ret < 0) { - printf("Unable to queue buffer (%d).\n", errno); + printf("%s: unable to queue buffer index %u/%u (%d)\n", + dev->name, buf.index, dev->nbufs, errno); return -errno; } diff --git a/isp/v4l2.h b/isp/v4l2.h index 7d28d67..a95be9c 100644 --- a/isp/v4l2.h +++ b/isp/v4l2.h @@ -32,6 +32,7 @@ struct v4l2_device { int fd; + char *name; enum v4l2_buf_type type; enum v4l2_memory memtype; -- cgit v1.2.3