diff options
author | Eugene Syromyatnikov <evgsyr@gmail.com> | 2020-03-04 13:37:29 +0100 |
---|---|---|
committer | Eugene Syromyatnikov <evgsyr@gmail.com> | 2020-03-23 13:32:14 +0100 |
commit | 1f5e9a724e70949c14add3f68cdb5290f5aee6de (patch) | |
tree | 2ea1f0419a18b28c318237aac47657bbb7fa40a4 | |
parent | cdd04d166dbb0ae598ba2ad8efe66cbf78b716a9 (diff) | |
download | strace-1f5e9a724e70949c14add3f68cdb5290f5aee6de.tar.gz |
v4l2: decode VIDIOC_QUERYSTD command
-rw-r--r-- | tests/ioctl_v4l2-success.c | 3 | ||||
-rw-r--r-- | tests/ioctl_v4l2.c | 10 | ||||
-rw-r--r-- | v4l2.c | 3 | ||||
-rw-r--r-- | xlat/v4l2_ioctl_cmds.in | 2 |
4 files changed, 14 insertions, 4 deletions
diff --git a/tests/ioctl_v4l2-success.c b/tests/ioctl_v4l2-success.c index ce67506b0..94f7fefcf 100644 --- a/tests/ioctl_v4l2-success.c +++ b/tests/ioctl_v4l2-success.c @@ -1022,10 +1022,11 @@ main(int argc, char **argv) } - /* VIDIOC_G_STD, VIDIOC_S_STD */ + /* VIDIOC_G_STD, VIDIOC_S_STD, VIDIOC_QUERYSTD */ static const struct strval32 stdid_cmds[] = { { ARG_STR(VIDIOC_G_STD) }, { ARG_STR(VIDIOC_S_STD) }, + { ARG_STR(VIDIOC_QUERYSTD) }, }; static const struct strval64 stdids[] = { { ARG_XLAT_KNOWN(0, "V4L2_STD_UNKNOWN") }, diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c index 2aa5ad9e1..626f8cc12 100644 --- a/tests/ioctl_v4l2.c +++ b/tests/ioctl_v4l2.c @@ -593,7 +593,6 @@ main(void) { ARG_STR(VIDIOC_S_FREQUENCY) }, { ARG_STR(VIDIOC_G_JPEGCOMP) }, { ARG_STR(VIDIOC_S_JPEGCOMP) }, - { ARG_STR(VIDIOC_QUERYSTD) }, { ARG_STR(VIDIOC_ENUMAUDIO) }, { ARG_STR(VIDIOC_ENUMAUDOUT) }, { ARG_STR(VIDIOC_G_PRIORITY) }, @@ -1181,6 +1180,15 @@ main(void) "]) = -1 EBADF (%m)\n", XLAT_STR(VIDIOC_S_STD)); + /* VIDIOC_QUERYSTD */ + ioctl(-1, VIDIOC_QUERYSTD, 0); + printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", + XLAT_STR(VIDIOC_QUERYSTD)); + + ioctl(-1, VIDIOC_QUERYSTD, page); + printf("ioctl(-1, %s, %p) = -1 EBADF (%m)\n", + XLAT_STR(VIDIOC_QUERYSTD), page); + /* VIDIOC_ENUMSTD */ ioctl(-1, VIDIOC_ENUMSTD, 0); printf("ioctl(-1, %s, NULL) = -1 EBADF (%m)\n", @@ -1264,7 +1264,8 @@ MPERS_PRINTER_DECL(int, v4l2_ioctl, struct tcb *const tcp, case VIDIOC_G_STD: /* R */ case VIDIOC_S_STD: /* W */ - return printnum_v4l2_std_id(tcp, arg, code == VIDIOC_G_STD); + case VIDIOC_QUERYSTD: /* R */ + return printnum_v4l2_std_id(tcp, arg, code != VIDIOC_S_STD); case VIDIOC_ENUMSTD: /* RW */ return print_v4l2_standard(tcp, arg); diff --git a/xlat/v4l2_ioctl_cmds.in b/xlat/v4l2_ioctl_cmds.in index 395ad87b5..a93108bf5 100644 --- a/xlat/v4l2_ioctl_cmds.in +++ b/xlat/v4l2_ioctl_cmds.in @@ -46,7 +46,7 @@ VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop) VIDIOC_S_CROP _IOW ('V', 60, struct v4l2_crop) /* VIDIOC_G_JPEGCOMP _IOR ('V', 61, struct v4l2_jpegcompression) */ /* VIDIOC_S_JPEGCOMP _IOW ('V', 62, struct v4l2_jpegcompression) */ -/* VIDIOC_QUERYSTD _IOR ('V', 63, uint64_t) */ /* v4l2_std_id */ +VIDIOC_QUERYSTD _IOR ('V', 63, uint64_t) /* v4l2_std_id */ VIDIOC_TRY_FMT _IOWR('V', 64, struct_v4l2_format) /* VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio) */ /* VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout) */ |