exit(0);
}
-int doioctl_name(struct node *node, unsigned long int request, void *parm, const char *name)
+int doioctl_name(struct node *node, unsigned long int request, void *parm,
+ const char *name, bool no_wrapper)
{
int retval;
int e;
errno = 0;
- retval = test_ioctl(node->fd, request, parm);
+ if (no_wrapper)
+ retval = ioctl(node->fd, request, parm);
+ else
+ retval = test_ioctl(node->fd, request, parm);
e = errno;
if (options[OptTrace])
printf("\t\t%s returned %d (%s)\n", name, retval, strerror(e));
test_close(node.fd);
if (node.node2)
test_close(node.node2->fd);
+ if (expbuf_device)
+ close(expbuf_node.fd);
printf("Total: %d, Succeeded: %d, Failed: %d, Warnings: %d\n",
tests_total, tests_ok, tests_total - tests_ok, warnings);
exit(app_result);
return (double)f->numerator / (double)f->denominator;
}
-int doioctl_name(struct node *node, unsigned long int request, void *parm, const char *name);
+int doioctl_name(struct node *node, unsigned long int request, void *parm,
+ const char *name, bool no_wrapper = false);
#define doioctl(n, r, p) doioctl_name(n, r, p, #r)
+#define doioctl_no_wrap(n, r, p) doioctl_name(n, r, p, #r, true)
std::string cap2s(unsigned cap);
std::string buftype2s(int type);
expbuf_bufs.count = bufs.count;
expbuf_bufs.memory = V4L2_MEMORY_MMAP;
expbuf_bufs.type = expbuf_type;
- fail_on_test(doioctl(expbuf_node, VIDIOC_REQBUFS, &expbuf_bufs));
+ fail_on_test(doioctl_no_wrap(expbuf_node, VIDIOC_REQBUFS, &expbuf_bufs));
fail_on_test(expbuf_bufs.count < bufs.count);
memset(&expbuf_buf, 0, sizeof(expbuf_buf));
expbuf_buf.m.planes = expbuf_planes;
expbuf_buf.length = VIDEO_MAX_PLANES;
}
- fail_on_test(doioctl(expbuf_node, VIDIOC_QUERYBUF, &expbuf_buf));
+ fail_on_test(doioctl_no_wrap(expbuf_node, VIDIOC_QUERYBUF, &expbuf_buf));
for (unsigned i = 0; i < bufs.count; i++) {
struct v4l2_plane planes[VIDEO_MAX_PLANES];
expbuf.index = i;
expbuf.plane = p;
expbuf.flags = O_RDWR;
- fail_on_test(doioctl(expbuf_node, VIDIOC_EXPBUF, &expbuf));
+ fail_on_test(doioctl_no_wrap(expbuf_node, VIDIOC_EXPBUF, &expbuf));
dmabufs[i][p] = expbuf.fd;
memset(&expbuf_bufs, 0, sizeof(expbuf_bufs));
expbuf_bufs.memory = V4L2_MEMORY_MMAP;
expbuf_bufs.type = expbuf_type;
- fail_on_test(doioctl(expbuf_node, VIDIOC_REQBUFS, &expbuf_bufs));
+ fail_on_test(doioctl_no_wrap(expbuf_node, VIDIOC_REQBUFS, &expbuf_bufs));
}
return 0;
}