* v4l2.c: Include "xlat/v4l2_tuner_types.h", "xlat/v4l2_tuner_capabilities.h", "xlat/v4l2_tuner_rxsubchanses.h", and "xlat/v4l2_tuner_audmodes.h". (print_v4l2_tuner): New function. Add decoding for VIDIOC_G/S_TUNER's arg. (v4l2_ioctl): Add new cases for decoding VIDIOC_G/S_TUNER's arg. * xlat/v4l2_tuner_types.in: Add V4L2_TUNER_RADIO and V4L2_TUNER_ANALOG_TV introduced by linux kernel commit 2.5.46~39^2~23^2~4. Add V4L2_TUNER_DIGITAL_TV introduced by linux kernel commit v2.6.11-rc4~55^2~20. Add V4L2_TUNER_ADC and V4L2_TUNER_RF introduced by linux kernel commit v3.15-rc1~85^2~215. Add V4L2_TUNER_SDR introduced by linux kernel commit v4.4-rc1~118^2~17 (as the replacement of V4L2_TUNER_ADC). * xlat/v4l2_tuner_capabilities.in: Add V4L2_TUNER_CAP_LOW, V4L2_TUNER_CAP_NORM, V4L2_TUNER_CAP_STEREO, V4L2_TUNER_CAP_LANG2, V4L2_TUNER_CAP_SAP, and V4L2_TUNER_CAP_LANG1 introduced by linux kernel commit 2.5.46~39^2~23^2~4. Add V4L2_TUNER_CAP_HWSEEK_BOUNDED and V4L2_TUNER_CAP_HWSEEK_WRAP introduced by linux kernel commit v3.6-rc1~28^2~306. Add V4L2_TUNER_CAP_RDS introduced by linux commit v2.6.32-rc1~679^2~189. Add V4L2_TUNER_CAP_RDS_BLOCK_IO and V4L2_TUNER_CAP_RDS_CONTROLS introduced by linux kernel commit v2.6.37-rc1~64^2~110. Add V4L2_TUNER_CAP_FREQ_BANDS introduced by linux kernel commit v3.6-rc1~28^2~46. Add V4L2_TUNER_CAP_HWSEEK_PROG_LIM introduced by linux kernel commit v3.6-rc1~28^2~40. Add V4L2_TUNER_CAP_1HZ introduced by linux kernel commit v3.15-rc1~85^2~214. * xlat/v4l2_tuner_audmodes.in: Add V4L2_TUNER_MODE_MONO, V4L2_TUNER_MODE_STEREO, V4L2_TUNER_MODE_LANG2, V4L2_TUNER_MODE_SAP, and V4L2_TUNER_MODE_LANG1 introduced by linux kernel commit 2.5.46~39^2~23^2~4. Add V4L2_TUNER_MODE_LANG1_LANG2 introduced by linux kernel commit v2.6.17-rc1~739^2~9. * xlat/v4l2_tuner_rxsubchanses.in: Add V4L2_TUNER_SUB_MONO, V4L2_TUNER_SUB_STEREO, V4L2_TUNER_SUB_LANG2, V4L2_TUNER_SUB_SAP, and V4L2_TUNER_SUB_LANG1 introduced by linux kernel commit 2.5.46~39^2~23^2~4. Add V4L2_TUNER_SUB_RDS introduced by linux kernel commit v2.6.32-rc1~679^2~189.
Signed-off-by: Edgar Kaziahmedov <e...@linux.com> --- v4l2.c | 53 +++++++++++++++++++++++++++++++++++++++++ xlat/v4l2_tuner_audmodes.in | 6 +++++ xlat/v4l2_tuner_capabilities.in | 14 +++++++++++ xlat/v4l2_tuner_rxsubchanses.in | 6 +++++ xlat/v4l2_tuner_types.in | 6 +++++ 5 files changed, 85 insertions(+) create mode 100644 xlat/v4l2_tuner_audmodes.in create mode 100644 xlat/v4l2_tuner_capabilities.in create mode 100644 xlat/v4l2_tuner_rxsubchanses.in create mode 100644 xlat/v4l2_tuner_types.in diff --git a/v4l2.c b/v4l2.c index ee833c12..8c9a1927 100644 --- a/v4l2.c +++ b/v4l2.c @@ -629,6 +629,55 @@ print_v4l2_control(struct tcb *const tcp, const kernel_ulong_t arg, return 1; } + +#include "xlat/v4l2_tuner_types.h" +#include "xlat/v4l2_tuner_capabilities.h" +#include "xlat/v4l2_tuner_rxsubchanses.h" +#include "xlat/v4l2_tuner_audmodes.h" + +static int +print_v4l2_tuner(struct tcb *const tcp, const kernel_ulong_t arg, + const bool is_get) +{ + struct v4l2_tuner c; + if (entering(tcp)) { + tprints(", "); + if (umove_or_printaddr(tcp, arg, &c)) + return RVAL_DECODED | 1; + tprintf("{index=%u", c.index); + if (is_get) + return 0; + tprints(", "); + } else { + if (syserror(tcp) || umove(tcp, arg, &c) < 0) { + tprints("}"); + return 1; + } + tprints(is_get ? ", " : " => "); + } + + tprints("name="); + print_quoted_string((const char *) c.name, sizeof(c.name), + QUOTE_0_TERMINATED); + tprints(", type="); + printxval(v4l2_tuner_types, c.type, "V4L2_TUNER_TYPE_???"); + tprints(", capability="); + printxval(v4l2_tuner_capabilities, c.capability, + "V4L2_TUNER_CAP_???"); + tprintf(", rangelow=%u, rangehigh=%u, rxsubchans=", + c.rangelow, c.rangehigh); + printxval(v4l2_tuner_rxsubchanses, c.rxsubchans, + "V4L2_TUNER_SUB_???"); + tprints(", audmode="); + printxval(v4l2_tuner_audmodes, c.audmode, + "V4L2_TUNER_MODE_???"); + tprintf(", signal=%d, afc=%d", c.signal, c.afc); + + if (exiting(tcp)) + tprints("}"); + return 1; +} + #include "xlat/v4l2_control_types.h" #include "xlat/v4l2_control_flags.h" @@ -971,6 +1020,10 @@ MPERS_PRINTER_DECL(int, v4l2_ioctl, struct tcb *const tcp, case VIDIOC_S_CTRL: /* RW */ return print_v4l2_control(tcp, arg, code == VIDIOC_G_CTRL); + case VIDIOC_G_TUNER: /* RW */ + case VIDIOC_S_TUNER: /* RW */ + return print_v4l2_tuner(tcp, arg, code == VIDIOC_G_TUNER); + case VIDIOC_QUERYCTRL: /* RW */ return print_v4l2_queryctrl(tcp, arg); diff --git a/xlat/v4l2_tuner_audmodes.in b/xlat/v4l2_tuner_audmodes.in new file mode 100644 index 00000000..82decabf --- /dev/null +++ b/xlat/v4l2_tuner_audmodes.in @@ -0,0 +1,6 @@ +V4L2_TUNER_MODE_MONO +V4L2_TUNER_MODE_STEREO +V4L2_TUNER_MODE_LANG2 +V4L2_TUNER_MODE_SAP +V4L2_TUNER_MODE_LANG1 +V4L2_TUNER_MODE_LANG1_LANG2 diff --git a/xlat/v4l2_tuner_capabilities.in b/xlat/v4l2_tuner_capabilities.in new file mode 100644 index 00000000..4aec41eb --- /dev/null +++ b/xlat/v4l2_tuner_capabilities.in @@ -0,0 +1,14 @@ +V4L2_TUNER_CAP_LOW +V4L2_TUNER_CAP_NORM +V4L2_TUNER_CAP_HWSEEK_BOUNDED +V4L2_TUNER_CAP_HWSEEK_WRAP +V4L2_TUNER_CAP_STEREO +V4L2_TUNER_CAP_LANG2 +V4L2_TUNER_CAP_SAP +V4L2_TUNER_CAP_LANG1 +V4L2_TUNER_CAP_RDS +V4L2_TUNER_CAP_RDS_BLOCK_IO +V4L2_TUNER_CAP_RDS_CONTROLS +V4L2_TUNER_CAP_FREQ_BANDS +V4L2_TUNER_CAP_HWSEEK_PROG_LIM +V4L2_TUNER_CAP_1HZ diff --git a/xlat/v4l2_tuner_rxsubchanses.in b/xlat/v4l2_tuner_rxsubchanses.in new file mode 100644 index 00000000..c6d59e95 --- /dev/null +++ b/xlat/v4l2_tuner_rxsubchanses.in @@ -0,0 +1,6 @@ +V4L2_TUNER_SUB_MONO +V4L2_TUNER_SUB_STEREO +V4L2_TUNER_SUB_LANG2 +V4L2_TUNER_SUB_SAP +V4L2_TUNER_SUB_LANG1 +V4L2_TUNER_SUB_RDS diff --git a/xlat/v4l2_tuner_types.in b/xlat/v4l2_tuner_types.in new file mode 100644 index 00000000..59a9f3a3 --- /dev/null +++ b/xlat/v4l2_tuner_types.in @@ -0,0 +1,6 @@ +V4L2_TUNER_RADIO +V4L2_TUNER_ANALOG_TV +V4L2_TUNER_DIGITAL_TV +V4L2_TUNER_ADC +V4L2_TUNER_SDR +V4L2_TUNER_RF -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel