fix: media: v4l2: abstract timeval handling in v4l2_buffer (v5.6)
authorMichael Jeanson <mjeanson@efficios.com>
Tue, 11 Feb 2020 20:13:53 +0000 (15:13 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 25 Feb 2020 15:23:34 +0000 (10:23 -0500)
See upstream commit :

  commit 77cdffcb0bfb87fe3645894335cb8cb94917e6ac
  Author: Arnd Bergmann <arnd@arndb.de>
  Date:   Mon Dec 16 15:15:00 2019 +0100

    media: v4l2: abstract timeval handling in v4l2_buffer

    As a preparation for adding 64-bit time_t support in the uapi,
    change the drivers to no longer care about the format of the
    timestamp field in struct v4l2_buffer.

    The v4l2_timeval_to_ns() function is no longer needed in the
    kernel after this, but there is userspace code relying on
    it to be part of the uapi header.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/events/lttng-module/v4l2.h
probes/lttng-probe-v4l2.c

index 3766985354df948cae27466ef5eb9f4e6158f433..6b7c78fde36d0f5cc11bf88260ec658d77c1ad8f 100644 (file)
@@ -7,6 +7,32 @@
 
 #include <probes/lttng-tracepoint-event.h>
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0))
+LTTNG_TRACEPOINT_EVENT_CLASS(v4l2_class,
+
+       TP_PROTO(int minor, struct v4l2_buffer *buf),
+
+       TP_ARGS(minor, buf),
+
+       TP_FIELDS(
+               ctf_integer(int, minor, minor)
+               ctf_integer(u32, index, buf->index)
+               ctf_integer(u32, type, buf->type)
+               ctf_integer(u32, bytesused, buf->bytesused)
+               ctf_integer(u32, flags, buf->flags)
+               ctf_integer(u32, field, buf->field)
+               ctf_integer(s64, timestamp, v4l2_buffer_get_timestamp(buf))
+               ctf_integer(u32, timecode_type, buf->timecode.type)
+               ctf_integer(u32, timecode_flags, buf->timecode.flags)
+               ctf_integer(u8, timecode_frames, buf->timecode.frames)
+               ctf_integer(u8, timecode_seconds, buf->timecode.seconds)
+               ctf_integer(u8, timecode_minutes, buf->timecode.minutes)
+               ctf_integer(u8, timecode_hours, buf->timecode.hours)
+               ctf_array(u8, timecode_userbits, buf->timecode.userbits, 4)
+               ctf_integer(u32, sequence, buf->sequence)
+       )
+)
+#else
 LTTNG_TRACEPOINT_EVENT_CLASS(v4l2_class,
 
        TP_PROTO(int minor, struct v4l2_buffer *buf),
@@ -31,6 +57,7 @@ LTTNG_TRACEPOINT_EVENT_CLASS(v4l2_class,
                ctf_integer(u32, sequence, buf->sequence)
        )
 )
+#endif
 
 LTTNG_TRACEPOINT_EVENT_INSTANCE(v4l2_class,
        v4l2_dqbuf,
index 064c656b47a40b5e0f204e80990095c6e641e550..44665ecb83d44b20d7227483cd32c898ef9b17eb 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/module.h>
 #include <linux/videodev2.h>
 #include <media/videobuf2-core.h>
+#include <media/v4l2-common.h>
 #include <lttng-tracer.h>
 /*
  * Create the tracepoint static inlines from the kernel to validate that our
This page took 0.027222 seconds and 4 git commands to generate.