summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Syromyatnikov <evgsyr@gmail.com>2020-01-29 19:45:29 +0100
committerEugene Syromyatnikov <evgsyr@gmail.com>2020-03-30 23:14:23 +0200
commitaf9cb5394c6072a1f07465351137b6bec05e3c7b (patch)
tree85a58f9608c925ba04760ecbd3620c2268db04cf
parent3296cf5e0fd661d3f8ebf5c432d019727467cb5c (diff)
downloadstrace-af9cb5394c6072a1f07465351137b6bec05e3c7b.tar.gz
v4l2: provide V4L2_CTRL_FLAG_NEXT_CTRL in an xlat
* xlat/v4l2_control_query_flags.in: New file. * v4l2.c: Include "xlat/v4l2_control_query_flags.h". (print_v4l2_queryctrl): Remove "ifdef V4L2_CTRL_FLAG_NEXT_CTRL" guard. * tests/ioctl_v4l2.c [!V4L2_CTRL_FLAG_NEXT_CTRL] (V4L2_CTRL_FLAG_NEXT_CTRL): New macro. (main) [!V4L2_CTRL_FLAG_NEXT_CTRL]: Remove. References: https://bugzilla.redhat.com/show_bug.cgi?id=1758201
-rw-r--r--tests/ioctl_v4l2.c10
-rw-r--r--v4l2.c3
-rw-r--r--xlat/v4l2_control_query_flags.in2
3 files changed, 7 insertions, 8 deletions
diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c
index e929a25da..4e9ed4881 100644
--- a/tests/ioctl_v4l2.c
+++ b/tests/ioctl_v4l2.c
@@ -15,6 +15,10 @@
#include <linux/types.h>
#include <linux/videodev2.h>
+#ifndef V4L2_CTRL_FLAG_NEXT_CTRL
+# define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+#endif
+
#ifndef V4L2_CTRL_CLASS_DETECT
# define V4L2_CTRL_CLASS_DETECT 0x00a30000
#endif
@@ -1156,16 +1160,10 @@ main(void)
struct v4l2_queryctrl *const p_v4l2_queryctrl =
page_end - sizeof(*p_v4l2_queryctrl);
ioctl(-1, VIDIOC_QUERYCTRL, p_v4l2_queryctrl);
-#ifdef V4L2_CTRL_FLAG_NEXT_CTRL
printf("ioctl(-1, %s, {id=" XLAT_FMT "|%#x" NRAW(" /* V4L2_CID_??? */")
"}) = -1 EBADF (%m)\n",
XLAT_STR(VIDIOC_QUERYCTRL), XLAT_ARGS(V4L2_CTRL_FLAG_NEXT_CTRL),
p_v4l2_queryctrl->id & ~V4L2_CTRL_FLAG_NEXT_CTRL);
-#else
- printf("ioctl(-1, %s, {id=%#x" NRAW(" /* V4L2_CID_??? */})")
- " = -1 EBADF (%m)\n",
- XLAT_STR(VIDIOC_QUERYCTRL), p_v4l2_queryctrl->id);
-#endif
TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
p_queryctrl->id = V4L2_CID_SATURATION;
diff --git a/v4l2.c b/v4l2.c
index 6d142ce00..7d82bd083 100644
--- a/v4l2.c
+++ b/v4l2.c
@@ -768,6 +768,7 @@ print_v4l2_tuner(struct tcb *const tcp, const kernel_ulong_t arg,
#include "xlat/v4l2_control_types.h"
#include "xlat/v4l2_control_flags.h"
+#include "xlat/v4l2_control_query_flags.h"
static int
print_v4l2_queryctrl(struct tcb *const tcp, const kernel_ulong_t arg)
@@ -789,7 +790,6 @@ print_v4l2_queryctrl(struct tcb *const tcp, const kernel_ulong_t arg)
}
if (entering(tcp) || get_tcb_priv_ulong(tcp)) {
-#ifdef V4L2_CTRL_FLAG_NEXT_CTRL
const unsigned long next = c.id & V4L2_CTRL_FLAG_NEXT_CTRL;
set_tcb_priv_ulong(tcp, next);
if (next) {
@@ -797,7 +797,6 @@ print_v4l2_queryctrl(struct tcb *const tcp, const kernel_ulong_t arg)
tprints("|");
c.id &= ~V4L2_CTRL_FLAG_NEXT_CTRL;
}
-#endif
printxval(v4l2_control_ids, c.id, "V4L2_CID_???");
}
diff --git a/xlat/v4l2_control_query_flags.in b/xlat/v4l2_control_query_flags.in
new file mode 100644
index 000000000..3d32bf5de
--- /dev/null
+++ b/xlat/v4l2_control_query_flags.in
@@ -0,0 +1,2 @@
+V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
+V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000