summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-07-04 16:43:41 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2012-10-20 21:21:35 +0200
commitc8ca837395028751f79a6b6a690c37acc58f2f8c (patch)
tree1c0c654356df919f62ff1ec4e45b534840025ee3
parentdd91236537427f7cae68b08d4b39926ef4cafe74 (diff)
v4l2: Print the device name in error messages
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--isp/v4l2.c68
-rw-r--r--isp/v4l2.h1
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;